ETH Price: $3,432.31 (-1.55%)

Token

platment (PTMT)
 

Overview

Max Total Supply

10,000,000,000 PTMT

Holders

16

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
62,100 PTMT

Value
$0.00
0x37E87aA11288F975e45eA54ac8e3c0165aF9048B
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PTMT

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-10-17
*/

pragma solidity ^0.4.25;

/*
*
*
*  ___ _      _                 _
*  | _ \ |__ _| |_ _ __  ___ _ _| |_
*  |  _/ / _` |  _| '  \/ -_) ' \  _|
*  |_| |_\__,_|\__|_|_|_\___|_||_\__|
*
*
*/

// SafeMath methods
library SafeMath {
    function add(uint256 _a, uint256 _b) internal pure returns (uint256) {
        uint256 c = _a + _b;
        assert(c >= _a);
        return c;
    }

    function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
        assert(_a >= _b);
        return _a - _b;
    }

    function mul(uint256 _a, uint256 _b) internal pure returns (uint256) {
        uint256 c = _a * _b;
        assert(_a == 0 || c / _a == _b);
        return c;
    }
}

// Contract must have an owner
contract Owned {
    address public owner;

    constructor() public {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    function setOwner(address _owner) onlyOwner public {
        owner = _owner;
    }
}

// Standard ERC20 Token Interface
interface ERC20Token {
    function name() external view returns (string name_);
    function symbol() external view returns (string symbol_);
    function decimals() external view returns (uint8 decimals_);
    function totalSupply() external view returns (uint256 totalSupply_);
    function balanceOf(address _owner) external view returns (uint256 _balance);
    function transfer(address _to, uint256 _value) external returns (bool _success);
    function transferFrom(address _from, address _to, uint256 _value) external returns (bool _success);
    function approve(address _spender, uint256 _value) external returns (bool _success);
    function allowance(address _owner, address _spender) external view returns (uint256 _remaining);

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

// the main ERC20-compliant multi-timelock enabled contract
contract PTMT is Owned, ERC20Token {
    using SafeMath for uint256;

    string private constant standard = "201810ef30de";
    string private constant version = "5.01c6c57";
    string private name_ = "platment";
    string private symbol_ = "PTMT";
    uint8 private decimals_ = 18;
    uint256 private totalSupply_ = uint256(10)**uint256(10) * uint256(10)**uint256(decimals_);
    mapping (address => uint256) private balanceP;
    mapping (address => mapping (address => uint256)) private allowed;

    mapping (address => uint256[]) private lockTime;
    mapping (address => uint256[]) private lockValue;
    mapping (address => uint256) private lockNum;
    uint256 private later = 0;
    uint256 private earlier = 0;

    // burn token event
    event Burn(address indexed _from, uint256 _value);

    // timelock-related events
    event TransferLocked(address indexed _from, address indexed _to, uint256 _time, uint256 _value);
    event TokenUnlocked(address indexed _address, uint256 _value);

    // safety method-related events
    event WrongTokenEmptied(address indexed _token, address indexed _addr, uint256 _amount);
    event WrongEtherEmptied(address indexed _addr, uint256 _amount);

    // constructor for the ERC20 Token
    constructor() public {
        balanceP[msg.sender] = totalSupply_;
    }

    modifier validAddress(address _address) {
        require(_address != 0x0);
        _;
    }

    // fast-forward the timelocks for all accounts
    function setUnlockEarlier(uint256 _earlier) public onlyOwner {
        earlier = earlier.add(_earlier);
    }

    // delay the timelocks for all accounts
    function setUnlockLater(uint256 _later) public onlyOwner {
        later = later.add(_later);
    }

    // standard ERC20 name function
    function name() public view returns (string) {
        return name_;
    }

    // standard ERC20 symbol function
    function symbol() public view returns (string) {
        return symbol_;
    }

    // standard ERC20 decimals function
    function decimals() public view returns (uint8) {
        return decimals_;
    }

    // standard ERC20 totalSupply function
    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }

    // standard ERC20 allowance function
    function allowance(address _owner, address _spender) external view returns (uint256) {
        return allowed[_owner][_spender];
    }

    // show unlocked balance of an account
    function balanceUnlocked(address _address) public view returns (uint256 _balance) {
        _balance = balanceP[_address];
        uint256 i = 0;
        while (i < lockNum[_address]) {
            if (now.add(earlier) >= lockTime[_address][i].add(later)) _balance = _balance.add(lockValue[_address][i]);
            i++;
        }
        return _balance;
    }

    // show timelocked balance of an account
    function balanceLocked(address _address) public view returns (uint256 _balance) {
        _balance = 0;
        uint256 i = 0;
        while (i < lockNum[_address]) {
            if (now.add(earlier) < lockTime[_address][i].add(later)) _balance = _balance.add(lockValue[_address][i]);
            i++;
        }
        return  _balance;
    }

    // standard ERC20 balanceOf with timelock added
    function balanceOf(address _address) public view returns (uint256 _balance) {
        _balance = balanceP[_address];
        uint256 i = 0;
        while (i < lockNum[_address]) {
            _balance = _balance.add(lockValue[_address][i]);
            i++;
        }
        return _balance;
    }

    // show timelocks in an account
    function showLockTimes(address _address) public view validAddress(_address) returns (uint256[] _times) {
        uint i = 0;
        uint256[] memory tempLockTime = new uint256[](lockNum[_address]);
        while (i < lockNum[_address]) {
            tempLockTime[i] = lockTime[_address][i].add(later).sub(earlier);
            i++;
        }
        return tempLockTime;
    }

    // show values locked in an account's timelocks
    function showLockValues(address _address) public view validAddress(_address) returns (uint256[] _values) {
        return lockValue[_address];
    }

    function showLockNum(address _address) public view validAddress(_address) returns (uint256 _lockNum) {
        return lockNum[_address];
    }

    // Calculate and process the timelock states of an account
    function calcUnlock(address _address) private {
        uint256 i = 0;
        uint256 j = 0;
        uint256[] memory currentLockTime;
        uint256[] memory currentLockValue;
        uint256[] memory newLockTime = new uint256[](lockNum[_address]);
        uint256[] memory newLockValue = new uint256[](lockNum[_address]);
        currentLockTime = lockTime[_address];
        currentLockValue = lockValue[_address];
        while (i < lockNum[_address]) {
            if (now.add(earlier) >= currentLockTime[i].add(later)) {
                balanceP[_address] = balanceP[_address].add(currentLockValue[i]);
                emit TokenUnlocked(_address, currentLockValue[i]);
            } else {
                newLockTime[j] = currentLockTime[i];
                newLockValue[j] = currentLockValue[i];
                j++;
            }
            i++;
        }
        uint256[] memory trimLockTime = new uint256[](j);
        uint256[] memory trimLockValue = new uint256[](j);
        i = 0;
        while (i < j) {
            trimLockTime[i] = newLockTime[i];
            trimLockValue[i] = newLockValue[i];
            i++;
        }
        lockTime[_address] = trimLockTime;
        lockValue[_address] = trimLockValue;
        lockNum[_address] = j;
    }

    // standard ERC20 transfer
    function transfer(address _to, uint256 _value) public validAddress(_to) returns (bool _success) {
        if (lockNum[msg.sender] > 0) calcUnlock(msg.sender);
        require(balanceP[msg.sender] >= _value && _value >= 0);
        balanceP[msg.sender] = balanceP[msg.sender].sub(_value);
        balanceP[_to] = balanceP[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);
        return true;
    }

    // transfer Token with timelocks
    function transferLocked(address _to, uint256[] _time, uint256[] _value) public validAddress(_to) returns (bool _success) {
        require(_value.length == _time.length);

        if (lockNum[msg.sender] > 0) calcUnlock(msg.sender);
        uint256 i = 0;
        uint256 totalValue = 0;
        while (i < _value.length) {
            totalValue = totalValue.add(_value[i]);
            i++;
        }
        require(balanceP[msg.sender] >= totalValue && totalValue >= 0);
        require(lockNum[_to].add(_time.length) <= 42);
        i = 0;
        while (i < _time.length) {
            if (_value[i] > 0) {
                balanceP[msg.sender] = balanceP[msg.sender].sub(_value[i]);
                lockTime[_to].length = lockNum[_to]+1;
                lockValue[_to].length = lockNum[_to]+1;
                lockTime[_to][lockNum[_to]] = now.add(_time[i]).add(earlier).sub(later);
                lockValue[_to][lockNum[_to]] = _value[i];
                lockNum[_to]++;
            }

            // emit custom TransferLocked event
            emit TransferLocked(msg.sender, _to, _time[i], _value[i]);

            // emit standard Transfer event for wallets
            emit Transfer(msg.sender, _to, _value[i]);

            i++;
        }
        return true;
    }

    // TransferFrom Token with timelocks
    function transferLockedFrom(address _from, address _to, uint256[] _time, uint256[] _value) public
	    validAddress(_from) validAddress(_to) returns (bool success) {
        require(_value.length == _time.length);

        if (lockNum[_from] > 0) calcUnlock(_from);
        uint256 i = 0;
        uint256 totalValue = 0;
        while (i < _value.length) {
            totalValue = totalValue.add(_value[i]);
            i++;
        }
        require(balanceP[_from] >= totalValue && totalValue >= 0 && allowed[_from][msg.sender] >= totalValue);
        require(lockNum[_to].add(_time.length) <= 42);
        i = 0;
        while (i < _time.length) {
            if (_value[i] > 0) {
                balanceP[_from] = balanceP[_from].sub(_value[i]);
                allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value[i]);
                lockTime[_to].length = lockNum[_to]+1;
                lockValue[_to].length = lockNum[_to]+1;
                lockTime[_to][lockNum[_to]] = now.add(_time[i]).add(earlier).sub(later);
                lockValue[_to][lockNum[_to]] = _value[i];
                lockNum[_to]++;
            }

            // emit custom TransferLocked event
            emit TransferLocked(_from, _to, _time[i], _value[i]);

            // emit standard Transfer event for wallets
            emit Transfer(_from, _to, _value[i]);

            i++;
        }
        return true;
    }

    // standard ERC20 transferFrom
    function transferFrom(address _from, address _to, uint256 _value) public validAddress(_from) validAddress(_to) returns (bool _success) {
        if (lockNum[_from] > 0) calcUnlock(_from);
        require(balanceP[_from] >= _value && _value >= 0 && allowed[_from][msg.sender] >= _value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        balanceP[_from] = balanceP[_from].sub(_value);
        balanceP[_to] = balanceP[_to].add(_value);
        emit Transfer(_from, _to, _value);
        return true;
    }

    // should only be called when first setting an allowed
    function approve(address _spender, uint256 _value) public validAddress(_spender) returns (bool _success) {
        if (lockNum[msg.sender] > 0) calcUnlock(msg.sender);
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    // increase or decrease allowed
    function increaseApproval(address _spender, uint _value) public validAddress(_spender) returns (bool _success) {
        allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_value);
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    function decreaseApproval(address _spender, uint _value) public validAddress(_spender) returns (bool _success) {
        if(_value >= allowed[msg.sender][_spender]) {
            allowed[msg.sender][_spender] = 0;
        } else {
            allowed[msg.sender][_spender] = allowed[msg.sender][_spender].sub(_value);
        }
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    // owner may burn own token
    function burn(uint256 _value) public onlyOwner returns (bool _success) {
        if (lockNum[msg.sender] > 0) calcUnlock(msg.sender);
        require(balanceP[msg.sender] >= _value && _value >= 0);
        balanceP[msg.sender] = balanceP[msg.sender].sub(_value);
        totalSupply_ = totalSupply_.sub(_value);
        emit Burn(msg.sender, _value);
        return true;
    }

    // safety methods
    function () public payable {
        revert();
    }

    function emptyWrongToken(address _addr) onlyOwner public {
        ERC20Token wrongToken = ERC20Token(_addr);
        uint256 amount = wrongToken.balanceOf(address(this));
        require(amount > 0);
        require(wrongToken.transfer(msg.sender, amount));

        emit WrongTokenEmptied(_addr, msg.sender, amount);
    }

    // shouldn't happen, just in case
    function emptyWrongEther() onlyOwner public {
        uint256 amount = address(this).balance;
        require(amount > 0);
        msg.sender.transfer(amount);

        emit WrongEtherEmptied(msg.sender, amount);
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"balanceUnlocked","outputs":[{"name":"_balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_time","type":"uint256[]"},{"name":"_value","type":"uint256[]"}],"name":"transferLockedFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"balanceLocked","outputs":[{"name":"_balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"balanceOf","outputs":[{"name":"_balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_time","type":"uint256[]"},{"name":"_value","type":"uint256[]"}],"name":"transferLocked","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"showLockTimes","outputs":[{"name":"_times","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"showLockValues","outputs":[{"name":"_values","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_later","type":"uint256"}],"name":"setUnlockLater","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"emptyWrongToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"emptyWrongEther","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":false,"inputs":[{"name":"_earlier","type":"uint256"}],"name":"setUnlockEarlier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"showLockNum","outputs":[{"name":"_lockNum","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_time","type":"uint256"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"TransferLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_address","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"TokenUnlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_token","type":"address"},{"indexed":true,"name":"_addr","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"WrongTokenEmptied","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_addr","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"WrongEtherEmptied","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]

60c0604052600860808190527f706c61746d656e7400000000000000000000000000000000000000000000000060a0908152620000409160019190620000ed565b506040805180820190915260048082527f50544d540000000000000000000000000000000000000000000000000000000060209092019182526200008791600291620000ed565b5060038054601260ff19909116179081905560ff16600a90810a6402540be40002600455600090819055600b55348015620000c157600080fd5b5060008054600160a060020a031916339081178255600454908252600560205260409091205562000192565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013057805160ff191683800117855562000160565b8280016001018555821562000160579182015b828111156200016057825182559160200191906001019062000143565b506200016e92915062000172565b5090565b6200018f91905b808211156200016e576000815560010162000179565b90565b61212880620001a26000396000f3006080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630451f520811461014d57806306fdde0314610180578063095ea7b31461020a5780630fce887b1461024257806313af4035146102e657806318160ddd1461030957806323b872dd1461031e578063313ce5671461034857806342966c68146103735780635fc3a3121461038b57806366188463146103ac57806370a08231146103d05780638da5cb5b146103f157806395d89b4114610422578063a9059cbb14610437578063b91aedab1461045b578063b9c5416d146104f7578063c9e6bd3414610568578063ca0cd7c014610589578063d7290181146105a1578063d73dd623146105c2578063d80b2056146105e6578063dd62ed3e146105fb578063df51d46b14610622578063fb276fcf1461063a575b600080fd5b34801561015957600080fd5b5061016e600160a060020a036004351661065b565b60408051918252519081900360200190f35b34801561018c57600080fd5b50610195610749565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101cf5781810151838201526020016101b7565b50505050905090810190601f1680156101fc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021657600080fd5b5061022e600160a060020a03600435166024356107df565b604080519115158252519081900360200190f35b34801561024e57600080fd5b50604080516020600460443581810135838102808601850190965280855261022e958335600160a060020a039081169660248035909216963696956064959294930192829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375094975061087e9650505050505050565b3480156102f257600080fd5b50610307600160a060020a0360043516610cfe565b005b34801561031557600080fd5b5061016e610d44565b34801561032a57600080fd5b5061022e600160a060020a0360043581169060243516604435610d4a565b34801561035457600080fd5b5061035d610efe565b6040805160ff9092168252519081900360200190f35b34801561037f57600080fd5b5061022e600435610f07565b34801561039757600080fd5b5061016e600160a060020a0360043516610fed565b3480156103b857600080fd5b5061022e600160a060020a036004351660243561108c565b3480156103dc57600080fd5b5061016e600160a060020a03600435166111b6565b3480156103fd57600080fd5b50610406611224565b60408051600160a060020a039092168252519081900360200190f35b34801561042e57600080fd5b50610195611233565b34801561044357600080fd5b5061022e600160a060020a0360043516602435611291565b34801561046757600080fd5b5060408051602060046024803582810135848102808701860190975280865261022e968435600160a060020a031696369660449591949091019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506113929650505050505050565b34801561050357600080fd5b50610518600160a060020a0360043516611710565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561055457818101518382015260200161053c565b505050509050019250505060405180910390f35b34801561057457600080fd5b50610518600160a060020a0360043516611802565b34801561059557600080fd5b50610307600435611885565b3480156105ad57600080fd5b50610307600160a060020a03600435166118b5565b3480156105ce57600080fd5b5061022e600160a060020a0360043516602435611a52565b3480156105f257600080fd5b50610307611a9e565b34801561060757600080fd5b5061016e600160a060020a0360043581169060243516611b2d565b34801561062e57600080fd5b50610307600435611b58565b34801561064657600080fd5b5061016e600160a060020a0360043516611b88565b600160a060020a038116600090815260056020526040812054905b600160a060020a03831660009081526009602052604090205481101561074357600a54600160a060020a038416600090815260076020526040902080546106dc929190849081106106c357fe5b9060005260206000200154611bbd90919063ffffffff16565b600b546106f090429063ffffffff611bbd16565b1061073b57600160a060020a0383166000908152600860205260409020805461073891908390811061071e57fe5b906000526020600020015483611bbd90919063ffffffff16565b91505b600101610676565b50919050565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156107d45780601f106107a9576101008083540402835291602001916107d4565b820191906000526020600020905b8154815290600101906020018083116107b757829003601f168201915b505050505090505b90565b600082600160a060020a03811615156107f757600080fd5b3360009081526009602052604081205411156108165761081633611bd3565b336000818152600660209081526040808320600160a060020a03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000808086600160a060020a038116151561089857600080fd5b86600160a060020a03811615156108ae57600080fd5b86518651146108bc57600080fd5b600160a060020a03891660009081526009602052604081205411156108e4576108e489611bd3565b60009350600092505b855184101561092b5761091e868581518110151561090757fe5b60209081029091010151849063ffffffff611bbd16565b60019094019392506108ed565b600160a060020a0389166000908152600560205260409020548311801590610954575060008310155b80156109835750600160a060020a03891660009081526006602090815260408083203384529091529020548311155b151561098e57600080fd5b8651600160a060020a038916600090815260096020526040902054602a916109bc919063ffffffff611bbd16565b11156109c757600080fd5b600093505b8651841015610cef57600086858151811015156109e557fe5b906020019060200201511115610c1a57610a378685815181101515610a0657fe5b6020908102909101810151600160a060020a038c16600090815260059092526040909120549063ffffffff61203c16565b600160a060020a038a166000908152600560205260409020558551610a9c90879086908110610a6257fe5b6020908102909101810151600160a060020a038c16600090815260068352604080822033835290935291909120549063ffffffff61203c16565b600160a060020a03808b166000908152600660209081526040808320338452825280832094909455918b1681526009825282812054600790925291909120600190910190610aea908261204e565b50600160a060020a0388166000908152600960209081526040808320546008909252909120600190910190610b1f908261204e565b50610b6c600a54610b60600b54610b548b89815181101515610b3d57fe5b60209081029091010151429063ffffffff611bbd16565b9063ffffffff611bbd16565b9063ffffffff61203c16565b600160a060020a038916600090815260076020908152604080832060099092529091205481548110610b9a57fe5b6000918252602090912001558551869085908110610bb457fe5b6020908102909101810151600160a060020a038a166000908152600883526040808220600990945290205482549192918110610bec57fe5b6000918252602080832090910192909255600160a060020a038a168152600990915260409020805460010190555b87600160a060020a031689600160a060020a03167f34c966766e471b87b7ce8d0d0358378cf20008a30bbb36246a3413c8a286834e8987815181101515610c5d57fe5b906020019060200201518988815181101515610c7557fe5b602090810290910181015160408051938452918301528051918290030190a387600160a060020a031689600160a060020a03166000805160206120dd8339815191528887815181101515610cc557fe5b906020019060200201516040518082815260200191505060405180910390a36001909301926109cc565b50600198975050505050505050565b600054600160a060020a03163314610d1557600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60045490565b600083600160a060020a0381161515610d6257600080fd5b83600160a060020a0381161515610d7857600080fd5b600160a060020a0386166000908152600960205260408120541115610da057610da086611bd3565b600160a060020a0386166000908152600560205260409020548411801590610dc9575060008410155b8015610df85750600160a060020a03861660009081526006602090815260408083203384529091529020548411155b1515610e0357600080fd5b600160a060020a0386166000908152600660209081526040808320338452909152902054610e37908563ffffffff61203c16565b600160a060020a038716600081815260066020908152604080832033845282528083209490945591815260059091522054610e78908563ffffffff61203c16565b600160a060020a038088166000908152600560205260408082209390935590871681522054610ead908563ffffffff611bbd16565b600160a060020a0380871660008181526005602090815260409182902094909455805188815290519193928a16926000805160206120dd83398151915292918290030190a350600195945050505050565b60035460ff1690565b60008054600160a060020a03163314610f1f57600080fd5b336000908152600960205260408120541115610f3e57610f3e33611bd3565b336000908152600560205260409020548211801590610f5e575060008210155b1515610f6957600080fd5b33600090815260056020526040902054610f89908363ffffffff61203c16565b33600090815260056020526040902055600454610fac908363ffffffff61203c16565b60045560408051838152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2506001919050565b6000805b600160a060020a03831660009081526009602052604090205481101561074357600a54600160a060020a0384166000908152600760205260409020805461103e929190849081106106c357fe5b600b5461105290429063ffffffff611bbd16565b101561108457600160a060020a0383166000908152600860205260409020805461108191908390811061071e57fe5b91505b600101610ff1565b600082600160a060020a03811615156110a457600080fd5b336000908152600660209081526040808320600160a060020a038816845290915290205483106110f757336000908152600660209081526040808320600160a060020a0388168452909152812055611150565b336000908152600660209081526040808320600160a060020a038816845290915290205461112b908463ffffffff61203c16565b336000908152600660209081526040808320600160a060020a03891684529091529020555b336000818152600660209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160a060020a038116600090815260056020526040812054905b600160a060020a03831660009081526009602052604090205481101561074357600160a060020a0383166000908152600860205260409020805461121a91908390811061071e57fe5b91506001016111d1565b600054600160a060020a031681565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156107d45780601f106107a9576101008083540402835291602001916107d4565b600082600160a060020a03811615156112a957600080fd5b3360009081526009602052604081205411156112c8576112c833611bd3565b3360009081526005602052604090205483118015906112e8575060008310155b15156112f357600080fd5b33600090815260056020526040902054611313908463ffffffff61203c16565b3360009081526005602052604080822092909255600160a060020a03861681522054611345908463ffffffff611bbd16565b600160a060020a0385166000818152600560209081526040918290209390935580518681529051919233926000805160206120dd8339815191529281900390910190a35060019392505050565b6000808085600160a060020a03811615156113ac57600080fd5b85518551146113ba57600080fd5b3360009081526009602052604081205411156113d9576113d933611bd3565b60009250600091505b84518310156114205761141385848151811015156113fc57fe5b60209081029091010151839063ffffffff611bbd16565b60019093019291506113e2565b336000908152600560205260409020548211801590611440575060008210155b151561144b57600080fd5b8551600160a060020a038816600090815260096020526040902054602a91611479919063ffffffff611bbd16565b111561148457600080fd5b600092505b855183101561170357600085848151811015156114a257fe5b90602001906020020151111561162e576114eb85848151811015156114c357fe5b602090810290910181015133600090815260059092526040909120549063ffffffff61203c16565b33600090815260056020908152604080832093909355600160a060020a038a1682526009815282822054600790915291902060019091019061152d908261204e565b50600160a060020a0387166000908152600960209081526040808320546008909252909120600190910190611562908261204e565b50611580600a54610b60600b54610b548a88815181101515610b3d57fe5b600160a060020a0388166000908152600760209081526040808320600990925290912054815481106115ae57fe5b60009182526020909120015584518590849081106115c857fe5b6020908102909101810151600160a060020a038916600090815260088352604080822060099094529020548254919291811061160057fe5b6000918252602080832090910192909255600160a060020a0389168152600990915260409020805460010190555b86600160a060020a031633600160a060020a03167f34c966766e471b87b7ce8d0d0358378cf20008a30bbb36246a3413c8a286834e888681518110151561167157fe5b90602001906020020151888781518110151561168957fe5b602090810290910181015160408051938452918301528051918290030190a386600160a060020a031633600160a060020a03166000805160206120dd83398151915287868151811015156116d957fe5b906020019060200201516040518082815260200191505060405180910390a3600190920191611489565b5060019695505050505050565b606060008183600160a060020a038116151561172b57600080fd5b600092506009600086600160a060020a0316600160a060020a031681526020019081526020016000205460405190808252806020026020018201604052801561177e578160200160208202803883390190505b5091505b600160a060020a0385166000908152600960205260409020548310156117fa57600b54600a54600160a060020a038716600090815260076020526040902080546117d79392610b60929091889081106106c357fe5b82848151811015156117e557fe5b60209081029091010152600190920191611782565b509392505050565b606081600160a060020a038116151561181a57600080fd5b600160a060020a0383166000908152600860209081526040918290208054835181840281018401909452808452909183018282801561187857602002820191906000526020600020905b815481526020019060010190808311611864575b5050505050915050919050565b600054600160a060020a0316331461189c57600080fd5b600a546118af908263ffffffff611bbd16565b600a5550565b600080548190600160a060020a031633146118cf57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561193357600080fd5b505af1158015611947573d6000803e3d6000fd5b505050506040513d602081101561195d57600080fd5b505190506000811161196e57600080fd5b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051600160a060020a0384169163a9059cbb9160448083019260209291908290030181600087803b1580156119d657600080fd5b505af11580156119ea573d6000803e3d6000fd5b505050506040513d6020811015611a0057600080fd5b50511515611a0d57600080fd5b6040805182815290513391600160a060020a038616917f5d8daa04d680e083e2ab17a35494ba9f290f554edf76a78f0103a8a599b5c4249181900360200190a3505050565b600082600160a060020a0381161515611a6a57600080fd5b336000908152600660209081526040808320600160a060020a038816845290915290205461112b908463ffffffff611bbd16565b60008054600160a060020a03163314611ab657600080fd5b50303160008111611ac657600080fd5b604051339082156108fc029083906000818181858888f19350505050158015611af3573d6000803e3d6000fd5b5060408051828152905133917faea7a96dc17068a25e51e08f8ed45b86bd34b10af65af8e757af57b7e7b9e55d919081900360200190a250565b600160a060020a03918216600090815260066020908152604080832093909416825291909152205490565b600054600160a060020a03163314611b6f57600080fd5b600b54611b82908263ffffffff611bbd16565b600b5550565b600081600160a060020a0381161515611ba057600080fd5b5050600160a060020a031660009081526009602052604090205490565b600082820183811015611bcc57fe5b9392505050565b6000806060806060806060806000975060009650600960008a600160a060020a0316600160a060020a0316815260200190815260200160002054604051908082528060200260200182016040528015611c36578160200160208202803883390190505b509350600960008a600160a060020a0316600160a060020a0316815260200190815260200160002054604051908082528060200260200182016040528015611c88578160200160208202803883390190505b50600160a060020a038a166000908152600760209081526040918290208054835181840281018401909452808452939650919290830182828015611ceb57602002820191906000526020600020905b815481526020019060010190808311611cd7575b50505050509550600860008a600160a060020a0316600160a060020a03168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015611d6157602002820191906000526020600020905b815481526020019060010190808311611d4d575b505050505094505b600160a060020a038916600090815260096020526040902054881015611ef057611db3600a54878a815181101515611d9d57fe5b602090810290910101519063ffffffff611bbd16565b600b54611dc790429063ffffffff611bbd16565b10611e7e57611e0e8589815181101515611ddd57fe5b6020908102909101810151600160a060020a038c16600090815260059092526040909120549063ffffffff611bbd16565b600160a060020a038a1660008181526005602052604090209190915585517f613edbda9d1e6bda8af8e869a973f88cccf93854a11f351589038de07e1ab4e39087908b908110611e5a57fe5b906020019060200201516040518082815260200191505060405180910390a2611ee5565b8588815181101515611e8c57fe5b906020019060200201518488815181101515611ea457fe5b602090810290910101528451859089908110611ebc57fe5b906020019060200201518388815181101515611ed457fe5b602090810290910101526001909601955b600190970196611d69565b86604051908082528060200260200182016040528015611f1a578160200160208202803883390190505b50915086604051908082528060200260200182016040528015611f47578160200160208202803883390190505b509050600097505b86881015611fc2578388815181101515611f6557fe5b906020019060200201518289815181101515611f7d57fe5b602090810290910101528251839089908110611f9557fe5b906020019060200201518189815181101515611fad57fe5b60209081029091010152600190970196611f4f565b600160a060020a03891660009081526007602090815260409091208351611feb92850190612077565b50600160a060020a0389166000908152600860209081526040909120825161201592840190612077565b505050600160a060020a039096166000908152600960205260409020939093555050505050565b60008183101561204857fe5b50900390565b815481835581811115612072576000838152602090206120729181019083016120c2565b505050565b8280548282559060005260206000209081019282156120b2579160200282015b828111156120b2578251825591602001919060010190612097565b506120be9291506120c2565b5090565b6107dc91905b808211156120be57600081556001016120c85600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582073a6adeaaed803604fe0b7616bd211b0caec9c90f7f6bedf795fd79a3807ed920029

Deployed Bytecode

0x6080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630451f520811461014d57806306fdde0314610180578063095ea7b31461020a5780630fce887b1461024257806313af4035146102e657806318160ddd1461030957806323b872dd1461031e578063313ce5671461034857806342966c68146103735780635fc3a3121461038b57806366188463146103ac57806370a08231146103d05780638da5cb5b146103f157806395d89b4114610422578063a9059cbb14610437578063b91aedab1461045b578063b9c5416d146104f7578063c9e6bd3414610568578063ca0cd7c014610589578063d7290181146105a1578063d73dd623146105c2578063d80b2056146105e6578063dd62ed3e146105fb578063df51d46b14610622578063fb276fcf1461063a575b600080fd5b34801561015957600080fd5b5061016e600160a060020a036004351661065b565b60408051918252519081900360200190f35b34801561018c57600080fd5b50610195610749565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101cf5781810151838201526020016101b7565b50505050905090810190601f1680156101fc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021657600080fd5b5061022e600160a060020a03600435166024356107df565b604080519115158252519081900360200190f35b34801561024e57600080fd5b50604080516020600460443581810135838102808601850190965280855261022e958335600160a060020a039081169660248035909216963696956064959294930192829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375094975061087e9650505050505050565b3480156102f257600080fd5b50610307600160a060020a0360043516610cfe565b005b34801561031557600080fd5b5061016e610d44565b34801561032a57600080fd5b5061022e600160a060020a0360043581169060243516604435610d4a565b34801561035457600080fd5b5061035d610efe565b6040805160ff9092168252519081900360200190f35b34801561037f57600080fd5b5061022e600435610f07565b34801561039757600080fd5b5061016e600160a060020a0360043516610fed565b3480156103b857600080fd5b5061022e600160a060020a036004351660243561108c565b3480156103dc57600080fd5b5061016e600160a060020a03600435166111b6565b3480156103fd57600080fd5b50610406611224565b60408051600160a060020a039092168252519081900360200190f35b34801561042e57600080fd5b50610195611233565b34801561044357600080fd5b5061022e600160a060020a0360043516602435611291565b34801561046757600080fd5b5060408051602060046024803582810135848102808701860190975280865261022e968435600160a060020a031696369660449591949091019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506113929650505050505050565b34801561050357600080fd5b50610518600160a060020a0360043516611710565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561055457818101518382015260200161053c565b505050509050019250505060405180910390f35b34801561057457600080fd5b50610518600160a060020a0360043516611802565b34801561059557600080fd5b50610307600435611885565b3480156105ad57600080fd5b50610307600160a060020a03600435166118b5565b3480156105ce57600080fd5b5061022e600160a060020a0360043516602435611a52565b3480156105f257600080fd5b50610307611a9e565b34801561060757600080fd5b5061016e600160a060020a0360043581169060243516611b2d565b34801561062e57600080fd5b50610307600435611b58565b34801561064657600080fd5b5061016e600160a060020a0360043516611b88565b600160a060020a038116600090815260056020526040812054905b600160a060020a03831660009081526009602052604090205481101561074357600a54600160a060020a038416600090815260076020526040902080546106dc929190849081106106c357fe5b9060005260206000200154611bbd90919063ffffffff16565b600b546106f090429063ffffffff611bbd16565b1061073b57600160a060020a0383166000908152600860205260409020805461073891908390811061071e57fe5b906000526020600020015483611bbd90919063ffffffff16565b91505b600101610676565b50919050565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156107d45780601f106107a9576101008083540402835291602001916107d4565b820191906000526020600020905b8154815290600101906020018083116107b757829003601f168201915b505050505090505b90565b600082600160a060020a03811615156107f757600080fd5b3360009081526009602052604081205411156108165761081633611bd3565b336000818152600660209081526040808320600160a060020a03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000808086600160a060020a038116151561089857600080fd5b86600160a060020a03811615156108ae57600080fd5b86518651146108bc57600080fd5b600160a060020a03891660009081526009602052604081205411156108e4576108e489611bd3565b60009350600092505b855184101561092b5761091e868581518110151561090757fe5b60209081029091010151849063ffffffff611bbd16565b60019094019392506108ed565b600160a060020a0389166000908152600560205260409020548311801590610954575060008310155b80156109835750600160a060020a03891660009081526006602090815260408083203384529091529020548311155b151561098e57600080fd5b8651600160a060020a038916600090815260096020526040902054602a916109bc919063ffffffff611bbd16565b11156109c757600080fd5b600093505b8651841015610cef57600086858151811015156109e557fe5b906020019060200201511115610c1a57610a378685815181101515610a0657fe5b6020908102909101810151600160a060020a038c16600090815260059092526040909120549063ffffffff61203c16565b600160a060020a038a166000908152600560205260409020558551610a9c90879086908110610a6257fe5b6020908102909101810151600160a060020a038c16600090815260068352604080822033835290935291909120549063ffffffff61203c16565b600160a060020a03808b166000908152600660209081526040808320338452825280832094909455918b1681526009825282812054600790925291909120600190910190610aea908261204e565b50600160a060020a0388166000908152600960209081526040808320546008909252909120600190910190610b1f908261204e565b50610b6c600a54610b60600b54610b548b89815181101515610b3d57fe5b60209081029091010151429063ffffffff611bbd16565b9063ffffffff611bbd16565b9063ffffffff61203c16565b600160a060020a038916600090815260076020908152604080832060099092529091205481548110610b9a57fe5b6000918252602090912001558551869085908110610bb457fe5b6020908102909101810151600160a060020a038a166000908152600883526040808220600990945290205482549192918110610bec57fe5b6000918252602080832090910192909255600160a060020a038a168152600990915260409020805460010190555b87600160a060020a031689600160a060020a03167f34c966766e471b87b7ce8d0d0358378cf20008a30bbb36246a3413c8a286834e8987815181101515610c5d57fe5b906020019060200201518988815181101515610c7557fe5b602090810290910181015160408051938452918301528051918290030190a387600160a060020a031689600160a060020a03166000805160206120dd8339815191528887815181101515610cc557fe5b906020019060200201516040518082815260200191505060405180910390a36001909301926109cc565b50600198975050505050505050565b600054600160a060020a03163314610d1557600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60045490565b600083600160a060020a0381161515610d6257600080fd5b83600160a060020a0381161515610d7857600080fd5b600160a060020a0386166000908152600960205260408120541115610da057610da086611bd3565b600160a060020a0386166000908152600560205260409020548411801590610dc9575060008410155b8015610df85750600160a060020a03861660009081526006602090815260408083203384529091529020548411155b1515610e0357600080fd5b600160a060020a0386166000908152600660209081526040808320338452909152902054610e37908563ffffffff61203c16565b600160a060020a038716600081815260066020908152604080832033845282528083209490945591815260059091522054610e78908563ffffffff61203c16565b600160a060020a038088166000908152600560205260408082209390935590871681522054610ead908563ffffffff611bbd16565b600160a060020a0380871660008181526005602090815260409182902094909455805188815290519193928a16926000805160206120dd83398151915292918290030190a350600195945050505050565b60035460ff1690565b60008054600160a060020a03163314610f1f57600080fd5b336000908152600960205260408120541115610f3e57610f3e33611bd3565b336000908152600560205260409020548211801590610f5e575060008210155b1515610f6957600080fd5b33600090815260056020526040902054610f89908363ffffffff61203c16565b33600090815260056020526040902055600454610fac908363ffffffff61203c16565b60045560408051838152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2506001919050565b6000805b600160a060020a03831660009081526009602052604090205481101561074357600a54600160a060020a0384166000908152600760205260409020805461103e929190849081106106c357fe5b600b5461105290429063ffffffff611bbd16565b101561108457600160a060020a0383166000908152600860205260409020805461108191908390811061071e57fe5b91505b600101610ff1565b600082600160a060020a03811615156110a457600080fd5b336000908152600660209081526040808320600160a060020a038816845290915290205483106110f757336000908152600660209081526040808320600160a060020a0388168452909152812055611150565b336000908152600660209081526040808320600160a060020a038816845290915290205461112b908463ffffffff61203c16565b336000908152600660209081526040808320600160a060020a03891684529091529020555b336000818152600660209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160a060020a038116600090815260056020526040812054905b600160a060020a03831660009081526009602052604090205481101561074357600160a060020a0383166000908152600860205260409020805461121a91908390811061071e57fe5b91506001016111d1565b600054600160a060020a031681565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156107d45780601f106107a9576101008083540402835291602001916107d4565b600082600160a060020a03811615156112a957600080fd5b3360009081526009602052604081205411156112c8576112c833611bd3565b3360009081526005602052604090205483118015906112e8575060008310155b15156112f357600080fd5b33600090815260056020526040902054611313908463ffffffff61203c16565b3360009081526005602052604080822092909255600160a060020a03861681522054611345908463ffffffff611bbd16565b600160a060020a0385166000818152600560209081526040918290209390935580518681529051919233926000805160206120dd8339815191529281900390910190a35060019392505050565b6000808085600160a060020a03811615156113ac57600080fd5b85518551146113ba57600080fd5b3360009081526009602052604081205411156113d9576113d933611bd3565b60009250600091505b84518310156114205761141385848151811015156113fc57fe5b60209081029091010151839063ffffffff611bbd16565b60019093019291506113e2565b336000908152600560205260409020548211801590611440575060008210155b151561144b57600080fd5b8551600160a060020a038816600090815260096020526040902054602a91611479919063ffffffff611bbd16565b111561148457600080fd5b600092505b855183101561170357600085848151811015156114a257fe5b90602001906020020151111561162e576114eb85848151811015156114c357fe5b602090810290910181015133600090815260059092526040909120549063ffffffff61203c16565b33600090815260056020908152604080832093909355600160a060020a038a1682526009815282822054600790915291902060019091019061152d908261204e565b50600160a060020a0387166000908152600960209081526040808320546008909252909120600190910190611562908261204e565b50611580600a54610b60600b54610b548a88815181101515610b3d57fe5b600160a060020a0388166000908152600760209081526040808320600990925290912054815481106115ae57fe5b60009182526020909120015584518590849081106115c857fe5b6020908102909101810151600160a060020a038916600090815260088352604080822060099094529020548254919291811061160057fe5b6000918252602080832090910192909255600160a060020a0389168152600990915260409020805460010190555b86600160a060020a031633600160a060020a03167f34c966766e471b87b7ce8d0d0358378cf20008a30bbb36246a3413c8a286834e888681518110151561167157fe5b90602001906020020151888781518110151561168957fe5b602090810290910181015160408051938452918301528051918290030190a386600160a060020a031633600160a060020a03166000805160206120dd83398151915287868151811015156116d957fe5b906020019060200201516040518082815260200191505060405180910390a3600190920191611489565b5060019695505050505050565b606060008183600160a060020a038116151561172b57600080fd5b600092506009600086600160a060020a0316600160a060020a031681526020019081526020016000205460405190808252806020026020018201604052801561177e578160200160208202803883390190505b5091505b600160a060020a0385166000908152600960205260409020548310156117fa57600b54600a54600160a060020a038716600090815260076020526040902080546117d79392610b60929091889081106106c357fe5b82848151811015156117e557fe5b60209081029091010152600190920191611782565b509392505050565b606081600160a060020a038116151561181a57600080fd5b600160a060020a0383166000908152600860209081526040918290208054835181840281018401909452808452909183018282801561187857602002820191906000526020600020905b815481526020019060010190808311611864575b5050505050915050919050565b600054600160a060020a0316331461189c57600080fd5b600a546118af908263ffffffff611bbd16565b600a5550565b600080548190600160a060020a031633146118cf57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561193357600080fd5b505af1158015611947573d6000803e3d6000fd5b505050506040513d602081101561195d57600080fd5b505190506000811161196e57600080fd5b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051600160a060020a0384169163a9059cbb9160448083019260209291908290030181600087803b1580156119d657600080fd5b505af11580156119ea573d6000803e3d6000fd5b505050506040513d6020811015611a0057600080fd5b50511515611a0d57600080fd5b6040805182815290513391600160a060020a038616917f5d8daa04d680e083e2ab17a35494ba9f290f554edf76a78f0103a8a599b5c4249181900360200190a3505050565b600082600160a060020a0381161515611a6a57600080fd5b336000908152600660209081526040808320600160a060020a038816845290915290205461112b908463ffffffff611bbd16565b60008054600160a060020a03163314611ab657600080fd5b50303160008111611ac657600080fd5b604051339082156108fc029083906000818181858888f19350505050158015611af3573d6000803e3d6000fd5b5060408051828152905133917faea7a96dc17068a25e51e08f8ed45b86bd34b10af65af8e757af57b7e7b9e55d919081900360200190a250565b600160a060020a03918216600090815260066020908152604080832093909416825291909152205490565b600054600160a060020a03163314611b6f57600080fd5b600b54611b82908263ffffffff611bbd16565b600b5550565b600081600160a060020a0381161515611ba057600080fd5b5050600160a060020a031660009081526009602052604090205490565b600082820183811015611bcc57fe5b9392505050565b6000806060806060806060806000975060009650600960008a600160a060020a0316600160a060020a0316815260200190815260200160002054604051908082528060200260200182016040528015611c36578160200160208202803883390190505b509350600960008a600160a060020a0316600160a060020a0316815260200190815260200160002054604051908082528060200260200182016040528015611c88578160200160208202803883390190505b50600160a060020a038a166000908152600760209081526040918290208054835181840281018401909452808452939650919290830182828015611ceb57602002820191906000526020600020905b815481526020019060010190808311611cd7575b50505050509550600860008a600160a060020a0316600160a060020a03168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015611d6157602002820191906000526020600020905b815481526020019060010190808311611d4d575b505050505094505b600160a060020a038916600090815260096020526040902054881015611ef057611db3600a54878a815181101515611d9d57fe5b602090810290910101519063ffffffff611bbd16565b600b54611dc790429063ffffffff611bbd16565b10611e7e57611e0e8589815181101515611ddd57fe5b6020908102909101810151600160a060020a038c16600090815260059092526040909120549063ffffffff611bbd16565b600160a060020a038a1660008181526005602052604090209190915585517f613edbda9d1e6bda8af8e869a973f88cccf93854a11f351589038de07e1ab4e39087908b908110611e5a57fe5b906020019060200201516040518082815260200191505060405180910390a2611ee5565b8588815181101515611e8c57fe5b906020019060200201518488815181101515611ea457fe5b602090810290910101528451859089908110611ebc57fe5b906020019060200201518388815181101515611ed457fe5b602090810290910101526001909601955b600190970196611d69565b86604051908082528060200260200182016040528015611f1a578160200160208202803883390190505b50915086604051908082528060200260200182016040528015611f47578160200160208202803883390190505b509050600097505b86881015611fc2578388815181101515611f6557fe5b906020019060200201518289815181101515611f7d57fe5b602090810290910101528251839089908110611f9557fe5b906020019060200201518189815181101515611fad57fe5b60209081029091010152600190970196611f4f565b600160a060020a03891660009081526007602090815260409091208351611feb92850190612077565b50600160a060020a0389166000908152600860209081526040909120825161201592840190612077565b505050600160a060020a039096166000908152600960205260409020939093555050505050565b60008183101561204857fe5b50900390565b815481835581811115612072576000838152602090206120729181019083016120c2565b505050565b8280548282559060005260206000209081019282156120b2579160200282015b828111156120b2578251825591602001919060010190612097565b506120be9291506120c2565b5090565b6107dc91905b808211156120be57600081556001016120c85600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582073a6adeaaed803604fe0b7616bd211b0caec9c90f7f6bedf795fd79a3807ed920029

Swarm Source

bzzr://73a6adeaaed803604fe0b7616bd211b0caec9c90f7f6bedf795fd79a3807ed92
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.