ERC-20
Overview
Max Total Supply
7,357.555415701927144782 RUN
Holders
2
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 Source Code Verified (Exact Match)
Contract Name:
RunAway
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-11-15 */ pragma solidity ^0.4.25; contract RunAway { using SafeMath for uint256; using SafeMathInt for int256; /*================================= = MODIFIERS = =================================*/ // only people with tokens modifier onlyBagholders() { require(myTokens() > 0); _; } /** * @dev prevents contracts from interacting with me */ modifier onlyHuman() { address _addr = msg.sender; uint256 _codeLength; assembly {_codeLength := extcodesize(_addr)} require(_codeLength == 0, "sorry humans only"); _; } // administrators can: // -> change the name of the contract // -> change the name of the token // -> start the game(activate) // they CANNOT: // -> take funds // -> disable withdrawals // -> kill the contract // -> change the price of tokens modifier onlyAdministrator(){ address _customerAddress = msg.sender; require(administrators[keccak256(abi.encodePacked(_customerAddress))]); _; } modifier onlyComm1(){ address _customerAddress = msg.sender; require(keccak256(abi.encodePacked(_customerAddress)) == comm1_); _; } modifier onlyComm2{ address _customerAddress = msg.sender; require(keccak256(abi.encodePacked(_customerAddress)) == comm2_); _; } modifier checkRoundStatus() { if(now >= rounds_[currentRoundID_].endTime) { endCurrentRound(); startNextRound(); } _; } function startNextRound() private { currentRoundID_ ++; rounds_[currentRoundID_].roundID = currentRoundID_; rounds_[currentRoundID_].startTime = now; rounds_[currentRoundID_].endTime = now + roundDuration_; rounds_[currentRoundID_].ended = false; } function endCurrentRound() private { Round storage round = rounds_[currentRoundID_]; round.ended = true; if(round.netBuySum>0 && round.dividends>0) { round.profitPerShare = round.dividends.mul(magnitude).div(round.netBuySum); } } modifier isActivated() { require(activated_ == true, "its not ready yet. check ?eta in discord"); _; } // ensures that the first tokens in the contract will be equally distributed // meaning, no divine dump will be ever possible // result: healthy longevity. modifier antiEarlyWhale(uint256 _amountOfEthereum){ address _customerAddress = msg.sender; // are we still in the vulnerable phase? // if so, enact anti early whale protocol if( onlyAmbassadors && ((totalEthereumBalance() - _amountOfEthereum) <= ambassadorQuota_ )){ require( // is the customer in the ambassador list? ambassadors_[_customerAddress] == true && // does the customer purchase exceed the max ambassador quota? (ambassadorAccumulatedQuota_[_customerAddress] + _amountOfEthereum) <= ambassadorMaxPurchase_ ); // updated the accumulated quota ambassadorAccumulatedQuota_[_customerAddress] = SafeMath.add(ambassadorAccumulatedQuota_[_customerAddress], _amountOfEthereum); // execute _; } else { // in case the ether count drops low, the ambassador phase won't reinitiate onlyAmbassadors = false; _; } } /*============================== = EVENTS = ==============================*/ event onTokenPurchase( address indexed customerAddress, uint256 incomingEthereum, uint256 tokensMinted ); event onTokenSell( address indexed customerAddress, uint256 tokensBurned, uint256 ethereumEarned ); event onReinvestment( address indexed customerAddress, uint256 ethereumReinvested, uint256 tokensMinted ); event onWithdraw( address indexed customerAddress, uint256 ethereumWithdrawn ); event onAcquireDividends( address indexed customerAddress, uint256 dividendsAcquired ); // ERC20 event Transfer( address indexed from, address indexed to, uint256 tokens ); event onWithDrawComm( uint8 indexed comm, uint256 ethereumWithdrawn ); event onTransferExpiredDividends( address indexed customerAddress, uint256 roundID, uint256 amount ); /*===================================== = Structs = =====================================*/ struct Round { uint256 roundID; // Starting from 1, increasing by 1 uint256 netBuySum; // Sum of all userNetBuy which are > 0 uint256 endTime; bool ended; uint256 startTime; uint256 profitPerShare; uint256 dividends; mapping(address=>int256) userNetBuy; mapping(address => uint256) payoutsTo; uint256 totalPayouts; } // Rounds recorder mapping(uint256=>Round) public rounds_; // Fees storage accounts uint256 public comm1Balance_; uint256 public comm2Balance_; bytes32 comm1_=0xc0495b4fc42a03a01bdcd5e2f7b89dfd2e077e19f273ff82d33e9ec642fc7a08; bytes32 comm2_=0xa1bb9d7f7e4c2b049c73772f2cab50235f20a685f798970054b74fbc6d411c1e; // Current round ID uint256 public currentRoundID_; uint256 public roundDuration_ = 1 days; // Is game started? bool public activated_=false; /*===================================== = CONFIGURABLES = =====================================*/ string public name = "Run Away"; string public symbol = "RUN"; uint8 constant public decimals = 18; uint8 constant internal dividendFee_ = 10; uint8 constant internal communityFee_ = 50; uint256 constant internal tokenPriceInitial_ = 0.0000001 ether; uint256 constant internal tokenPriceIncremental_ = 0.00000001 ether; uint256 constant internal magnitude = 2**64; // ambassador program mapping(address => bool) internal ambassadors_; uint256 constant internal ambassadorMaxPurchase_ = 20 ether; uint256 constant internal ambassadorQuota_ = 120 ether; /*================================ = DATASETS = ================================*/ // amount of shares for each address (scaled number) mapping(address => uint256) internal tokenBalanceLedger_; // Income, including dividends in each round and sale income. mapping(address => uint256) public income_; mapping(address => uint256) internal ambassadorAccumulatedQuota_; uint256 internal tokenSupply_ = 0; // administrator list (see above on what they can do) mapping(bytes32 => bool) public administrators; // when this is set to true, only ambassadors can purchase tokens (this prevents a whale premine, it ensures a fairly distributed upper pyramid) bool public onlyAmbassadors = true; /*======================================= = PUBLIC FUNCTIONS = =======================================*/ /* * -- APPLICATION ENTRY POINTS -- */ constructor() public { // add administrators here administrators[0x2a94d36a11c723ddffd4bf9352609aed9b400b2be1e9b272421fa7b4e7a40560] = true; // add the ambassadors here. ambassadors_[0x16F2971f677DDCe04FC44bb1A5289f0B96053b2C] = true; ambassadors_[0x579F9608b1fa6aA387BD2a3844469CA8fb10628c] = true; ambassadors_[0x62E691c598D968633EEAB5588b1AF95725E33316] = true; ambassadors_[0x9e3F432dc2CD4EfFB0F0EB060b07DC2dFc574d0D] = true; ambassadors_[0x63735870e79A653aA445d7b7B59DC9c1a7149F39] = true; ambassadors_[0x562DEd82A67f4d2ED3782181f938f2E4232aE02C] = true; ambassadors_[0x22ec2994d77E3Ca929eAc83dEF3958CC547ff028] = true; ambassadors_[0xF2e602645AC91727D75E66231d06F572E133E59F] = true; ambassadors_[0x1AA16F9A2428ceBa2eDeb5D544b3a3D767c1566e] = true; ambassadors_[0x273b270F0eA966a462feAC89C9d4f4D6Dcd1CbdF] = true; ambassadors_[0x7ABe6948E5288a30026EdE239446a0B84d502184] = true; ambassadors_[0xB6Aa76e55564D9dB18cAF61369ff4618F5287f43] = true; ambassadors_[0x3c6c909dB011Af05Dadd706D88a6Cd03D87a4f86] = true; ambassadors_[0x914132fe8075aF2d932cadAa7d603DDfDf70D353] = true; ambassadors_[0x8Be6Aa12746e84e448a18B20013F3AdB9e24e1c6] = true; ambassadors_[0x3595bA9Ab527101B5cc78195Ca043653d96fEEB6] = true; ambassadors_[0x17dBe44d9c91d2c71E33E3fd239BD1574A7f46DF] = true; ambassadors_[0x47Ce514A4392304D9Ccaa7A807776AcB391198D0] = true; ambassadors_[0x96b41F6DE1d579ea5CB87bA04834368727B993e4] = true; ambassadors_[0x0953800A059a9d30BD6E47Ae2D34f3665F8E2b53] = true; ambassadors_[0x497C85EeF12A17D3fEd3aef894ec3273046FdC1D] = true; ambassadors_[0x116febf80104677019ac4C9E693c63c19B26Cf86] = true; ambassadors_[0xFb214AA761CcC1Ccc9D2134a33f4aC77c514d59c] = true; ambassadors_[0x567e3616dE1b217d6004cbE9a84095Ce90E94Bfd] = true; ambassadors_[0x3f054BF8C392F4F28a9B29f911503c6BC58ED4Da] = true; ambassadors_[0x71F658079CaEEDf2270F37c6235D0Ac6B25c9849] = true; ambassadors_[0x0581d2d23A300327678E4497d84d58FF64B9CfDe] = true; ambassadors_[0xFFAE7193dFA6eBff817C47cd2e5Ce4497c082613] = true; ambassadors_[0x18B0f4F11Cb1F2170a6AC594b2Cb0107e2B44821] = true;//zl ambassadors_[0x081c65ff7328ac4cC173D3dA7fD02371760B0cF4] = true;//yp ambassadors_[0xfa698b3242A3a48AadbC64F50dc96e1DE630F39A] = true;//lxy ambassadors_[0xAA5BA7930A1B2c14CDad11bECA86bf43779C05c5] = true;//m ambassadors_[0xa7bF8FF736532f6725c5433190E0852DD1592213] = true;//zsj } /** * Converts all incoming ethereum to tokens for the caller, and passes down the referral addy (if any) */ function buy() public payable returns(uint256) { purchaseTokens(msg.value); } /** * Fallback function to handle ethereum that was send straight to the contract * Unfortunately we cannot use a referral address this way. */ function() payable public { purchaseTokens(msg.value); } /** * Converts all of caller's dividends to tokens. */ function reinvest() isActivated() onlyHuman() checkRoundStatus() public { address _customerAddress = msg.sender; uint256 incomeTmp = income_[_customerAddress]; //clear income of this user income_[_customerAddress] = 0; uint256 _tokens = purchaseTokens(incomeTmp); // fire event emit onReinvestment(_customerAddress, incomeTmp, _tokens); } /** * Alias of sell(), acquireDividends() and withdraw(). */ function exit() isActivated() onlyHuman() checkRoundStatus() public { // get token count for caller & sell them all address _customerAddress = msg.sender; uint256 _tokens = tokenBalanceLedger_[_customerAddress]; if(_tokens > 0) sell(_tokens); acquireDividends(); // lambo delivery service withdraw(); } /** * Withdraws all of the caller's dividends in previous round. */ function acquireDividends() isActivated() onlyHuman() checkRoundStatus() public { // setup data address _customerAddress = msg.sender; Round storage round = rounds_[currentRoundID_.sub(1)]; uint256 _dividends = myDividends(round.roundID); // get ref. bonus later in the code // update dividend tracker round.payoutsTo[_customerAddress] = round.payoutsTo[_customerAddress].add(_dividends); round.totalPayouts = round.totalPayouts.add(_dividends); // Add dividends to income. income_[_customerAddress] = income_[_customerAddress].add(_dividends); // fire event emit onAcquireDividends(_customerAddress, _dividends); } /** * Withdraws all of the caller's income. */ function withdraw() isActivated() onlyHuman() checkRoundStatus() public { address _customerAddress = msg.sender; uint256 myIncome = income_[_customerAddress]; //clear value income_[_customerAddress]=0; _customerAddress.transfer(myIncome); // fire event emit onWithdraw(_customerAddress, myIncome); } /** * Tax dividends to community. */ function taxDividends(uint256 _dividends) internal returns (uint256) { // Taxed dividends uint256 _comm = _dividends.div(communityFee_); uint256 _taxedDividends = _dividends.sub(_comm); // Community fees uint256 _comm_1 = _comm.mul(3).div(10); comm1Balance_ = comm1Balance_.add(_comm_1); comm2Balance_ = comm2Balance_.add(_comm.sub(_comm_1)); return _taxedDividends; } /** * Liquifies tokens to ethereum. */ function sell(uint256 _amountOfTokens) isActivated() onlyHuman() onlyBagholders() checkRoundStatus() public { require(_amountOfTokens > 0, "Selling 0 token!"); Round storage round = rounds_[currentRoundID_]; // setup data address _customerAddress = msg.sender; // russian hackers BTFO require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]); uint256 _tokens = _amountOfTokens; uint256 _ethereum = tokensToEthereum_(_tokens); uint256 _dividends = SafeMath.div(_ethereum, dividendFee_); uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends); // Record income income_[_customerAddress] = income_[_customerAddress].add(_taxedEthereum); // Taxed dividends uint256 _taxedDividends = taxDividends(_dividends); round.dividends = round.dividends.add(_taxedDividends); // burn the sold tokens tokenSupply_ = tokenSupply_.sub(_tokens); tokenBalanceLedger_[_customerAddress] = tokenBalanceLedger_[_customerAddress].sub(_tokens); // Calculate net buy of current round int256 _userNetBuyBeforeSale = round.userNetBuy[_customerAddress]; round.userNetBuy[_customerAddress] = _userNetBuyBeforeSale.sub(_tokens.toInt256Safe()); if( _userNetBuyBeforeSale > 0) { if(_userNetBuyBeforeSale.toUint256Safe() > _tokens) { round.netBuySum = round.netBuySum.sub(_tokens); } else { round.netBuySum = round.netBuySum.sub(_userNetBuyBeforeSale.toUint256Safe()); } } // fire event emit onTokenSell(_customerAddress, _tokens, _taxedEthereum); } /** * Transfer tokens from the caller to a new holder. * Remember, there's a 10% fee here as well. */ function transfer(address _toAddress, uint256 _amountOfTokens) isActivated() onlyHuman() checkRoundStatus() onlyBagholders() public returns(bool) { // setup address _customerAddress = msg.sender; // make sure we have the requested tokens // also disables transfers until ambassador phase is over // ( we dont want whale premines ) require(!onlyAmbassadors && _amountOfTokens <= tokenBalanceLedger_[_customerAddress]); // liquify 10% of the tokens that are transfered // these are dispersed to shareholders uint256 _tokenFee = _amountOfTokens.div(dividendFee_); uint256 _taxedTokens = _amountOfTokens.sub(_tokenFee); uint256 _dividends = tokensToEthereum_(_tokenFee); // Taxed dividends uint256 _taxedDividends = taxDividends(_dividends); rounds_[currentRoundID_].dividends = rounds_[currentRoundID_].dividends.add(_taxedDividends); // burn the fee tokens tokenSupply_ = tokenSupply_.sub(_tokenFee); // exchange tokens tokenBalanceLedger_[_customerAddress] = tokenBalanceLedger_[_customerAddress].sub(_amountOfTokens); tokenBalanceLedger_[_toAddress] = tokenBalanceLedger_[_toAddress].add(_taxedTokens); // fire event emit Transfer(_customerAddress, _toAddress, _taxedTokens); // ERC20 return true; } /*---------- ADMINISTRATOR ONLY FUNCTIONS ----------*/ /** * In case the amassador quota is not met, the administrator can manually disable the ambassador phase. */ function disableInitialStage() onlyAdministrator() public { onlyAmbassadors = false; } /** * In case one of us dies, we need to replace ourselves. */ function setAdministrator(bytes32 _identifier, bool _status) onlyAdministrator() public { administrators[_identifier] = _status; } /** * If we want to rebrand, we can. */ function setName(string _name) onlyAdministrator() public { name = _name; } /** * If we want to rebrand, we can. */ function setSymbol(string _symbol) onlyAdministrator() public { symbol = _symbol; } /** Start this game. */ function activate() onlyAdministrator() public { // can only be ran once require(activated_ == false, "Already activated"); currentRoundID_ = 1; rounds_[currentRoundID_].roundID = currentRoundID_; rounds_[currentRoundID_].startTime = now; rounds_[currentRoundID_].endTime = now + roundDuration_; activated_ = true; } /** Set round ruration, taking effect in the next round. */ // function setRoundDuration(uint _duration) // onlyAdministrator() // public // { // roundDuration_ = _duration; // } /*---------- HELPERS AND CALCULATORS ----------*/ /** * Method to view the current Ethereum stored in the contract * Example: totalEthereumBalance() */ function totalEthereumBalance() public view returns(uint) { return address(this).balance; } /** * Retrieve the total token supply. */ function totalSupply() public view returns(uint256) { return tokenSupply_; } /** * Retrieve the tokens owned by the caller. */ function myTokens() public view returns(uint256) { address _customerAddress = msg.sender; return balanceOf(_customerAddress); } /** * Retrieve the dividends owned by the caller. * If `_includeReferralBonus` is to to 1/true, the referral bonus will be included in the calculations. * The reason for this, is that in the frontend, we will want to get the total divs (global + ref) * But in the internal calculations, we want them separate. */ function myDividends(uint256 _roundID) public view returns(uint256) { return dividendsOf(msg.sender, _roundID); } /** * Retrieve the token balance of any single address. */ function balanceOf(address _customerAddress) view public returns(uint256) { return tokenBalanceLedger_[_customerAddress]; } /** * Retrieve the dividend balance of any single address. */ function dividendsOf(address _customerAddress, uint256 _roundID) view public returns(uint256) { if(_roundID<1) return 0; if (_roundID > currentRoundID_) return 0; Round storage round = rounds_[_roundID]; // Sold >= bought if(round.userNetBuy[_customerAddress] <= 0) { return 0; } // Nobody sold. if(round.dividends <= 0) { return 0; } return round.profitPerShare.mul(round.userNetBuy[_customerAddress].toUint256Safe()).div(magnitude).sub(round.payoutsTo[_customerAddress]); } /** * Estimate user dividends in current round. */ function estimateDividends(address _customerAddress) view public returns(uint256) { Round storage round = rounds_[currentRoundID_]; // Sold >= bought if(round.userNetBuy[_customerAddress] <= 0) { return 0; } // Nobody sold. if(round.dividends <= 0) { return 0; } return round.dividends.mul(magnitude).div(round.netBuySum).mul(round.userNetBuy[_customerAddress].toUint256Safe()).div(magnitude); } /** * Return the buy price of 1 individual token. */ function sellPrice() public view returns(uint256) { // our calculation relies on the token supply, so we need supply. Doh. if(tokenSupply_ == 0){ return tokenPriceInitial_ - tokenPriceIncremental_; } else { uint256 _ethereum = tokensToEthereum_(1e18); uint256 _dividends = SafeMath.div(_ethereum, dividendFee_ ); uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends); return _taxedEthereum; } } /** * Return the sell price of 1 individual token. */ function buyPrice() public view returns(uint256) { // our calculation relies on the token supply, so we need supply. Doh. if(tokenSupply_ == 0){ return tokenPriceInitial_ + tokenPriceIncremental_; } else { uint256 _ethereum = tokensToEthereum_(1e18); return _ethereum; } } /** * Function for the frontend to dynamically retrieve the price scaling of buy orders. */ function calculateTokensReceived(uint256 _ethereumToSpend) public view returns(uint256) { uint256 _amountOfTokens = ethereumToTokens_(_ethereumToSpend); return _amountOfTokens; } /** * Function for the frontend to dynamically retrieve the price scaling of sell orders. */ function calculateEthereumReceived(uint256 _tokensToSell) public view returns(uint256) { require(_tokensToSell <= tokenSupply_); uint256 _ethereum = tokensToEthereum_(_tokensToSell); uint256 _dividends = SafeMath.div(_ethereum, dividendFee_); uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends); return _taxedEthereum; } function roundNetBuySum(uint256 _roundID) public view returns(uint256) { if(_roundID <1 || _roundID > currentRoundID_) return 0; return rounds_[_roundID].netBuySum; } function roundEndTime(uint256 _roundID) public view returns(uint256) { if(_roundID <1 || _roundID > currentRoundID_) return 0; return rounds_[_roundID].endTime; } function roundEnded(uint256 _roundID) public view returns(bool) { if(_roundID <1 || _roundID > currentRoundID_) return true; return rounds_[_roundID].ended; } function roundStartTime(uint256 _roundID) public view returns(uint256) { if(_roundID <1 || _roundID > currentRoundID_) return 0; return rounds_[_roundID].startTime; } function roundProfitPerShare(uint256 _roundID) public view returns(uint256) { if(_roundID <1 || _roundID > currentRoundID_) return 0; return rounds_[_roundID].profitPerShare; } function roundDividends(uint256 _roundID) public view returns(uint256) { if(_roundID <1 || _roundID > currentRoundID_) return 0; return rounds_[_roundID].dividends; } function roundUserNetBuy(uint256 _roundID, address addr) public view returns(int256) { if(_roundID <1 || _roundID > currentRoundID_) return 0; return rounds_[_roundID].userNetBuy[addr]; } function roundPayoutsTo(uint256 _roundID, address addr) public view returns(uint256) { if(_roundID <1 || _roundID > currentRoundID_) return 0; return rounds_[_roundID].payoutsTo[addr]; } function roundTotalPayouts(uint256 _roundID) public view returns(uint256) { if(_roundID <1 || _roundID > currentRoundID_) return 0; return rounds_[_roundID].totalPayouts; } /*========================================== = INTERNAL FUNCTIONS = ==========================================*/ function purchaseTokens(uint256 _incomingEthereum) isActivated() antiEarlyWhale(_incomingEthereum) onlyHuman() checkRoundStatus() internal returns(uint256) { require(_incomingEthereum > 0, "0 eth buying."); Round storage round = rounds_[currentRoundID_]; // data setup address _customerAddress = msg.sender; uint256 _amountOfTokens = ethereumToTokens_(_incomingEthereum); // no point in continuing execution if OP is a poorfag russian hacker // prevents overflow in the case that the pyramid somehow magically starts being used by everyone in the world // (or hackers) // and yes we know that the safemath function automatically rules out the "greater then" equasion. require(_amountOfTokens > 0 && (tokenSupply_.add(_amountOfTokens) > tokenSupply_)); // we can't give people infinite ethereum if(tokenSupply_ > 0){ // add tokens to the pool tokenSupply_ = tokenSupply_.add(_amountOfTokens); } else { // add tokens to the pool tokenSupply_ = _amountOfTokens; } int256 _userNetBuy = round.userNetBuy[_customerAddress]; int256 _userNetBuyAfterPurchase = _userNetBuy.add(_amountOfTokens.toInt256Safe()); round.userNetBuy[_customerAddress] = _userNetBuyAfterPurchase; if(_userNetBuy >= 0) { round.netBuySum = round.netBuySum.add(_amountOfTokens); } else { if( _userNetBuyAfterPurchase > 0) { round.netBuySum = round.netBuySum.add(_userNetBuyAfterPurchase.toUint256Safe()); } } // update circulating supply & the ledger address for the customer tokenBalanceLedger_[_customerAddress] = tokenBalanceLedger_[_customerAddress].add(_amountOfTokens); // fire event emit onTokenPurchase(_customerAddress, _incomingEthereum, _amountOfTokens); return _amountOfTokens; } /** * Calculate Token price based on an amount of incoming ethereum * It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation; * Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code. */ function ethereumToTokens_(uint256 _ethereum) internal view returns(uint256) { uint256 _tokenPriceInitial = tokenPriceInitial_ * 1e18; uint256 _tokensReceived = ( ( // underflow attempts BTFO SafeMath.sub( (sqrt ( (_tokenPriceInitial**2) + (2*(tokenPriceIncremental_ * 1e18)*(_ethereum * 1e18)) + (((tokenPriceIncremental_)**2)*(tokenSupply_**2)) + (2*(tokenPriceIncremental_)*_tokenPriceInitial*tokenSupply_) ) ), _tokenPriceInitial ) )/(tokenPriceIncremental_) )-(tokenSupply_) ; return _tokensReceived; } /** * Calculate token sell value. * It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation; * Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code. */ function tokensToEthereum_(uint256 _tokens) internal view returns(uint256) { uint256 tokens_ = (_tokens + 1e18); uint256 _tokenSupply = (tokenSupply_ + 1e18); uint256 _etherReceived = ( // underflow attempts BTFO SafeMath.sub( ( ( ( tokenPriceInitial_ +(tokenPriceIncremental_ * (_tokenSupply/1e18)) )-tokenPriceIncremental_ )*(tokens_ - 1e18) ),(tokenPriceIncremental_*((tokens_**2-tokens_)/1e18))/2 ) /1e18); return _etherReceived; } /*========================================== = COMMUNITY FUNCTIONS = ==========================================*/ function withdrawComm1() isActivated() onlyComm1() onlyHuman() checkRoundStatus() public { uint256 bal = comm1Balance_; comm1Balance_ = 0; msg.sender.transfer(bal); emit onWithDrawComm(1, bal); } function withdrawComm2() isActivated() onlyComm2() onlyHuman() checkRoundStatus() public { uint256 bal = comm2Balance_; comm2Balance_ = 0; msg.sender.transfer(bal); emit onWithDrawComm(2, bal); } function transferExpiredDividends(uint256 _roundID) isActivated() onlyHuman() checkRoundStatus() public { require(_roundID > 0 && _roundID < currentRoundID_.sub(1), "Invalid round number"); Round storage round = rounds_[_roundID]; uint256 _unpaid = round.dividends.sub(round.totalPayouts); require(_unpaid>0, "No expired dividends."); uint256 comm1 = _unpaid.mul(3).div(10); comm1Balance_ = comm1Balance_.add(comm1); comm2Balance_ = comm2Balance_.add(_unpaid.sub(comm1)); round.totalPayouts = round.totalPayouts.add(_unpaid); emit onTransferExpiredDividends(msg.sender, _roundID, _unpaid); } //This is where all your gas goes, sorry //Not sorry, you probably only paid 1 gwei function sqrt(uint x) internal pure returns (uint y) { uint z = (x + 1) / 2; y = x; while (z < y) { y = z; z = (x / z + z) / 2; } } } // From https://github.com/RequestNetwork/requestNetwork/blob/master/packages/requestNetworkSmartContracts/contracts/base/math/SafeMath.sol /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); assert(b >= 0); return b; } } // From: https://github.com/RequestNetwork/requestNetwork/blob/master/packages/requestNetworkSmartContracts/contracts/base/math/SafeMathInt.sol /** * @title SafeMathInt * @dev Math operations with safety checks that throw on error * @dev SafeMath adapted for int256 */ library SafeMathInt { function mul(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when multiplying INT256_MIN with -1 // https://github.com/RequestNetwork/requestNetwork/issues/43 assert(!(a == - 2**255 && b == -1) && !(b == - 2**255 && a == -1)); int256 c = a * b; assert((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing INT256_MIN by -1 // https://github.com/RequestNetwork/requestNetwork/issues/43 assert(!(a == - 2**255 && b == -1)); // assert(b > 0); // Solidity automatically throws when dividing by 0 int256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(int256 a, int256 b) internal pure returns (int256) { assert((b >= 0 && a - b <= a) || (b < 0 && a - b > a)); return a - b; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; assert((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function toUint256Safe(int256 a) internal pure returns (uint256) { assert(a>=0); return uint256(a); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"},{"name":"_roundID","type":"uint256"}],"name":"dividendsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"activate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_ethereumToSpend","type":"uint256"}],"name":"calculateTokensReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comm1Balance_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokensToSell","type":"uint256"}],"name":"calculateEthereumReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_roundID","type":"uint256"},{"name":"addr","type":"address"}],"name":"roundPayoutsTo","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"onlyAmbassadors","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_roundID","type":"uint256"}],"name":"roundProfitPerShare","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"administrators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_roundID","type":"uint256"}],"name":"roundTotalPayouts","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawComm1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"acquireDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalEthereumBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comm2Balance_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_identifier","type":"bytes32"},{"name":"_status","type":"bool"}],"name":"setAdministrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"myTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"rounds_","outputs":[{"name":"roundID","type":"uint256"},{"name":"netBuySum","type":"uint256"},{"name":"endTime","type":"uint256"},{"name":"ended","type":"bool"},{"name":"startTime","type":"uint256"},{"name":"profitPerShare","type":"uint256"},{"name":"dividends","type":"uint256"},{"name":"totalPayouts","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"estimateDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_roundID","type":"uint256"}],"name":"roundEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_roundID","type":"uint256"}],"name":"roundEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"disableInitialStage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_toAddress","type":"address"},{"name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_roundID","type":"uint256"}],"name":"myDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_roundID","type":"uint256"}],"name":"roundStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_roundID","type":"uint256"}],"name":"roundDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"roundDuration_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_roundID","type":"uint256"}],"name":"transferExpiredDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"activated_","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawComm2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_roundID","type":"uint256"},{"name":"addr","type":"address"}],"name":"roundUserNetBuy","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"income_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_roundID","type":"uint256"}],"name":"roundNetBuySum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentRoundID_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"reinvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"incomingEthereum","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"}],"name":"onTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"tokensBurned","type":"uint256"},{"indexed":false,"name":"ethereumEarned","type":"uint256"}],"name":"onTokenSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumReinvested","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"}],"name":"onReinvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumWithdrawn","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"dividendsAcquired","type":"uint256"}],"name":"onAcquireDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"comm","type":"uint8"},{"indexed":false,"name":"ethereumWithdrawn","type":"uint256"}],"name":"onWithDrawComm","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"roundID","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"onTransferExpiredDividends","type":"event"}]
Contract Creation Code
7fc0495b4fc42a03a01bdcd5e2f7b89dfd2e077e19f273ff82d33e9ec642fc7a086003557fa1bb9d7f7e4c2b049c73772f2cab50235f20a685f798970054b74fbc6d411c1e600455620151806006556007805460ff1916905560c0604052600860808190527f52756e204177617900000000000000000000000000000000000000000000000060a0908152620000979190816200069d565b506040805180820190915260038082527f52554e00000000000000000000000000000000000000000000000000000000006020909201918252620000de916009916200069d565b506000600e556010805460ff19166001179055348015620000fe57600080fd5b507fccbf8237e8dcddbef6bc9034516f02a24c6c9888e9b04516ac3c124ac5749d918054600160ff199182168117909255600a6020527f3e3b6a20d3e83f71e25a821be2d6469c1be3dde9c54d4758556f45bdfb37908f80548216831790557f45129e04e804aa1b9cf3192f7945863e5dee892228d1881fe950f2394117833780548216831790557f40a0004e456b1b7e46446e6bac04fea96dd34b037638d36cb88f3cbb8054bab280548216831790557f301fe2b46999622e754ae4db7b3cafc4789f8792daf1d69f5219bce97b999aec80548216831790557fe3f86b945cd19f9e07eec9281b6208325129e74ade78ee0f4f5721cfc24e93eb80548216831790557f861a618da1c52dd47c88937e3f88966d04e9c719f146d81d5ef590c6f71de91380548216831790557fe5a0cc3c0710dee2b10dde69a6a7b856737d0d1c9533079bf7cbb7db2b71739180548216831790557f09bc0ab2a2000826a24ee9637219a0478c6c62dd64127f856b336ab1b314551a80548216831790557f2f8c6b1114513c33b4f7e6e4aa1f9fc010a8045c390efe81dc528983e73179d780548216831790557f538ab59214e8899756111ace551938f7e9b364b8d434925e904e58a0952c75b680548216831790557fc59c3d53b3f2cdeb842026a6a2d1612ad64f75a35bcc7a56303a8483d601e2f180548216831790557f9401b502f63def00cccba165bb7f96fa97ceead47e112c71809dc8e5d034da9880548216831790557f5b6c4aa52e16b620dc06caa11870d32f329ae63a5cb9b4da85343a93c98765d280548216831790557fbc1d42a2b15e56caf2469f68bad40e0b6dc56d0b9fcdb2e1a33317c6ad58c5a680548216831790557fbfe881a631fedc924e48094a0c388b17e24c5c98a28b11e4957872fe385c81b980548216831790557f979900c32d06206bc18c1c6d30ffb4e2b567eaaa24814efe6b84a60577d6fd3880548216831790557fd45e5c8e6b26acc3ee07502083623decbdb27ceb62a40483258dfdaa6838837f80548216831790557f18185753af0101903921e91c5017d2085603405b81d5a129a1fd98a8ca2ce2fa80548216831790557f27d9743d3d13a7798fd75c460cde6468110aa67798b46788e13d899893c406e780548216831790557f45f10e590437e3fbf862b962f9a02a7054b51213d9f13bf320a35a1645965a7a80548216831790557f92a54f2954478c56b7ce491e5cac22f26f23bd2fdf6ef94783a98028724c484680548216831790557ffd579f92a6310b5ee0d902e1d69b50d63472d299fe8d56fb2c1277cefe3a4c8680548216831790557f3e4bf49761ad416e7dae4fed4740f7933070c0698864de00707f642f2f97c13580548216831790557ff958ec0734a22bbe6a7109c4cab049a3d1e25bbbcf9676fd2069564688e0d07080548216831790557f4509d3bc567c9b330a945ceb6310570c32b79d0bb168c615d6eb3ad0472f637580548216831790557ff8b04769a97928a84619d208c3a2e59d3a94f009563fdfe4eee2ab4eca9a607e80548216831790557fada6b59a4fc42ccb6307653f6a743c05217758aab3b5a6cf907284c6e4d5383d80548216831790557ffd34b190ada69faafaf5287dc03a9bd7e76117efb38f8e905e2829f5088cf63280548216831790557f6d87d5a63389da4c2b12002c4dbb7f979c75ce027281dbad85568c2b6962e42e80548216831790557f8a8b2abb2b52d7e2da84c6fcccda8532bfafb7f2d65c37e9981a8c31489bdaf280548216831790557f51a74896e2c42ecc3abdae97145a5be0e678e1258dcc0ad00c764fdf940dd34480548216831790557fddc530335de83e9becb7257ef792203bd77a1b88c13907520c8abc0e2f0e475f805482168317905573a7bf8ff736532f6725c5433190e0852dd15922136000527fc2b88ba8b1b5fbe7a8350942986da2afb99d50073f312cdd413662278b225a8f8054909116909117905562000742565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006e057805160ff191683800117855562000710565b8280016001018555821562000710579182015b8281111562000710578251825591602001919060010190620006f3565b506200071e92915062000722565b5090565b6200073f91905b808211156200071e576000815560010162000729565b90565b61300e80620007526000396000f30060806040526004361061023a5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146102465780630a5eb5ea146102d05780630f15f4c01461030657806310d0ffdd1461031d57806318160ddd146103355780631a682c7d1461034a578063226093731461035f57806326a93a621461037757806327defa1f1461039b5780632ab8f172146103c4578063313ce567146103dc578063392efb52146104075780633ccfd60b1461041f5780634b750334146104345780635110f8ef146104495780635a2280cd146104615780636265e628146104765780636b2f46321461048b57806370a08231146104a0578063746e4f81146104c15780638620410b146104d657806389135ae9146104eb578063949e8acd1461050857806395d89b411461051d57806396f5c1521461053257806397468dbb1461058b5780639f4b9eb6146105ac578063a4ee8b63146105c4578063a6f2ae3a146105dc578063a8e04f34146105e4578063a9059cbb146105f9578063b178d8991461061d578063b84c824614610635578063c137a60f1461068e578063c3446f7e146106a6578063c47f0027146106be578063c856d3c714610717578063ca6b54471461072c578063d53b267914610744578063d976fef014610759578063dfe652641461076e578063e4849b3214610792578063e9fad8ee146107aa578063f27782af146107bf578063f650582a146107e0578063f912d43d146107f8578063fdb5a03e1461080d575b61024334610822565b50005b34801561025257600080fd5b5061025b610e35565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029557818101518382015260200161027d565b50505050905090810190601f1680156102c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102dc57600080fd5b506102f4600160a060020a0360043516602435610ec3565b60408051918252519081900360200190f35b34801561031257600080fd5b5061031b610fb3565b005b34801561032957600080fd5b506102f4600435611160565b34801561034157600080fd5b506102f4611178565b34801561035657600080fd5b506102f461117f565b34801561036b57600080fd5b506102f4600435611185565b34801561038357600080fd5b506102f4600435600160a060020a03602435166111c7565b3480156103a757600080fd5b506103b0611212565b604080519115158252519081900360200190f35b3480156103d057600080fd5b506102f460043561121b565b3480156103e857600080fd5b506103f1611253565b6040805160ff9092168252519081900360200190f35b34801561041357600080fd5b506103b0600435611258565b34801561042b57600080fd5b5061031b61126d565b34801561044057600080fd5b506102f46113d1565b34801561045557600080fd5b506102f4600435611425565b34801561046d57600080fd5b5061031b61145a565b34801561048257600080fd5b5061031b611645565b34801561049757600080fd5b506102f461183d565b3480156104ac57600080fd5b506102f4600160a060020a0360043516611842565b3480156104cd57600080fd5b506102f461185d565b3480156104e257600080fd5b506102f4611863565b3480156104f757600080fd5b5061031b6004356024351515611899565b34801561051457600080fd5b506102f461197e565b34801561052957600080fd5b5061025b611990565b34801561053e57600080fd5b5061054a6004356119eb565b604080519889526020890197909752878701959095529215156060870152608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561059757600080fd5b506102f4600160a060020a0360043516611a32565b3480156105b857600080fd5b506103b0600435611af0565b3480156105d057600080fd5b506102f4600435611b28565b6102f4611b5d565b3480156105f057600080fd5b5061031b611b68565b34801561060557600080fd5b506103b0600160a060020a0360043516602435611c39565b34801561062957600080fd5b506102f4600435611eb7565b34801561064157600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261031b943694929360249392840191908190840183828082843750949750611ec39650505050505050565b34801561069a57600080fd5b506102f4600435611f9f565b3480156106b257600080fd5b506102f4600435611fd4565b3480156106ca57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261031b9436949293602493928401919081908401838280828437509497506120099650505050505050565b34801561072357600080fd5b506102f46120e0565b34801561073857600080fd5b5061031b6004356120e6565b34801561075057600080fd5b506103b061236d565b34801561076557600080fd5b5061031b612376565b34801561077a57600080fd5b506102f4600435600160a060020a0360243516612561565b34801561079e57600080fd5b5061031b6004356125ab565b3480156107b657600080fd5b5061031b612902565b3480156107cb57600080fd5b506102f4600160a060020a0360043516612a16565b3480156107ec57600080fd5b506102f4600435612a28565b34801561080457600080fd5b506102f4612a5d565b34801561081957600080fd5b5061031b612a63565b6007546000908190819081908190819060ff161515600114610890576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b6010548790339060ff1680156108b8575068068155a43676e00000826108b461183d565b0311155b15610bcb57600160a060020a0381166000908152600a602052604090205460ff161515600114801561090e5750600160a060020a0381166000908152600d60205260409020546801158e460913d0000090830111155b151561091957600080fd5b600160a060020a0381166000908152600d602052604090205461093c9083612bb1565b600160a060020a0382166000908152600d602052604090205533803b801561099c576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b60055460009081526020819052604090206002015442106109c7576109bf612bc0565b6109c7612c2f565b60008b11610a1f576040805160e560020a62461bcd02815260206004820152600d60248201527f302065746820627579696e672e00000000000000000000000000000000000000604482015290519081900360640190fd5b60055460009081526020819052604090209850339750610a3e8b612c7c565b9650600087118015610a605750600e54610a5e818963ffffffff612bb116565b115b1515610a6b57600080fd5b6000600e541115610a9157600e54610a89908863ffffffff612bb116565b600e55610a97565b600e8790555b600160a060020a038816600090815260078a0160205260409020549550610acd610ac088612d14565b879063ffffffff612d2116565b600160a060020a038916600090815260078b01602052604081208290559095508612610b12576001890154610b08908863ffffffff612bb116565b60018a0155610b3e565b6000851315610b3e57610b38610b2786612d53565b60018b01549063ffffffff612bb116565b60018a01555b600160a060020a0388166000908152600b6020526040902054610b67908863ffffffff612bb116565b600160a060020a0389166000818152600b60209081526040918290209390935580518e81529283018a9052805191927f7f743fb741e07b0c4daeb2af54fb3ebfa2bdb31d9913a0e555661c870411aae5929081900390910190a28699505050610e29565b6010805460ff1916905533803b8015610c1c576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b6005546000908152602081905260409020600201544210610c4757610c3f612bc0565b610c47612c2f565b60008b11610c9f576040805160e560020a62461bcd02815260206004820152600d60248201527f302065746820627579696e672e00000000000000000000000000000000000000604482015290519081900360640190fd5b60055460009081526020819052604090209850339750610cbe8b612c7c565b9650600087118015610ce05750600e54610cde818963ffffffff612bb116565b115b1515610ceb57600080fd5b6000600e541115610d1157600e54610d09908863ffffffff612bb116565b600e55610d17565b600e8790555b600160a060020a038816600090815260078a0160205260409020549550610d40610ac088612d14565b600160a060020a038916600090815260078b01602052604081208290559095508612610d85576001890154610d7b908863ffffffff612bb116565b60018a0155610da0565b6000851315610da057610d9a610b2786612d53565b60018a01555b600160a060020a0388166000908152600b6020526040902054610dc9908863ffffffff612bb116565b600160a060020a0389166000818152600b60209081526040918290209390935580518e81529283018a9052805191927f7f743fb741e07b0c4daeb2af54fb3ebfa2bdb31d9913a0e555661c870411aae5929081900390910190a286995050505b50505050505050919050565b6008805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ebb5780601f10610e9057610100808354040283529160200191610ebb565b820191906000526020600020905b815481529060010190602001808311610e9e57829003601f168201915b505050505081565b6000806001831015610ed85760009150610fac565b600554831115610eeb5760009150610fac565b50600082815260208181526040808320600160a060020a038716845260078101909252822054909112610f215760009150610fac565b6006810154600010610f365760009150610fac565b600160a060020a03841660009081526008820160209081526040808320546007850190925290912054610fa99190610f9d906801000000000000000090610f9190610f8090612d53565b60058701549063ffffffff612d5f16565b9063ffffffff612d8016565b9063ffffffff612d9716565b91505b5092915050565b6000339050600f6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831061102c5780518252601f19909201916020918201910161100d565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff161515925061107791505057600080fd5b60075460ff16156110d2576040805160e560020a62461bcd02815260206004820152601160248201527f416c726561647920616374697661746564000000000000000000000000000000604482015290519081900360640190fd5b506001600581905560008181526020527fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d819055427fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e81819055600654017fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7f556007805460ff19169091179055565b60008061116c83612c7c565b90508091505b50919050565b600e545b90565b60015481565b600080600080600e54851115151561119c57600080fd5b6111a585612da9565b92506111b283600a612d80565b91506111be8383612d97565b95945050505050565b600060018310806111d9575060055483115b156111e65750600061120c565b50600082815260208181526040808320600160a060020a03851684526008019091529020545b92915050565b60105460ff1681565b6000600182108061122d575060055482115b1561123a5750600061124e565b506000818152602081905260409020600501545b919050565b601281565b600f6020526000908152604090205460ff1681565b600754600090819060ff1615156001146112d3576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b33803b801561131a576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b60055460009081526020819052604090206002015442106113455761133d612bc0565b611345612c2f565b336000818152600c602052604080822080549083905590519296509450859185156108fc0291869190818181858888f1935050505015801561138b573d6000803e3d6000fd5b50604080518481529051600160a060020a038616917fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc919081900360200190a250505050565b600080600080600e54600014156113ef576414f46b0400935061141f565b611400670de0b6b3a7640000612da9565b925061140d83600a612d80565b91506114198383612d97565b90508093505b50505090565b60006001821080611437575060055482115b156114445750600061124e565b5060009081526020819052604090206009015490565b60075460009060ff1615156001146114be576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b60035460408051336c0100000000000000000000000081026020808401919091528351601481850301815260349093019384905282519194939182918401908083835b602083106115205780518252601f199092019160209182019101611501565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614151561155d57600080fd5b33803b80156115a4576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b60055460009081526020819052604090206002015442106115cf576115c7612bc0565b6115cf612c2f565b60018054600091829055604051909550339186156108fc02918791818181858888f19350505050158015611607573d6000803e3d6000fd5b506040805185815290516001917fe140efbb126c92f7fbc794e8b7ecd42f5bfc3acf44f46505c4fd0741b174ddaf919081900360200190a250505050565b6007546000908190819060ff1615156001146116ad576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b33803b80156116f4576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b600554600090815260208190526040902060020154421061171f57611717612bc0565b61171f612c2f565b33945060008061173b6001600554612d9790919063ffffffff16565b815260200190815260200160002093506117588460000154611eb7565b600160a060020a0386166000908152600886016020526040902054909350611786908463ffffffff612bb116565b600160a060020a038616600090815260088601602052604090205560098401546117b6908463ffffffff612bb116565b6009850155600160a060020a0385166000908152600c60205260409020546117e4908463ffffffff612bb116565b600160a060020a0386166000818152600c6020908152604091829020939093558051868152905191927f46ae18a6c054414376d861b158543ca3cd1b9e6ab90aa07eaf33209d08ac9a4a92918290030190a25050505050565b303190565b600160a060020a03166000908152600b602052604090205490565b60025481565b600080600e546000141561187e5764199c82cc009150611895565b61188f670de0b6b3a7640000612da9565b90508091505b5090565b6000339050600f6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083106119125780518252601f1990920191602091820191016118f3565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff161515925061195d91505057600080fd5b506000918252600f6020526040909120805460ff1916911515919091179055565b60003361198a81611842565b91505090565b6009805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ebb5780601f10610e9057610100808354040283529160200191610ebb565b6000602081905290815260409020805460018201546002830154600384015460048501546005860154600687015460099097015495969495939460ff909316939192909188565b600554600090815260208181526040808320600160a060020a0385168452600781019092528220548212611a695760009150611172565b6006810154600010611a7e5760009150611172565b600160a060020a0383166000908152600782016020526040902054611ae9906801000000000000000090610f9190611ab590612d53565b611add8560010154610f91680100000000000000008860060154612d5f90919063ffffffff16565b9063ffffffff612d5f16565b9392505050565b60006001821080611b02575060055482115b15611b0f5750600161124e565b5060009081526020819052604090206003015460ff1690565b60006001821080611b3a575060055482115b15611b475750600061124e565b5060009081526020819052604090206002015490565b600061189534610822565b6000339050600f6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310611be15780518252601f199092019160209182019101611bc2565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff1615159250611c2c91505057600080fd5b506010805460ff19169055565b6007546000908190819081908190819060ff161515600114611ca7576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b33803b8015611cee576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b6005546000908152602081905260409020600201544210611d1957611d11612bc0565b611d19612c2f565b6000611d2361197e565b11611d2d57600080fd5b60105433975060ff16158015611d5b5750600160a060020a0387166000908152600b60205260409020548911155b1515611d6657600080fd5b611d7789600a63ffffffff612d8016565b9550611d89898763ffffffff612d9716565b9450611d9486612da9565b9350611d9f84612e15565b600554600090815260208190526040902060060154909350611dc7908463ffffffff612bb116565b600554600090815260208190526040902060060155600e54611def908763ffffffff612d9716565b600e55600160a060020a0387166000908152600b6020526040902054611e1b908a63ffffffff612d9716565b600160a060020a038089166000908152600b602052604080822093909355908c1681522054611e50908663ffffffff612bb116565b600160a060020a03808c166000818152600b602090815260409182902094909455805189815290519193928b16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019998505050505050505050565b600061120c3383610ec3565b6000339050600f6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310611f3c5780518252601f199092019160209182019101611f1d565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff1615159250611f8791505057600080fd5b8151611f9a906009906020850190612ef4565b505050565b60006001821080611fb1575060055482115b15611fbe5750600061124e565b5060009081526020819052604090206004015490565b60006001821080611fe6575060055482115b15611ff35750600061124e565b5060009081526020819052604090206006015490565b6000339050600f6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083106120825780518252601f199092019160209182019101612063565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff16151592506120cd91505057600080fd5b8151611f9a906008906020850190612ef4565b60065481565b6007546000908190819060ff16151560011461214e576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b33803b8015612195576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b60055460009081526020819052604090206002015442106121c0576121b8612bc0565b6121c0612c2f565b6000861180156121e257506005546121df90600163ffffffff612d9716565b86105b1515612238576040805160e560020a62461bcd02815260206004820152601460248201527f496e76616c696420726f756e64206e756d626572000000000000000000000000604482015290519081900360640190fd5b600086815260208190526040902060098101546006820154919650612263919063ffffffff612d9716565b9350600084116122bd576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f2065787069726564206469766964656e64732e0000000000000000000000604482015290519081900360640190fd5b6122d3600a610f9186600363ffffffff612d5f16565b6001549093506122e9908463ffffffff612bb116565b60015561230e6122ff858563ffffffff612d9716565b6002549063ffffffff612bb116565b6002556009850154612326908563ffffffff612bb116565b60098601556040805187815260208101869052815133927fd51e56d3a93e55aa016708e8805be6a6b4b8e8fecab3fe8f1249649a11eef752928290030190a2505050505050565b60075460ff1681565b60075460009060ff1615156001146123da576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b60045460408051336c0100000000000000000000000081026020808401919091528351601481850301815260349093019384905282519194939182918401908083835b6020831061243c5780518252601f19909201916020918201910161241d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614151561247957600080fd5b33803b80156124c0576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b60055460009081526020819052604090206002015442106124eb576124e3612bc0565b6124eb612c2f565b60028054600091829055604051909550339186156108fc02918791818181858888f19350505050158015612523573d6000803e3d6000fd5b506040805185815290516002917fe140efbb126c92f7fbc794e8b7ecd42f5bfc3acf44f46505c4fd0741b174ddaf919081900360200190a250505050565b60006001831080612573575060055483115b156125805750600061120c565b50600082815260208181526040808320600160a060020a038516845260070190915290205492915050565b600754600090819081908190819081908190819060ff16151560011461261d576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b33803b8015612664576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b600061266e61197e565b1161267857600080fd5b60055460009081526020819052604090206002015442106126a35761269b612bc0565b6126a3612c2f565b60008b116126fb576040805160e560020a62461bcd02815260206004820152601060248201527f53656c6c696e67203020746f6b656e2100000000000000000000000000000000604482015290519081900360640190fd5b60055460009081526020818152604080832033808552600b909352922054919b5099508b111561272a57600080fd5b8a975061273688612da9565b965061274387600a612d80565b955061274f8787612d97565b600160a060020a038a166000908152600c602052604090205490955061277b908663ffffffff612bb116565b600160a060020a038a166000908152600c602052604090205561279d86612e15565b60068b01549094506127b5908563ffffffff612bb116565b60068b0155600e546127cd908963ffffffff612d9716565b600e55600160a060020a0389166000908152600b60205260409020546127f9908963ffffffff612d9716565b600160a060020a038a166000908152600b602090815260408083209390935560078d0190522054925061283b61282e89612d14565b849063ffffffff612e8c16565b600160a060020a038a16600090815260078c0160205260408120919091558313156128b2578761286a84612d53565b111561288f5760018a0154612885908963ffffffff612d9716565b60018b01556128b2565b6128ac61289b84612d53565b60018c01549063ffffffff612d9716565b60018b01555b60408051898152602081018790528151600160a060020a038c16927fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a31139928290030190a25050505050505050505050565b600754600090819060ff161515600114612968576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b33803b80156129af576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b60055460009081526020819052604090206002015442106129da576129d2612bc0565b6129da612c2f565b336000818152600b6020526040812054919550909350831115612a0057612a00836125ab565b612a08611645565b612a1061126d565b50505050565b600c6020526000908152604090205481565b60006001821080612a3a575060055482115b15612a475750600061124e565b5060009081526020819052604090206001015490565b60055481565b6007546000908190819060ff161515600114612acb576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b33803b8015612b12576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b6005546000908152602081905260409020600201544210612b3d57612b35612bc0565b612b3d612c2f565b336000818152600c6020526040812080549190559095509350612b5f84610822565b925084600160a060020a03167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588585604051808381526020018281526020019250505060405180910390a25050505050565b600082820183811015611ae957fe5b600554600090815260208190526040812060038101805460ff191660019081179091558101549091108015612bf9575060008160060154115b15612c2c57612c268160010154610f91680100000000000000008460060154612d5f90919063ffffffff16565b60058201555b50565b60058054600101808255600081815260208190526040808220928355426004909301839055600654845483528183209301600290930192909255915482529020600301805460ff19169055565b600e546000906c01431e0fae6d7217caa00000009082906402540be400612d01612cfb730380d4bd8a8678c1bb542c80deb4800000000000880268056bc75e2d631000006002860a02017005e0a1fd2712875988becaad0000000000850201780197d4df19d605767337e9f14d3eec8920e40000000000000001612ebf565b85612d97565b811515612d0a57fe5b0403949350505050565b6000818181121561120c57fe5b6000828201818312801590612d365750838112155b80612d4b5750600083128015612d4b57508381125b1515611ae957fe5b60008082121561189557fe5b6000828202831580612d4b5750828482811515612d7857fe5b0414611ae957fe5b6000808284811515612d8e57fe5b04949350505050565b600082821115612da357fe5b50900390565b600e54600090670de0b6b3a7640000838101918101908390612e026414f46b04008285046402540be40002018702600283670de0b6b3a763ffff1982890a8b900301046402540be40002811515612dfc57fe5b04612d97565b811515612e0b57fe5b0495945050505050565b6000808080612e2b85603263ffffffff612d8016565b9250612e3d858463ffffffff612d9716565b9150612e55600a610f9185600363ffffffff612d5f16565b600154909150612e6b908263ffffffff612bb116565b600155612e816122ff848363ffffffff612d9716565b600255509392505050565b6000808212158015612ea057508282840313155b80612eb75750600082128015612eb7575082828403135b1515612da357fe5b80600260018201045b81811015611172578091506002818285811515612ee157fe5b0401811515612eec57fe5b049050612ec8565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612f3557805160ff1916838001178555612f62565b82800160010185558215612f62579182015b82811115612f62578251825591602001919060010190612f47565b506118959261117c9250905b808211156118955760008155600101612f6e56006e20646973636f72640000000000000000000000000000000000000000000000697473206e6f74207265616479207965742e2020636865636b203f6574612069736f7272792068756d616e73206f6e6c79000000000000000000000000000000a165627a7a72305820f8b1f5b936f772daf0bf1a7c3da1c3bdccd9c697a1abe2b1e4469ee207d872a50029
Deployed Bytecode
0x60806040526004361061023a5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146102465780630a5eb5ea146102d05780630f15f4c01461030657806310d0ffdd1461031d57806318160ddd146103355780631a682c7d1461034a578063226093731461035f57806326a93a621461037757806327defa1f1461039b5780632ab8f172146103c4578063313ce567146103dc578063392efb52146104075780633ccfd60b1461041f5780634b750334146104345780635110f8ef146104495780635a2280cd146104615780636265e628146104765780636b2f46321461048b57806370a08231146104a0578063746e4f81146104c15780638620410b146104d657806389135ae9146104eb578063949e8acd1461050857806395d89b411461051d57806396f5c1521461053257806397468dbb1461058b5780639f4b9eb6146105ac578063a4ee8b63146105c4578063a6f2ae3a146105dc578063a8e04f34146105e4578063a9059cbb146105f9578063b178d8991461061d578063b84c824614610635578063c137a60f1461068e578063c3446f7e146106a6578063c47f0027146106be578063c856d3c714610717578063ca6b54471461072c578063d53b267914610744578063d976fef014610759578063dfe652641461076e578063e4849b3214610792578063e9fad8ee146107aa578063f27782af146107bf578063f650582a146107e0578063f912d43d146107f8578063fdb5a03e1461080d575b61024334610822565b50005b34801561025257600080fd5b5061025b610e35565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029557818101518382015260200161027d565b50505050905090810190601f1680156102c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102dc57600080fd5b506102f4600160a060020a0360043516602435610ec3565b60408051918252519081900360200190f35b34801561031257600080fd5b5061031b610fb3565b005b34801561032957600080fd5b506102f4600435611160565b34801561034157600080fd5b506102f4611178565b34801561035657600080fd5b506102f461117f565b34801561036b57600080fd5b506102f4600435611185565b34801561038357600080fd5b506102f4600435600160a060020a03602435166111c7565b3480156103a757600080fd5b506103b0611212565b604080519115158252519081900360200190f35b3480156103d057600080fd5b506102f460043561121b565b3480156103e857600080fd5b506103f1611253565b6040805160ff9092168252519081900360200190f35b34801561041357600080fd5b506103b0600435611258565b34801561042b57600080fd5b5061031b61126d565b34801561044057600080fd5b506102f46113d1565b34801561045557600080fd5b506102f4600435611425565b34801561046d57600080fd5b5061031b61145a565b34801561048257600080fd5b5061031b611645565b34801561049757600080fd5b506102f461183d565b3480156104ac57600080fd5b506102f4600160a060020a0360043516611842565b3480156104cd57600080fd5b506102f461185d565b3480156104e257600080fd5b506102f4611863565b3480156104f757600080fd5b5061031b6004356024351515611899565b34801561051457600080fd5b506102f461197e565b34801561052957600080fd5b5061025b611990565b34801561053e57600080fd5b5061054a6004356119eb565b604080519889526020890197909752878701959095529215156060870152608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561059757600080fd5b506102f4600160a060020a0360043516611a32565b3480156105b857600080fd5b506103b0600435611af0565b3480156105d057600080fd5b506102f4600435611b28565b6102f4611b5d565b3480156105f057600080fd5b5061031b611b68565b34801561060557600080fd5b506103b0600160a060020a0360043516602435611c39565b34801561062957600080fd5b506102f4600435611eb7565b34801561064157600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261031b943694929360249392840191908190840183828082843750949750611ec39650505050505050565b34801561069a57600080fd5b506102f4600435611f9f565b3480156106b257600080fd5b506102f4600435611fd4565b3480156106ca57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261031b9436949293602493928401919081908401838280828437509497506120099650505050505050565b34801561072357600080fd5b506102f46120e0565b34801561073857600080fd5b5061031b6004356120e6565b34801561075057600080fd5b506103b061236d565b34801561076557600080fd5b5061031b612376565b34801561077a57600080fd5b506102f4600435600160a060020a0360243516612561565b34801561079e57600080fd5b5061031b6004356125ab565b3480156107b657600080fd5b5061031b612902565b3480156107cb57600080fd5b506102f4600160a060020a0360043516612a16565b3480156107ec57600080fd5b506102f4600435612a28565b34801561080457600080fd5b506102f4612a5d565b34801561081957600080fd5b5061031b612a63565b6007546000908190819081908190819060ff161515600114610890576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b6010548790339060ff1680156108b8575068068155a43676e00000826108b461183d565b0311155b15610bcb57600160a060020a0381166000908152600a602052604090205460ff161515600114801561090e5750600160a060020a0381166000908152600d60205260409020546801158e460913d0000090830111155b151561091957600080fd5b600160a060020a0381166000908152600d602052604090205461093c9083612bb1565b600160a060020a0382166000908152600d602052604090205533803b801561099c576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b60055460009081526020819052604090206002015442106109c7576109bf612bc0565b6109c7612c2f565b60008b11610a1f576040805160e560020a62461bcd02815260206004820152600d60248201527f302065746820627579696e672e00000000000000000000000000000000000000604482015290519081900360640190fd5b60055460009081526020819052604090209850339750610a3e8b612c7c565b9650600087118015610a605750600e54610a5e818963ffffffff612bb116565b115b1515610a6b57600080fd5b6000600e541115610a9157600e54610a89908863ffffffff612bb116565b600e55610a97565b600e8790555b600160a060020a038816600090815260078a0160205260409020549550610acd610ac088612d14565b879063ffffffff612d2116565b600160a060020a038916600090815260078b01602052604081208290559095508612610b12576001890154610b08908863ffffffff612bb116565b60018a0155610b3e565b6000851315610b3e57610b38610b2786612d53565b60018b01549063ffffffff612bb116565b60018a01555b600160a060020a0388166000908152600b6020526040902054610b67908863ffffffff612bb116565b600160a060020a0389166000818152600b60209081526040918290209390935580518e81529283018a9052805191927f7f743fb741e07b0c4daeb2af54fb3ebfa2bdb31d9913a0e555661c870411aae5929081900390910190a28699505050610e29565b6010805460ff1916905533803b8015610c1c576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b6005546000908152602081905260409020600201544210610c4757610c3f612bc0565b610c47612c2f565b60008b11610c9f576040805160e560020a62461bcd02815260206004820152600d60248201527f302065746820627579696e672e00000000000000000000000000000000000000604482015290519081900360640190fd5b60055460009081526020819052604090209850339750610cbe8b612c7c565b9650600087118015610ce05750600e54610cde818963ffffffff612bb116565b115b1515610ceb57600080fd5b6000600e541115610d1157600e54610d09908863ffffffff612bb116565b600e55610d17565b600e8790555b600160a060020a038816600090815260078a0160205260409020549550610d40610ac088612d14565b600160a060020a038916600090815260078b01602052604081208290559095508612610d85576001890154610d7b908863ffffffff612bb116565b60018a0155610da0565b6000851315610da057610d9a610b2786612d53565b60018a01555b600160a060020a0388166000908152600b6020526040902054610dc9908863ffffffff612bb116565b600160a060020a0389166000818152600b60209081526040918290209390935580518e81529283018a9052805191927f7f743fb741e07b0c4daeb2af54fb3ebfa2bdb31d9913a0e555661c870411aae5929081900390910190a286995050505b50505050505050919050565b6008805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ebb5780601f10610e9057610100808354040283529160200191610ebb565b820191906000526020600020905b815481529060010190602001808311610e9e57829003601f168201915b505050505081565b6000806001831015610ed85760009150610fac565b600554831115610eeb5760009150610fac565b50600082815260208181526040808320600160a060020a038716845260078101909252822054909112610f215760009150610fac565b6006810154600010610f365760009150610fac565b600160a060020a03841660009081526008820160209081526040808320546007850190925290912054610fa99190610f9d906801000000000000000090610f9190610f8090612d53565b60058701549063ffffffff612d5f16565b9063ffffffff612d8016565b9063ffffffff612d9716565b91505b5092915050565b6000339050600f6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831061102c5780518252601f19909201916020918201910161100d565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff161515925061107791505057600080fd5b60075460ff16156110d2576040805160e560020a62461bcd02815260206004820152601160248201527f416c726561647920616374697661746564000000000000000000000000000000604482015290519081900360640190fd5b506001600581905560008181526020527fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d819055427fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e81819055600654017fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7f556007805460ff19169091179055565b60008061116c83612c7c565b90508091505b50919050565b600e545b90565b60015481565b600080600080600e54851115151561119c57600080fd5b6111a585612da9565b92506111b283600a612d80565b91506111be8383612d97565b95945050505050565b600060018310806111d9575060055483115b156111e65750600061120c565b50600082815260208181526040808320600160a060020a03851684526008019091529020545b92915050565b60105460ff1681565b6000600182108061122d575060055482115b1561123a5750600061124e565b506000818152602081905260409020600501545b919050565b601281565b600f6020526000908152604090205460ff1681565b600754600090819060ff1615156001146112d3576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b33803b801561131a576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b60055460009081526020819052604090206002015442106113455761133d612bc0565b611345612c2f565b336000818152600c602052604080822080549083905590519296509450859185156108fc0291869190818181858888f1935050505015801561138b573d6000803e3d6000fd5b50604080518481529051600160a060020a038616917fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc919081900360200190a250505050565b600080600080600e54600014156113ef576414f46b0400935061141f565b611400670de0b6b3a7640000612da9565b925061140d83600a612d80565b91506114198383612d97565b90508093505b50505090565b60006001821080611437575060055482115b156114445750600061124e565b5060009081526020819052604090206009015490565b60075460009060ff1615156001146114be576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b60035460408051336c0100000000000000000000000081026020808401919091528351601481850301815260349093019384905282519194939182918401908083835b602083106115205780518252601f199092019160209182019101611501565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614151561155d57600080fd5b33803b80156115a4576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b60055460009081526020819052604090206002015442106115cf576115c7612bc0565b6115cf612c2f565b60018054600091829055604051909550339186156108fc02918791818181858888f19350505050158015611607573d6000803e3d6000fd5b506040805185815290516001917fe140efbb126c92f7fbc794e8b7ecd42f5bfc3acf44f46505c4fd0741b174ddaf919081900360200190a250505050565b6007546000908190819060ff1615156001146116ad576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b33803b80156116f4576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b600554600090815260208190526040902060020154421061171f57611717612bc0565b61171f612c2f565b33945060008061173b6001600554612d9790919063ffffffff16565b815260200190815260200160002093506117588460000154611eb7565b600160a060020a0386166000908152600886016020526040902054909350611786908463ffffffff612bb116565b600160a060020a038616600090815260088601602052604090205560098401546117b6908463ffffffff612bb116565b6009850155600160a060020a0385166000908152600c60205260409020546117e4908463ffffffff612bb116565b600160a060020a0386166000818152600c6020908152604091829020939093558051868152905191927f46ae18a6c054414376d861b158543ca3cd1b9e6ab90aa07eaf33209d08ac9a4a92918290030190a25050505050565b303190565b600160a060020a03166000908152600b602052604090205490565b60025481565b600080600e546000141561187e5764199c82cc009150611895565b61188f670de0b6b3a7640000612da9565b90508091505b5090565b6000339050600f6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083106119125780518252601f1990920191602091820191016118f3565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff161515925061195d91505057600080fd5b506000918252600f6020526040909120805460ff1916911515919091179055565b60003361198a81611842565b91505090565b6009805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ebb5780601f10610e9057610100808354040283529160200191610ebb565b6000602081905290815260409020805460018201546002830154600384015460048501546005860154600687015460099097015495969495939460ff909316939192909188565b600554600090815260208181526040808320600160a060020a0385168452600781019092528220548212611a695760009150611172565b6006810154600010611a7e5760009150611172565b600160a060020a0383166000908152600782016020526040902054611ae9906801000000000000000090610f9190611ab590612d53565b611add8560010154610f91680100000000000000008860060154612d5f90919063ffffffff16565b9063ffffffff612d5f16565b9392505050565b60006001821080611b02575060055482115b15611b0f5750600161124e565b5060009081526020819052604090206003015460ff1690565b60006001821080611b3a575060055482115b15611b475750600061124e565b5060009081526020819052604090206002015490565b600061189534610822565b6000339050600f6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310611be15780518252601f199092019160209182019101611bc2565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff1615159250611c2c91505057600080fd5b506010805460ff19169055565b6007546000908190819081908190819060ff161515600114611ca7576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b33803b8015611cee576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b6005546000908152602081905260409020600201544210611d1957611d11612bc0565b611d19612c2f565b6000611d2361197e565b11611d2d57600080fd5b60105433975060ff16158015611d5b5750600160a060020a0387166000908152600b60205260409020548911155b1515611d6657600080fd5b611d7789600a63ffffffff612d8016565b9550611d89898763ffffffff612d9716565b9450611d9486612da9565b9350611d9f84612e15565b600554600090815260208190526040902060060154909350611dc7908463ffffffff612bb116565b600554600090815260208190526040902060060155600e54611def908763ffffffff612d9716565b600e55600160a060020a0387166000908152600b6020526040902054611e1b908a63ffffffff612d9716565b600160a060020a038089166000908152600b602052604080822093909355908c1681522054611e50908663ffffffff612bb116565b600160a060020a03808c166000818152600b602090815260409182902094909455805189815290519193928b16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019998505050505050505050565b600061120c3383610ec3565b6000339050600f6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310611f3c5780518252601f199092019160209182019101611f1d565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff1615159250611f8791505057600080fd5b8151611f9a906009906020850190612ef4565b505050565b60006001821080611fb1575060055482115b15611fbe5750600061124e565b5060009081526020819052604090206004015490565b60006001821080611fe6575060055482115b15611ff35750600061124e565b5060009081526020819052604090206006015490565b6000339050600f6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083106120825780518252601f199092019160209182019101612063565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff16151592506120cd91505057600080fd5b8151611f9a906008906020850190612ef4565b60065481565b6007546000908190819060ff16151560011461214e576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b33803b8015612195576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b60055460009081526020819052604090206002015442106121c0576121b8612bc0565b6121c0612c2f565b6000861180156121e257506005546121df90600163ffffffff612d9716565b86105b1515612238576040805160e560020a62461bcd02815260206004820152601460248201527f496e76616c696420726f756e64206e756d626572000000000000000000000000604482015290519081900360640190fd5b600086815260208190526040902060098101546006820154919650612263919063ffffffff612d9716565b9350600084116122bd576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f2065787069726564206469766964656e64732e0000000000000000000000604482015290519081900360640190fd5b6122d3600a610f9186600363ffffffff612d5f16565b6001549093506122e9908463ffffffff612bb116565b60015561230e6122ff858563ffffffff612d9716565b6002549063ffffffff612bb116565b6002556009850154612326908563ffffffff612bb116565b60098601556040805187815260208101869052815133927fd51e56d3a93e55aa016708e8805be6a6b4b8e8fecab3fe8f1249649a11eef752928290030190a2505050505050565b60075460ff1681565b60075460009060ff1615156001146123da576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b60045460408051336c0100000000000000000000000081026020808401919091528351601481850301815260349093019384905282519194939182918401908083835b6020831061243c5780518252601f19909201916020918201910161241d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614151561247957600080fd5b33803b80156124c0576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b60055460009081526020819052604090206002015442106124eb576124e3612bc0565b6124eb612c2f565b60028054600091829055604051909550339186156108fc02918791818181858888f19350505050158015612523573d6000803e3d6000fd5b506040805185815290516002917fe140efbb126c92f7fbc794e8b7ecd42f5bfc3acf44f46505c4fd0741b174ddaf919081900360200190a250505050565b60006001831080612573575060055483115b156125805750600061120c565b50600082815260208181526040808320600160a060020a038516845260070190915290205492915050565b600754600090819081908190819081908190819060ff16151560011461261d576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b33803b8015612664576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b600061266e61197e565b1161267857600080fd5b60055460009081526020819052604090206002015442106126a35761269b612bc0565b6126a3612c2f565b60008b116126fb576040805160e560020a62461bcd02815260206004820152601060248201527f53656c6c696e67203020746f6b656e2100000000000000000000000000000000604482015290519081900360640190fd5b60055460009081526020818152604080832033808552600b909352922054919b5099508b111561272a57600080fd5b8a975061273688612da9565b965061274387600a612d80565b955061274f8787612d97565b600160a060020a038a166000908152600c602052604090205490955061277b908663ffffffff612bb116565b600160a060020a038a166000908152600c602052604090205561279d86612e15565b60068b01549094506127b5908563ffffffff612bb116565b60068b0155600e546127cd908963ffffffff612d9716565b600e55600160a060020a0389166000908152600b60205260409020546127f9908963ffffffff612d9716565b600160a060020a038a166000908152600b602090815260408083209390935560078d0190522054925061283b61282e89612d14565b849063ffffffff612e8c16565b600160a060020a038a16600090815260078c0160205260408120919091558313156128b2578761286a84612d53565b111561288f5760018a0154612885908963ffffffff612d9716565b60018b01556128b2565b6128ac61289b84612d53565b60018c01549063ffffffff612d9716565b60018b01555b60408051898152602081018790528151600160a060020a038c16927fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a31139928290030190a25050505050505050505050565b600754600090819060ff161515600114612968576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b33803b80156129af576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b60055460009081526020819052604090206002015442106129da576129d2612bc0565b6129da612c2f565b336000818152600b6020526040812054919550909350831115612a0057612a00836125ab565b612a08611645565b612a1061126d565b50505050565b600c6020526000908152604090205481565b60006001821080612a3a575060055482115b15612a475750600061124e565b5060009081526020819052604090206001015490565b60055481565b6007546000908190819060ff161515600114612acb576040805160e560020a62461bcd0281526020600482015260296024820152600080516020612fa38339815191526044820152600080516020612f83833981519152606482015290519081900360840190fd5b33803b8015612b12576040805160e560020a62461bcd0281526020600482015260116024820152600080516020612fc3833981519152604482015290519081900360640190fd5b6005546000908152602081905260409020600201544210612b3d57612b35612bc0565b612b3d612c2f565b336000818152600c6020526040812080549190559095509350612b5f84610822565b925084600160a060020a03167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588585604051808381526020018281526020019250505060405180910390a25050505050565b600082820183811015611ae957fe5b600554600090815260208190526040812060038101805460ff191660019081179091558101549091108015612bf9575060008160060154115b15612c2c57612c268160010154610f91680100000000000000008460060154612d5f90919063ffffffff16565b60058201555b50565b60058054600101808255600081815260208190526040808220928355426004909301839055600654845483528183209301600290930192909255915482529020600301805460ff19169055565b600e546000906c01431e0fae6d7217caa00000009082906402540be400612d01612cfb730380d4bd8a8678c1bb542c80deb4800000000000880268056bc75e2d631000006002860a02017005e0a1fd2712875988becaad0000000000850201780197d4df19d605767337e9f14d3eec8920e40000000000000001612ebf565b85612d97565b811515612d0a57fe5b0403949350505050565b6000818181121561120c57fe5b6000828201818312801590612d365750838112155b80612d4b5750600083128015612d4b57508381125b1515611ae957fe5b60008082121561189557fe5b6000828202831580612d4b5750828482811515612d7857fe5b0414611ae957fe5b6000808284811515612d8e57fe5b04949350505050565b600082821115612da357fe5b50900390565b600e54600090670de0b6b3a7640000838101918101908390612e026414f46b04008285046402540be40002018702600283670de0b6b3a763ffff1982890a8b900301046402540be40002811515612dfc57fe5b04612d97565b811515612e0b57fe5b0495945050505050565b6000808080612e2b85603263ffffffff612d8016565b9250612e3d858463ffffffff612d9716565b9150612e55600a610f9185600363ffffffff612d5f16565b600154909150612e6b908263ffffffff612bb116565b600155612e816122ff848363ffffffff612d9716565b600255509392505050565b6000808212158015612ea057508282840313155b80612eb75750600082128015612eb7575082828403135b1515612da357fe5b80600260018201045b81811015611172578091506002818285811515612ee157fe5b0401811515612eec57fe5b049050612ec8565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612f3557805160ff1916838001178555612f62565b82800160010185558215612f62579182015b82811115612f62578251825591602001919060010190612f47565b506118959261117c9250905b808211156118955760008155600101612f6e56006e20646973636f72640000000000000000000000000000000000000000000000697473206e6f74207265616479207965742e2020636865636b203f6574612069736f7272792068756d616e73206f6e6c79000000000000000000000000000000a165627a7a72305820f8b1f5b936f772daf0bf1a7c3da1c3bdccd9c697a1abe2b1e4469ee207d872a50029
Swarm Source
bzzr://f8b1f5b936f772daf0bf1a7c3da1c3bdccd9c697a1abe2b1e4469ee207d872a5
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.