ERC-20
Overview
Max Total Supply
1,486,668.565372172778885835 FUTB1
Holders
72
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
37.977089888882084678 FUTB1Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
FUTB1
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-03-05 */ pragma solidity ^0.4.24; // File: openzeppelin-solidity/contracts/math/SafeMath.sol /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 _a, uint256 _b) internal pure returns (uint256 c) { // Gas optimization: this is cheaper than asserting 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (_a == 0) { return 0; } c = _a * _b; assert(c / _a == _b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ 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 _a / _b; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 _a, uint256 _b) internal pure returns (uint256) { assert(_b <= _a); return _a - _b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 _a, uint256 _b) internal pure returns (uint256 c) { c = _a + _b; assert(c >= _a); return c; } } // File: openzeppelin-solidity/contracts/ownership/Ownable.sol /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to relinquish control of the contract. * @notice Renouncing to ownership will leave the contract without an owner. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. */ function renounceOwnership() public onlyOwner { emit OwnershipRenounced(owner); owner = address(0); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function transferOwnership(address _newOwner) public onlyOwner { _transferOwnership(_newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function _transferOwnership(address _newOwner) internal { require(_newOwner != address(0)); emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } } // File: contracts/FUTBTiers.sol contract FUTBTiers is Ownable { using SafeMath for uint256; uint public offset = 10**8; struct Tier { uint futb; uint futrx; uint rate; } mapping(uint16 => Tier) public tiers; constructor() public { } function addTiers(uint16 _startingTier, uint[] _futb, uint[] _futrx) external { require(msg.sender == dev || msg.sender == admin || msg.sender == owner); require(_futb.length == _futrx.length); for (uint16 i = 0; i < _futb.length; i++) { tiers[_startingTier + i] = Tier(_futb[i], _futrx[i], uint(_futb[i]).div(uint(_futrx[i]).div(offset))); } } function getTier(uint16 tier) public view returns (uint futb, uint futrx, uint rate) { Tier t = tiers[tier]; return (t.futb, t.futrx, t.rate); } address public dev = 0x89ec1273a56f232d96cd17c08e9f129e15cf16f1; function changeDev (address _receiver) external { require(msg.sender == dev); dev = _receiver; } address public admin = 0x89ec1273a56f232d96cd17c08e9f129e15cf16f1; function changeAdmin (address _receiver) external { require(msg.sender == admin); admin = _receiver; } function loadData() external { require(msg.sender == dev || msg.sender == admin || msg.sender == owner); tiers[1] = Tier(6.597 ether, 0.0369 ether, uint(6.597 ether).div(uint(0.0369 ether).div(offset))); tiers[2] = Tier(9.5117 ether, 0.0531 ether, uint(9.5117 ether).div(uint(0.0531 ether).div(offset))); tiers[3] = Tier(5.8799 ether, 0.0292 ether, uint(5.8799 ether).div(uint(0.0292 ether).div(offset))); tiers[4] = Tier(7.7979 ether, 0.0338 ether, uint(7.7979 ether).div(uint(0.0338 ether).div(offset))); tiers[5] = Tier(7.6839 ether, 0.0385 ether, uint(7.6839 ether).div(uint(0.0385 ether).div(offset))); tiers[6] = Tier(6.9612 ether, 0.0215 ether, uint(6.9612 ether).div(uint(0.0215 ether).div(offset))); tiers[7] = Tier(7.1697 ether, 0.0269 ether, uint(7.1697 ether).div(uint(0.0269 ether).div(offset))); tiers[8] = Tier(6.2356 ether, 0.0192 ether, uint(6.2356 ether).div(uint(0.0192 ether).div(offset))); tiers[9] = Tier(5.6619 ether, 0.0177 ether, uint(5.6619 ether).div(uint(0.0177 ether).div(offset))); tiers[10] = Tier(6.1805 ether, 0.0231 ether, uint(6.1805 ether).div(uint(0.0231 ether).div(offset))); tiers[11] = Tier(6.915 ether, 0.0262 ether, uint(6.915 ether).div(uint(0.0262 ether).div(offset))); tiers[12] = Tier(8.7151 ether, 0.0323 ether, uint(8.7151 ether).div(uint(0.0323 ether).div(offset))); tiers[13] = Tier(23.8751 ether, 0.1038 ether, uint(23.8751 ether).div(uint(0.1038 ether).div(offset))); tiers[14] = Tier(7.0588 ether, 0.0262 ether, uint(7.0588 ether).div(uint(0.0262 ether).div(offset))); tiers[15] = Tier(13.441 ether, 0.0585 ether, uint(13.441 ether).div(uint(0.0585 ether).div(offset))); tiers[16] = Tier(6.7596 ether, 0.0254 ether, uint(6.7596 ether).div(uint(0.0254 ether).div(offset))); tiers[17] = Tier(9.3726 ether, 0.0346 ether, uint(9.3726 ether).div(uint(0.0346 ether).div(offset))); tiers[18] = Tier(7.1789 ether, 0.0269 ether, uint(7.1789 ether).div(uint(0.0269 ether).div(offset))); tiers[19] = Tier(5.8699 ether, 0.0215 ether, uint(5.8699 ether).div(uint(0.0215 ether).div(offset))); tiers[20] = Tier(8.3413 ether, 0.0308 ether, uint(8.3413 ether).div(uint(0.0308 ether).div(offset))); tiers[21] = Tier(6.8338 ether, 0.0254 ether, uint(6.8338 ether).div(uint(0.0254 ether).div(offset))); tiers[22] = Tier(6.1386 ether, 0.0231 ether, uint(6.1386 ether).div(uint(0.0231 ether).div(offset))); tiers[23] = Tier(6.7469 ether, 0.0254 ether, uint(6.7469 ether).div(uint(0.0254 ether).div(offset))); tiers[24] = Tier(9.9626 ether, 0.0431 ether, uint(9.9626 ether).div(uint(0.0431 ether).div(offset))); tiers[25] = Tier(18.046 ether, 0.0785 ether, uint(18.046 ether).div(uint(0.0785 ether).div(offset))); tiers[26] = Tier(10.2918 ether, 0.0446 ether, uint(10.2918 ether).div(uint(0.0446 ether).div(offset))); tiers[27] = Tier(56.3078 ether, 0.2454 ether, uint(56.3078 ether).div(uint(0.2454 ether).div(offset))); tiers[28] = Tier(17.2519 ether, 0.0646 ether, uint(17.2519 ether).div(uint(0.0646 ether).div(offset))); tiers[29] = Tier(12.1003 ether, 0.0531 ether, uint(12.1003 ether).div(uint(0.0531 ether).div(offset))); tiers[30] = Tier(14.4506 ether, 0.0631 ether, uint(14.4506 ether).div(uint(0.0631 ether).div(offset))); } } // File: contracts/badERC20Fix.sol /* badERC20 POC Fix by SECBIT Team USE WITH CAUTION & NO WARRANTY REFERENCE & RELATED READING - https://github.com/ethereum/solidity/issues/4116 - https://medium.com/@chris_77367/explaining-unexpected-reverts-starting-with-solidity-0-4-22-3ada6e82308c - https://medium.com/coinmonks/missing-return-value-bug-at-least-130-tokens-affected-d67bf08521ca - https://gist.github.com/BrendanChou/88a2eeb80947ff00bcf58ffdafeaeb61 */ pragma solidity ^0.4.24; library ERC20AsmFn { function isContract(address addr) internal { assembly { if iszero(extcodesize(addr)) { revert(0, 0) } } } function handleReturnData() internal returns (bool result) { assembly { switch returndatasize() case 0 { // not a std erc20 result := 1 } case 32 { // std erc20 returndatacopy(0, 0, 32) result := mload(0) } default { // anything else, should revert for safety revert(0, 0) } } } function asmTransfer(address _erc20Addr, address _to, uint256 _value) internal returns (bool result) { // Must be a contract addr first! isContract(_erc20Addr); // call return false when something wrong require(_erc20Addr.call(bytes4(keccak256("transfer(address,uint256)")), _to, _value)); // handle returndata return handleReturnData(); } function asmTransferFrom(address _erc20Addr, address _from, address _to, uint256 _value) internal returns (bool result) { // Must be a contract addr first! isContract(_erc20Addr); // call return false when something wrong require(_erc20Addr.call(bytes4(keccak256("transferFrom(address,address,uint256)")), _from, _to, _value)); // handle returndata return handleReturnData(); } function asmApprove(address _erc20Addr, address _spender, uint256 _value) internal returns (bool result) { // Must be a contract addr first! isContract(_erc20Addr); // call return false when something wrong require(_erc20Addr.call(bytes4(keccak256("approve(address,uint256)")), _spender, _value)); // handle returndata return handleReturnData(); } } // File: openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * See https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address _who) public view returns (uint256); function transfer(address _to, uint256 _value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } // File: openzeppelin-solidity/contracts/token/ERC20/BasicToken.sol /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) internal balances; uint256 internal totalSupply_; /** * @dev Total number of tokens in existence */ function totalSupply() public view returns (uint256) { return totalSupply_; } /** * @dev Transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns (bool) { require(_value <= balances[msg.sender]); require(_to != address(0)); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view returns (uint256) { return balances[_owner]; } } // File: openzeppelin-solidity/contracts/token/ERC20/BurnableToken.sol /** * @title Burnable Token * @dev Token that can be irreversibly burned (destroyed). */ contract BurnableToken is BasicToken { event Burn(address indexed burner, uint256 value); /** * @dev Burns a specific amount of tokens. * @param _value The amount of token to be burned. */ function burn(uint256 _value) public { _burn(msg.sender, _value); } function _burn(address _who, uint256 _value) internal { require(_value <= balances[_who]); // no need to require value <= totalSupply, since that would imply the // sender's balance is greater than the totalSupply, which *should* be an assertion failure balances[_who] = balances[_who].sub(_value); totalSupply_ = totalSupply_.sub(_value); emit Burn(_who, _value); emit Transfer(_who, address(0), _value); } } // File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address _owner, address _spender) public view returns (uint256); function transferFrom(address _from, address _to, uint256 _value) public returns (bool); function approve(address _spender, uint256 _value) public returns (bool); event Approval( address indexed owner, address indexed spender, uint256 value ); } // File: openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. * https://github.com/ethereum/EIPs/issues/20 * Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol */ contract StandardToken is ERC20, BasicToken { mapping (address => mapping (address => uint256)) internal allowed; /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ function transferFrom( address _from, address _to, uint256 _value ) public returns (bool) { require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); require(_to != address(0)); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); emit Transfer(_from, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance( address _owner, address _spender ) public view returns (uint256) { return allowed[_owner][_spender]; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _addedValue The amount of tokens to increase the allowance by. */ function increaseApproval( address _spender, uint256 _addedValue ) public returns (bool) { allowed[msg.sender][_spender] = ( allowed[msg.sender][_spender].add(_addedValue)); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * approve should be called when allowed[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseApproval( address _spender, uint256 _subtractedValue ) public returns (bool) { uint256 oldValue = allowed[msg.sender][_spender]; if (_subtractedValue >= oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } // File: openzeppelin-solidity/contracts/token/ERC20/MintableToken.sol /** * @title Mintable token * @dev Simple ERC20 Token example, with mintable token creation * Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol */ contract MintableToken is StandardToken, Ownable { event Mint(address indexed to, uint256 amount); event MintFinished(); bool public mintingFinished = false; modifier canMint() { require(!mintingFinished); _; } modifier hasMintPermission() { require(msg.sender == owner); _; } /** * @dev Function to mint tokens * @param _to The address that will receive the minted tokens. * @param _amount The amount of tokens to mint. * @return A boolean that indicates if the operation was successful. */ function mint( address _to, uint256 _amount ) public hasMintPermission canMint returns (bool) { totalSupply_ = totalSupply_.add(_amount); balances[_to] = balances[_to].add(_amount); emit Mint(_to, _amount); emit Transfer(address(0), _to, _amount); return true; } /** * @dev Function to stop minting new tokens. * @return True if the operation was successful. */ function finishMinting() public onlyOwner canMint returns (bool) { mintingFinished = true; emit MintFinished(); return true; } } // File: contracts/FUTB.sol contract FUTB1 is StandardToken, MintableToken, BurnableToken { using SafeMath for uint256; using ERC20AsmFn for ERC20; string public constant name = "Futereum BTC 1"; string public constant symbol = "FUTB1"; uint8 public constant decimals = 18; uint public constant SWAP_CAP = 21000000 * (10 ** uint256(decimals)); uint public cycleMintSupply = 0; FUTBTiers public tierContract = FUTBTiers(0x4DD013B9E784C459fe5f82aa926534506CE25EAF); event SwapStarted(uint256 endTime); event MiningRestart(uint16 tier); event MiningTokenAdded(address token, uint ratio); event MiningTokenAdjusted(address token, uint ratio); uint public offset = 10**8; uint public decimalOffset = 10 ** uint256(decimals); uint public baseRate = 100; mapping(address => uint) public exchangeRatios; mapping(address => uint) public unPaidFees; address[] public miningTokens; address public admin; address public tierAdmin; address public FUTC = 0xf880d3C6DCDA42A7b2F6640703C5748557865B35; //initial state uint16 public currentTier = 1; uint public futbLeftInCurrent = 6.597 ether; uint public miningTokenLeftInCurrent = 0.0369 ether; uint public currentRate = futbLeftInCurrent.div(miningTokenLeftInCurrent.div(offset)); bool public isMiningOpen = false; bool public miningActive = false; uint16 public lastTier = 2856; constructor() public { totalSupply_ = 0; //only the contract itself can mint as the owner owner = this; admin = msg.sender; tierAdmin = msg.sender; } modifier canMine() { require(isMiningOpen); _; } modifier onlyAdmin() { require(msg.sender == admin); _; } modifier onlyTierAdmin() { require(msg.sender == tierAdmin); _; } // first call Token(address).approve(futb address, amount) for FUTB to transfer on your behalf. function mine(address token, uint amount) canMine external { require(token != 0 && amount > 0); require(exchangeRatios[token] > 0 && cycleMintSupply < SWAP_CAP); require(ERC20(token).asmTransferFrom(msg.sender, this, amount)); _mine(token, amount); } function _mine(address _token, uint256 _inAmount) private { if (!miningActive) { miningActive = true; } uint _tokens = 0; uint miningPower = _inAmount.mul(exchangeRatios[_token]).div(baseRate); uint fee = _inAmount.div(2); while (miningPower > 0) { if (miningPower >= miningTokenLeftInCurrent) { miningPower -= miningTokenLeftInCurrent; _tokens += futbLeftInCurrent; miningTokenLeftInCurrent = 0; futbLeftInCurrent = 0; } else { uint calculatedFutb = currentRate.mul(miningPower).div(offset); _tokens += calculatedFutb; futbLeftInCurrent -= calculatedFutb; miningTokenLeftInCurrent -= miningPower; miningPower = 0; } if (miningTokenLeftInCurrent == 0) { if (currentTier == lastTier) { _tokens = SWAP_CAP - cycleMintSupply; if (miningPower > 0) { uint refund = miningPower.mul(baseRate).div(exchangeRatios[_token]); fee -= refund.div(2); ERC20(_token).asmTransfer(msg.sender, refund); } // Open swap _startSwap(); break; } currentTier++; (futbLeftInCurrent, miningTokenLeftInCurrent, currentRate) = tierContract.getTier(currentTier); } } cycleMintSupply += _tokens; MintableToken(this).mint(msg.sender, _tokens); ERC20(_token).asmTransfer(FUTC, fee); } // swap data bool public swapOpen = false; uint public swapEndTime; mapping(address => uint) public swapRates; function _startSwap() private { swapEndTime = now + 30 days; swapOpen = true; isMiningOpen = false; miningActive = false; //set swap rates for (uint16 i = 0; i < miningTokens.length; i++) { address _token = miningTokens[i]; uint swapAmt = ERC20(_token).balanceOf(this); swapRates[_token] = swapAmt.div(SWAP_CAP.div(decimalOffset)); } emit SwapStarted(swapEndTime); } function swap(uint amt) public { require(swapOpen && cycleMintSupply > 0); if (amt > cycleMintSupply) { amt = cycleMintSupply; } cycleMintSupply -= amt; // burn verifies msg.sender has balance burn(amt); for (uint16 i = 0; i < miningTokens.length; i++) { address _token = miningTokens[i]; ERC20(_token).asmTransfer(msg.sender, amt.mul(swapRates[_token]).div(decimalOffset)); } } function restart() external { require(swapOpen); require(now > swapEndTime || cycleMintSupply == 0); cycleMintSupply = 0; swapOpen = false; swapEndTime = 0; isMiningOpen = true; // 20% penalty for unswapped tokens for (uint16 i = 0; i < miningTokens.length; i++) { address _token = miningTokens[i]; uint amtLeft = ERC20(_token).balanceOf(this); ERC20(_token).asmTransfer(FUTC, amtLeft.div(5)); } currentTier = 1; futbLeftInCurrent = 6.597 ether; miningTokenLeftInCurrent = 0.0369 ether; currentRate = futbLeftInCurrent.div(miningTokenLeftInCurrent.div(offset)); emit MiningRestart(currentTier); } function setIsMiningOpen(bool isOpen) onlyTierAdmin external { isMiningOpen = isOpen; } // base rate is 100, so for 1 to 1 send in 100 as ratio function addMiningToken(address tokenAddr, uint ratio) onlyAdmin external { require(exchangeRatios[tokenAddr] == 0 && ratio > 0 && ratio < 10000); exchangeRatios[tokenAddr] = ratio; bool found = false; for (uint16 i = 0; i < miningTokens.length; i++) { if (miningTokens[i] == tokenAddr) { found = true; break; } } if (!found) { miningTokens.push(tokenAddr); } emit MiningTokenAdded(tokenAddr, ratio); } function adjustTokenRate(address tokenAddr, uint ratio, uint16 position) onlyAdmin external { require(miningTokens[position] == tokenAddr && ratio < 10000); exchangeRatios[tokenAddr] = ratio; emit MiningTokenAdjusted(tokenAddr, ratio); } // can only add/change tier contract in between mining cycles function setFutbTiers(address _tiersAddr) onlyTierAdmin external { require(!miningActive); tierContract = FUTBTiers(_tiersAddr); } // use this to lock the contract from further changes to mining tokens function lockContract() onlyAdmin external { require(miningActive); admin = address(0); } // this allows us to use a different set of tiers // can only be changed in between mining cycles by admin function setLastTier(uint16 _lastTier) onlyTierAdmin external { require(swapOpen); lastTier = _lastTier; } function changeAdmin (address _receiver) onlyAdmin external { admin = _receiver; } function changeTierAdmin (address _receiver) onlyTierAdmin external { tierAdmin = _receiver; } /* * Whoops. Added a bad token that breaks swap back. * * Removal is irreversible. * * @param _addr The address of the ERC token to remove * @param _position The index of the _addr in the miningTokens array. * Use web3 to cycle through and find the index position. */ function removeToken(address _addr, uint16 _position) onlyTierAdmin external { require(miningTokens[_position] == _addr); exchangeRatios[_addr] = 0; miningTokens[_position] = miningTokens[miningTokens.length-1]; delete miningTokens[miningTokens.length-1]; miningTokens.length--; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"swapRates","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"miningActive","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"unPaidFees","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":false,"inputs":[],"name":"restart","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"baseRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cycleMintSupply","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":false,"inputs":[{"name":"_tiersAddr","type":"address"}],"name":"setFutbTiers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"FUTC","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_position","type":"uint16"}],"name":"removeToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_lastTier","type":"uint16"}],"name":"setLastTier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"miningTokenLeftInCurrent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"isOpen","type":"bool"}],"name":"setIsMiningOpen","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"exchangeRatios","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lastTier","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"lockContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"futbLeftInCurrent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isMiningOpen","outputs":[{"name":"","type":"bool"}],"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":"_receiver","type":"address"}],"name":"changeAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_receiver","type":"address"}],"name":"changeTierAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amt","type":"uint256"}],"name":"swap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tierContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"swapOpen","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddr","type":"address"},{"name":"ratio","type":"uint256"},{"name":"position","type":"uint16"}],"name":"adjustTokenRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"SWAP_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimalOffset","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"offset","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentTier","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddr","type":"address"},{"name":"ratio","type":"uint256"}],"name":"addMiningToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miningTokens","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tierAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"swapEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"endTime","type":"uint256"}],"name":"SwapStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tier","type":"uint16"}],"name":"MiningRestart","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"ratio","type":"uint256"}],"name":"MiningTokenAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"ratio","type":"uint256"}],"name":"MiningTokenAdjusted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]
Contract Creation Code
60806040526000600360146101000a81548160ff0219169083151502179055506000600455734dd013b9e784c459fe5f82aa926534506ce25eaf600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506305f5e100600655601260ff16600a0a600755606460085573f880d3c6dcda42a7b2f6640703c5748557865b35600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60146101000a81548161ffff021916908361ffff160217905550675b8d408c2f408000600f556683185ac03640006010556200016662000146600654601054620002f96401000000000262003275179091906401000000009004565b600f54620002f96401000000000262003275179091906401000000009004565b6011556000601260006101000a81548160ff0219169083151502179055506000601260016101000a81548160ff021916908315150217905550610b28601260026101000a81548161ffff021916908361ffff1602179055506000601260046101000a81548160ff021916908315150217905550348015620001e657600080fd5b5033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060018190555030600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000310565b600081838115156200030757fe5b04905092915050565b61402a80620003206000396000f300608060405260043610610272576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305d2035b1461027757806306fdde03146102a657806307989d5a14610336578063095ea7b31461038d57806312b27e3e146103f257806314bd63e61461042157806318160ddd146104785780631ef3755d146104a35780631f68f20a146104ba57806323b872dd146104e5578063254a46f41461056a578063313ce5671461059557806333a95d18146105c6578063382d4fc5146106095780633c4cd4b31461066057806340c10f19146106b157806342966c68146107165780634ae8ef06146107435780635338b3e4146107745780636140ca781461079f57806366188463146107ce5780636b8c926f1461083357806370a082311461088a578063715018a6146108e15780637159db81146108f8578063753868e31461092b578063790b855a146109425780637d64bcb41461096d5780637f99e11a1461099c5780638da5cb5b146109cb5780638f28397014610a225780639284280214610a6557806394b918de14610aa857806395d89b4114610ad5578063a30872db14610b65578063a9059cbb14610bbc578063ab27be2014610c21578063ba93d98014610c6e578063bc77edc214610c9d578063c4c39ba714610cf8578063d1b39ae514610d23578063d555654414610d4e578063d679677a14610d79578063d73dd62314610dac578063d98e299714610e11578063dd62ed3e14610e5e578063e05f64c714610ed5578063e733169614610f42578063efebc72014610f99578063f2fde38b14610fc4578063f851a44014611007578063f9f8bdb71461105e575b600080fd5b34801561028357600080fd5b5061028c611089565b604051808215151515815260200191505060405180910390f35b3480156102b257600080fd5b506102bb61109c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102fb5780820151818401526020810190506102e0565b50505050905090810190601f1680156103285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034257600080fd5b50610377600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d5565b6040518082815260200191505060405180910390f35b34801561039957600080fd5b506103d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110ed565b604051808215151515815260200191505060405180910390f35b3480156103fe57600080fd5b506104076111df565b604051808215151515815260200191505060405180910390f35b34801561042d57600080fd5b50610462600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111f2565b6040518082815260200191505060405180910390f35b34801561048457600080fd5b5061048d61120a565b6040518082815260200191505060405180910390f35b3480156104af57600080fd5b506104b8611214565b005b3480156104c657600080fd5b506104cf6114f3565b6040518082815260200191505060405180910390f35b3480156104f157600080fd5b50610550600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114f9565b604051808215151515815260200191505060405180910390f35b34801561057657600080fd5b5061057f6118b4565b6040518082815260200191505060405180910390f35b3480156105a157600080fd5b506105aa6118ba565b604051808260ff1660ff16815260200191505060405180910390f35b3480156105d257600080fd5b50610607600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118bf565b005b34801561061557600080fd5b5061061e61197b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561066c57600080fd5b506106af600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803561ffff1690602001909291905050506119a1565b005b3480156106bd57600080fd5b506106fc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bb4565b604051808215151515815260200191505060405180910390f35b34801561072257600080fd5b5061074160048036038101908080359060200190929190505050611d9a565b005b34801561074f57600080fd5b50610772600480360381019080803561ffff169060200190929190505050611da7565b005b34801561078057600080fd5b50610789611e3e565b6040518082815260200191505060405180910390f35b3480156107ab57600080fd5b506107cc600480360381019080803515159060200190929190505050611e44565b005b3480156107da57600080fd5b50610819600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ebd565b604051808215151515815260200191505060405180910390f35b34801561083f57600080fd5b50610874600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061214f565b6040518082815260200191505060405180910390f35b34801561089657600080fd5b506108cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612167565b6040518082815260200191505060405180910390f35b3480156108ed57600080fd5b506108f66121af565b005b34801561090457600080fd5b5061090d6122b4565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561093757600080fd5b506109406122c8565b005b34801561094e57600080fd5b50610957612383565b6040518082815260200191505060405180910390f35b34801561097957600080fd5b50610982612389565b604051808215151515815260200191505060405180910390f35b3480156109a857600080fd5b506109b1612451565b604051808215151515815260200191505060405180910390f35b3480156109d757600080fd5b506109e0612464565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a2e57600080fd5b50610a63600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061248a565b005b348015610a7157600080fd5b50610aa6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061252a565b005b348015610ab457600080fd5b50610ad3600480360381019080803590602001909291905050506125ca565b005b348015610ae157600080fd5b50610aea612718565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b2a578082015181840152602081019050610b0f565b50505050905090810190601f168015610b575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b7157600080fd5b50610b7a612751565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bc857600080fd5b50610c07600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612777565b604051808215151515815260200191505060405180910390f35b348015610c2d57600080fd5b50610c6c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612997565b005b348015610c7a57600080fd5b50610c83612a92565b604051808215151515815260200191505060405180910390f35b348015610ca957600080fd5b50610cf6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803561ffff169060200190929190505050612aa5565b005b348015610d0457600080fd5b50610d0d612c39565b6040518082815260200191505060405180910390f35b348015610d2f57600080fd5b50610d38612c4a565b6040518082815260200191505060405180910390f35b348015610d5a57600080fd5b50610d63612c50565b6040518082815260200191505060405180910390f35b348015610d8557600080fd5b50610d8e612c56565b604051808261ffff1661ffff16815260200191505060405180910390f35b348015610db857600080fd5b50610df7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c6a565b604051808215151515815260200191505060405180910390f35b348015610e1d57600080fd5b50610e5c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612e66565b005b348015610e6a57600080fd5b50610ebf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130f0565b6040518082815260200191505060405180910390f35b348015610ee157600080fd5b50610f0060048036038101908080359060200190929190505050613177565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610f4e57600080fd5b50610f576131b5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fa557600080fd5b50610fae6131db565b6040518082815260200191505060405180910390f35b348015610fd057600080fd5b50611005600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131e1565b005b34801561101357600080fd5b5061101c613249565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561106a57600080fd5b5061107361326f565b6040518082815260200191505060405180910390f35b600360149054906101000a900460ff1681565b6040805190810160405280600e81526020017f467574657265756d20425443203100000000000000000000000000000000000081525081565b60146020528060005260406000206000915090505481565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b601260019054906101000a900460ff1681565b600a6020528060005260406000206000915090505481565b6000600154905090565b6000806000601260049054906101000a900460ff16151561123457600080fd5b60135442118061124657506000600454145b151561125157600080fd5b60006004819055506000601260046101000a81548160ff02191690831515021790555060006013819055506001601260006101000a81548160ff021916908315150217905550600092505b600b805490508361ffff16101561143357600b8361ffff168154811015156112c057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561138857600080fd5b505af115801561139c573d6000803e3d6000fd5b505050506040513d60208110156113b257600080fd5b81019080805190602001909291905050509050611425600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113ff60058461327590919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff1661328b9092919063ffffffff16565b50828060010193505061129c565b6001600e60146101000a81548161ffff021916908361ffff160217905550675b8d408c2f408000600f819055506683185ac036400060108190555061149961148860065460105461327590919063ffffffff16565b600f5461327590919063ffffffff16565b6011819055507f7c21b0680bbd6c26c90041bb7a12b28c6c59067ff32b59fccf5ab16b2a76f0da600e60149054906101000a900461ffff16604051808261ffff1661ffff16815260200191505060405180910390a1505050565b60085481565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561154857600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156115d357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561160f57600080fd5b611660826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116f3826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b790919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117c482600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60045481565b601281565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561191b57600080fd5b601260019054906101000a900460ff1615151561193757600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119fd57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600b8261ffff16815481101515611a2757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611a7457600080fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b6001600b8054905003815481101515611ad057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b8261ffff16815481101515611b0e57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b6001600b8054905003815481101515611b6d57fe5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600b805480919060019003611baf9190613fad565b505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c1257600080fd5b600360149054906101000a900460ff16151515611c2e57600080fd5b611c43826001546133b790919063ffffffff16565b600181905550611c9a826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b790919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b611da433826133d3565b50565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e0357600080fd5b601260049054906101000a900460ff161515611e1e57600080fd5b80601260026101000a81548161ffff021916908361ffff16021790555050565b60105481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ea057600080fd5b80601260006101000a81548160ff02191690831515021790555050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083101515611fcf576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612063565b611fe2838261339e90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60096020528060005260406000206000915090505481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561220b57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601260029054906101000a900461ffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561232457600080fd5b601260019054906101000a900460ff16151561233f57600080fd5b6000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123e757600080fd5b600360149054906101000a900460ff1615151561240357600080fd5b6001600360146101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b601260009054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124e657600080fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561258657600080fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080601260049054906101000a900460ff1680156125eb57506000600454115b15156125f657600080fd5b6004548311156126065760045492505b8260046000828254039250508190555061261f83611d9a565b600091505b600b805490508261ffff16101561271357600b8261ffff1681548110151561264857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612705336126df6007546126d1601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548861358690919063ffffffff16565b61327590919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff1661328b9092919063ffffffff16565b508180600101925050612624565b505050565b6040805190810160405280600581526020017f465554423100000000000000000000000000000000000000000000000000000081525081565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156127c657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561280257600080fd5b612853826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128e6826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b790919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b601260009054906101000a900460ff1615156129b257600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156129d95750600081115b15156129e457600080fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015612a415750601260ff16600a0a6301406f4002600454105b1515612a4c57600080fd5b612a793330838573ffffffffffffffffffffffffffffffffffffffff166135be909392919063ffffffff16565b1515612a8457600080fd5b612a8e828261372c565b5050565b601260049054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b0157600080fd5b8273ffffffffffffffffffffffffffffffffffffffff16600b8261ffff16815481101515612b2b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612b7a575061271082105b1515612b8557600080fd5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f872923cd0be004fcfa809f0ac261cfd47842a03ffb0a22a3beb3dcd0fa410a938383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050565b601260ff16600a0a6301406f400281565b60075481565b60065481565b600e60149054906101000a900461ffff1681565b6000612cfb82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b790919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ec557600080fd5b6000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148015612f145750600083115b8015612f21575061271083105b1515612f2c57600080fd5b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060009150600090505b600b805490508161ffff161015613011578373ffffffffffffffffffffffffffffffffffffffff16600b8261ffff16815481101515612fb457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156130045760019150613011565b8080600101915050612f79565b81151561307f57600b8490806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b7f1e09227a907110e3a9dc0325bfc6b253af956f5d8c1a9d17c2f147654d1196de8484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b8181548110151561318657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561323d57600080fd5b61324681613c1e565b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b6000818381151561328257fe5b04905092915050565b600061329684613d1a565b8373ffffffffffffffffffffffffffffffffffffffff1660405180807f7472616e7366657228616464726573732c75696e743235362900000000000000815250601901905060405180910390207c0100000000000000000000000000000000000000000000000000000000900484846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506000604051808303816000875af192505050151561338d57600080fd5b613395613d2a565b90509392505050565b60008282111515156133ac57fe5b818303905092915050565b600081830190508281101515156133ca57fe5b80905092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561342057600080fd5b613471816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134c88160015461339e90919063ffffffff16565b6001819055508173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008083141561359957600090506135b8565b81830290508183828115156135aa57fe5b041415156135b457fe5b8090505b92915050565b60006135c985613d1a565b8473ffffffffffffffffffffffffffffffffffffffff1660405180807f7472616e7366657246726f6d28616464726573732c616464726573732c75696e81526020017f7432353629000000000000000000000000000000000000000000000000000000815250602501905060405180910390207c010000000000000000000000000000000000000000000000000000000090048585856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506000604051808303816000875af192505050151561371a57600080fd5b613722613d2a565b9050949350505050565b6000806000806000601260019054906101000a900460ff161515613766576001601260016101000a81548160ff0219169083151502179055505b600094506137d06008546137c2600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548961358690919063ffffffff16565b61327590919063ffffffff16565b93506137e660028761327590919063ffffffff16565b92505b6000841115613ad857601054841015156138205760105484039350600f548501945060006010819055506000600f81905550613875565b61384960065461383b8660115461358690919063ffffffff16565b61327590919063ffffffff16565b9150818501945081600f6000828254039250508190555083601060008282540392505081905550600093505b60006010541415613ad357601260029054906101000a900461ffff1661ffff16600e60149054906101000a900461ffff1661ffff16141561398757600454601260ff16600a0a6301406f4002039450600084111561397a57613933600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139256008548761358690919063ffffffff16565b61327590919063ffffffff16565b905061394960028261327590919063ffffffff16565b8303925061397833828973ffffffffffffffffffffffffffffffffffffffff1661328b9092919063ffffffff16565b505b613982613d5b565b613ad8565b600e601481819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff16021790555050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663576c3de7600e60149054906101000a900461ffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808261ffff1661ffff168152602001915050606060405180830381600087803b158015613a6557600080fd5b505af1158015613a79573d6000803e3d6000fd5b505050506040513d6060811015613a8f57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050600f600060106000601160008691905055859190505584919050555050505b6137e9565b846004600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff166340c10f1933876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613b8b57600080fd5b505af1158015613b9f573d6000803e3d6000fd5b505050506040513d6020811015613bb557600080fd5b810190808051906020019092919050505050613c14600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848973ffffffffffffffffffffffffffffffffffffffff1661328b9092919063ffffffff16565b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613c5a57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b803b1515613d2757600080fd5b50565b60003d60008114613d425760208114613d4b57600080fd5b60019150613d57565b60206000803e60005191505b5090565b600080600062278d0042016013819055506001601260046101000a81548160ff0219169083151502179055506000601260006101000a81548160ff0219169083151502179055506000601260016101000a81548160ff021916908315150217905550600092505b600b805490508361ffff161015613f6f57600b8361ffff16815481101515613de657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015613eae57600080fd5b505af1158015613ec2573d6000803e3d6000fd5b505050506040513d6020811015613ed857600080fd5b81019080805190602001909291905050509050613f1f613f10600754601260ff16600a0a6301406f400261327590919063ffffffff16565b8261327590919063ffffffff16565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508280600101935050613dc2565b7f4ebcdc2b14eacac39cf3ffaa28fc33f98e82cb4ce5d3002187b611b4d7a8b3986013546040518082815260200191505060405180910390a1505050565b815481835581811115613fd457818360005260206000209182019101613fd39190613fd9565b5b505050565b613ffb91905b80821115613ff7576000816000905550600101613fdf565b5090565b905600a165627a7a723058204d3849858211e7f42a8158ff5fb60dfac28fd4c1a90b6dd2ae14c1ba9469b5e60029
Deployed Bytecode
0x608060405260043610610272576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305d2035b1461027757806306fdde03146102a657806307989d5a14610336578063095ea7b31461038d57806312b27e3e146103f257806314bd63e61461042157806318160ddd146104785780631ef3755d146104a35780631f68f20a146104ba57806323b872dd146104e5578063254a46f41461056a578063313ce5671461059557806333a95d18146105c6578063382d4fc5146106095780633c4cd4b31461066057806340c10f19146106b157806342966c68146107165780634ae8ef06146107435780635338b3e4146107745780636140ca781461079f57806366188463146107ce5780636b8c926f1461083357806370a082311461088a578063715018a6146108e15780637159db81146108f8578063753868e31461092b578063790b855a146109425780637d64bcb41461096d5780637f99e11a1461099c5780638da5cb5b146109cb5780638f28397014610a225780639284280214610a6557806394b918de14610aa857806395d89b4114610ad5578063a30872db14610b65578063a9059cbb14610bbc578063ab27be2014610c21578063ba93d98014610c6e578063bc77edc214610c9d578063c4c39ba714610cf8578063d1b39ae514610d23578063d555654414610d4e578063d679677a14610d79578063d73dd62314610dac578063d98e299714610e11578063dd62ed3e14610e5e578063e05f64c714610ed5578063e733169614610f42578063efebc72014610f99578063f2fde38b14610fc4578063f851a44014611007578063f9f8bdb71461105e575b600080fd5b34801561028357600080fd5b5061028c611089565b604051808215151515815260200191505060405180910390f35b3480156102b257600080fd5b506102bb61109c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102fb5780820151818401526020810190506102e0565b50505050905090810190601f1680156103285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034257600080fd5b50610377600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d5565b6040518082815260200191505060405180910390f35b34801561039957600080fd5b506103d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110ed565b604051808215151515815260200191505060405180910390f35b3480156103fe57600080fd5b506104076111df565b604051808215151515815260200191505060405180910390f35b34801561042d57600080fd5b50610462600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111f2565b6040518082815260200191505060405180910390f35b34801561048457600080fd5b5061048d61120a565b6040518082815260200191505060405180910390f35b3480156104af57600080fd5b506104b8611214565b005b3480156104c657600080fd5b506104cf6114f3565b6040518082815260200191505060405180910390f35b3480156104f157600080fd5b50610550600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114f9565b604051808215151515815260200191505060405180910390f35b34801561057657600080fd5b5061057f6118b4565b6040518082815260200191505060405180910390f35b3480156105a157600080fd5b506105aa6118ba565b604051808260ff1660ff16815260200191505060405180910390f35b3480156105d257600080fd5b50610607600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118bf565b005b34801561061557600080fd5b5061061e61197b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561066c57600080fd5b506106af600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803561ffff1690602001909291905050506119a1565b005b3480156106bd57600080fd5b506106fc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bb4565b604051808215151515815260200191505060405180910390f35b34801561072257600080fd5b5061074160048036038101908080359060200190929190505050611d9a565b005b34801561074f57600080fd5b50610772600480360381019080803561ffff169060200190929190505050611da7565b005b34801561078057600080fd5b50610789611e3e565b6040518082815260200191505060405180910390f35b3480156107ab57600080fd5b506107cc600480360381019080803515159060200190929190505050611e44565b005b3480156107da57600080fd5b50610819600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ebd565b604051808215151515815260200191505060405180910390f35b34801561083f57600080fd5b50610874600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061214f565b6040518082815260200191505060405180910390f35b34801561089657600080fd5b506108cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612167565b6040518082815260200191505060405180910390f35b3480156108ed57600080fd5b506108f66121af565b005b34801561090457600080fd5b5061090d6122b4565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561093757600080fd5b506109406122c8565b005b34801561094e57600080fd5b50610957612383565b6040518082815260200191505060405180910390f35b34801561097957600080fd5b50610982612389565b604051808215151515815260200191505060405180910390f35b3480156109a857600080fd5b506109b1612451565b604051808215151515815260200191505060405180910390f35b3480156109d757600080fd5b506109e0612464565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a2e57600080fd5b50610a63600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061248a565b005b348015610a7157600080fd5b50610aa6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061252a565b005b348015610ab457600080fd5b50610ad3600480360381019080803590602001909291905050506125ca565b005b348015610ae157600080fd5b50610aea612718565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b2a578082015181840152602081019050610b0f565b50505050905090810190601f168015610b575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b7157600080fd5b50610b7a612751565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bc857600080fd5b50610c07600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612777565b604051808215151515815260200191505060405180910390f35b348015610c2d57600080fd5b50610c6c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612997565b005b348015610c7a57600080fd5b50610c83612a92565b604051808215151515815260200191505060405180910390f35b348015610ca957600080fd5b50610cf6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803561ffff169060200190929190505050612aa5565b005b348015610d0457600080fd5b50610d0d612c39565b6040518082815260200191505060405180910390f35b348015610d2f57600080fd5b50610d38612c4a565b6040518082815260200191505060405180910390f35b348015610d5a57600080fd5b50610d63612c50565b6040518082815260200191505060405180910390f35b348015610d8557600080fd5b50610d8e612c56565b604051808261ffff1661ffff16815260200191505060405180910390f35b348015610db857600080fd5b50610df7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c6a565b604051808215151515815260200191505060405180910390f35b348015610e1d57600080fd5b50610e5c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612e66565b005b348015610e6a57600080fd5b50610ebf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130f0565b6040518082815260200191505060405180910390f35b348015610ee157600080fd5b50610f0060048036038101908080359060200190929190505050613177565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610f4e57600080fd5b50610f576131b5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fa557600080fd5b50610fae6131db565b6040518082815260200191505060405180910390f35b348015610fd057600080fd5b50611005600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131e1565b005b34801561101357600080fd5b5061101c613249565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561106a57600080fd5b5061107361326f565b6040518082815260200191505060405180910390f35b600360149054906101000a900460ff1681565b6040805190810160405280600e81526020017f467574657265756d20425443203100000000000000000000000000000000000081525081565b60146020528060005260406000206000915090505481565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b601260019054906101000a900460ff1681565b600a6020528060005260406000206000915090505481565b6000600154905090565b6000806000601260049054906101000a900460ff16151561123457600080fd5b60135442118061124657506000600454145b151561125157600080fd5b60006004819055506000601260046101000a81548160ff02191690831515021790555060006013819055506001601260006101000a81548160ff021916908315150217905550600092505b600b805490508361ffff16101561143357600b8361ffff168154811015156112c057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561138857600080fd5b505af115801561139c573d6000803e3d6000fd5b505050506040513d60208110156113b257600080fd5b81019080805190602001909291905050509050611425600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113ff60058461327590919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff1661328b9092919063ffffffff16565b50828060010193505061129c565b6001600e60146101000a81548161ffff021916908361ffff160217905550675b8d408c2f408000600f819055506683185ac036400060108190555061149961148860065460105461327590919063ffffffff16565b600f5461327590919063ffffffff16565b6011819055507f7c21b0680bbd6c26c90041bb7a12b28c6c59067ff32b59fccf5ab16b2a76f0da600e60149054906101000a900461ffff16604051808261ffff1661ffff16815260200191505060405180910390a1505050565b60085481565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561154857600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156115d357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561160f57600080fd5b611660826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116f3826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b790919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117c482600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60045481565b601281565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561191b57600080fd5b601260019054906101000a900460ff1615151561193757600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119fd57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600b8261ffff16815481101515611a2757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611a7457600080fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b6001600b8054905003815481101515611ad057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b8261ffff16815481101515611b0e57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b6001600b8054905003815481101515611b6d57fe5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600b805480919060019003611baf9190613fad565b505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c1257600080fd5b600360149054906101000a900460ff16151515611c2e57600080fd5b611c43826001546133b790919063ffffffff16565b600181905550611c9a826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b790919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b611da433826133d3565b50565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e0357600080fd5b601260049054906101000a900460ff161515611e1e57600080fd5b80601260026101000a81548161ffff021916908361ffff16021790555050565b60105481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ea057600080fd5b80601260006101000a81548160ff02191690831515021790555050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083101515611fcf576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612063565b611fe2838261339e90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60096020528060005260406000206000915090505481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561220b57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601260029054906101000a900461ffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561232457600080fd5b601260019054906101000a900460ff16151561233f57600080fd5b6000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123e757600080fd5b600360149054906101000a900460ff1615151561240357600080fd5b6001600360146101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b601260009054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124e657600080fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561258657600080fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080601260049054906101000a900460ff1680156125eb57506000600454115b15156125f657600080fd5b6004548311156126065760045492505b8260046000828254039250508190555061261f83611d9a565b600091505b600b805490508261ffff16101561271357600b8261ffff1681548110151561264857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612705336126df6007546126d1601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548861358690919063ffffffff16565b61327590919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff1661328b9092919063ffffffff16565b508180600101925050612624565b505050565b6040805190810160405280600581526020017f465554423100000000000000000000000000000000000000000000000000000081525081565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156127c657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561280257600080fd5b612853826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128e6826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b790919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b601260009054906101000a900460ff1615156129b257600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156129d95750600081115b15156129e457600080fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015612a415750601260ff16600a0a6301406f4002600454105b1515612a4c57600080fd5b612a793330838573ffffffffffffffffffffffffffffffffffffffff166135be909392919063ffffffff16565b1515612a8457600080fd5b612a8e828261372c565b5050565b601260049054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b0157600080fd5b8273ffffffffffffffffffffffffffffffffffffffff16600b8261ffff16815481101515612b2b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612b7a575061271082105b1515612b8557600080fd5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f872923cd0be004fcfa809f0ac261cfd47842a03ffb0a22a3beb3dcd0fa410a938383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050565b601260ff16600a0a6301406f400281565b60075481565b60065481565b600e60149054906101000a900461ffff1681565b6000612cfb82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b790919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ec557600080fd5b6000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148015612f145750600083115b8015612f21575061271083105b1515612f2c57600080fd5b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060009150600090505b600b805490508161ffff161015613011578373ffffffffffffffffffffffffffffffffffffffff16600b8261ffff16815481101515612fb457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156130045760019150613011565b8080600101915050612f79565b81151561307f57600b8490806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b7f1e09227a907110e3a9dc0325bfc6b253af956f5d8c1a9d17c2f147654d1196de8484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b8181548110151561318657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561323d57600080fd5b61324681613c1e565b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b6000818381151561328257fe5b04905092915050565b600061329684613d1a565b8373ffffffffffffffffffffffffffffffffffffffff1660405180807f7472616e7366657228616464726573732c75696e743235362900000000000000815250601901905060405180910390207c0100000000000000000000000000000000000000000000000000000000900484846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506000604051808303816000875af192505050151561338d57600080fd5b613395613d2a565b90509392505050565b60008282111515156133ac57fe5b818303905092915050565b600081830190508281101515156133ca57fe5b80905092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561342057600080fd5b613471816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134c88160015461339e90919063ffffffff16565b6001819055508173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008083141561359957600090506135b8565b81830290508183828115156135aa57fe5b041415156135b457fe5b8090505b92915050565b60006135c985613d1a565b8473ffffffffffffffffffffffffffffffffffffffff1660405180807f7472616e7366657246726f6d28616464726573732c616464726573732c75696e81526020017f7432353629000000000000000000000000000000000000000000000000000000815250602501905060405180910390207c010000000000000000000000000000000000000000000000000000000090048585856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506000604051808303816000875af192505050151561371a57600080fd5b613722613d2a565b9050949350505050565b6000806000806000601260019054906101000a900460ff161515613766576001601260016101000a81548160ff0219169083151502179055505b600094506137d06008546137c2600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548961358690919063ffffffff16565b61327590919063ffffffff16565b93506137e660028761327590919063ffffffff16565b92505b6000841115613ad857601054841015156138205760105484039350600f548501945060006010819055506000600f81905550613875565b61384960065461383b8660115461358690919063ffffffff16565b61327590919063ffffffff16565b9150818501945081600f6000828254039250508190555083601060008282540392505081905550600093505b60006010541415613ad357601260029054906101000a900461ffff1661ffff16600e60149054906101000a900461ffff1661ffff16141561398757600454601260ff16600a0a6301406f4002039450600084111561397a57613933600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139256008548761358690919063ffffffff16565b61327590919063ffffffff16565b905061394960028261327590919063ffffffff16565b8303925061397833828973ffffffffffffffffffffffffffffffffffffffff1661328b9092919063ffffffff16565b505b613982613d5b565b613ad8565b600e601481819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff16021790555050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663576c3de7600e60149054906101000a900461ffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808261ffff1661ffff168152602001915050606060405180830381600087803b158015613a6557600080fd5b505af1158015613a79573d6000803e3d6000fd5b505050506040513d6060811015613a8f57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050600f600060106000601160008691905055859190505584919050555050505b6137e9565b846004600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff166340c10f1933876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613b8b57600080fd5b505af1158015613b9f573d6000803e3d6000fd5b505050506040513d6020811015613bb557600080fd5b810190808051906020019092919050505050613c14600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848973ffffffffffffffffffffffffffffffffffffffff1661328b9092919063ffffffff16565b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613c5a57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b803b1515613d2757600080fd5b50565b60003d60008114613d425760208114613d4b57600080fd5b60019150613d57565b60206000803e60005191505b5090565b600080600062278d0042016013819055506001601260046101000a81548160ff0219169083151502179055506000601260006101000a81548160ff0219169083151502179055506000601260016101000a81548160ff021916908315150217905550600092505b600b805490508361ffff161015613f6f57600b8361ffff16815481101515613de657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015613eae57600080fd5b505af1158015613ec2573d6000803e3d6000fd5b505050506040513d6020811015613ed857600080fd5b81019080805190602001909291905050509050613f1f613f10600754601260ff16600a0a6301406f400261327590919063ffffffff16565b8261327590919063ffffffff16565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508280600101935050613dc2565b7f4ebcdc2b14eacac39cf3ffaa28fc33f98e82cb4ce5d3002187b611b4d7a8b3986013546040518082815260200191505060405180910390a1505050565b815481835581811115613fd457818360005260206000209182019101613fd39190613fd9565b5b505050565b613ffb91905b80821115613ff7576000816000905550600101613fdf565b5090565b905600a165627a7a723058204d3849858211e7f42a8158ff5fb60dfac28fd4c1a90b6dd2ae14c1ba9469b5e60029
Swarm Source
bzzr://4d3849858211e7f42a8158ff5fb60dfac28fd4c1a90b6dd2ae14c1ba9469b5e6
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.