ETH Price: $2,524.65 (+0.23%)
Gas: 0.71 Gwei

Token

GasPay ($GASPAY)
 

Overview

Max Total Supply

100,000 $GASPAY

Holders

139

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
capucin.eth
Balance
0.873287535104895362 $GASPAY

Value
$0.00
0x6ec04cbe2f8e192d8df0bcf94afb58a4094f7c91
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:
GasPay

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-02-10
*/

/**
 * 
 * Long Live Satoshi.
 * 
 * https://gaspay.io
 * 
 * https://t.me/GasPayDeFi
 * https://t.me/GasPayAnnouncements
 *
 * 
*/ 

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract GasPay is Ownable, IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => Lock[]) _locks;

    uint256 private _totalSupply = 100000 ether;

    string private _name = "GasPay";
    string private _symbol = "$GASPAY";
    uint8 private _decimals = 18;

    uint256 private _percentFees = 6;

    event Deposit(address indexed depositor, uint256 depositAmount, uint256 timestamp, uint256 unlockTimestamp);

    struct Lock {
        uint256 lockAmount;
        uint256 unlockTime;
    }

    constructor() {
        _balances[owner()] = _totalSupply;
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function getContractBalance() public view returns (uint256) {
        return _balances[address(this)];
    }

    function getFeeAmount(uint256 amount) public view returns (uint256) {
        return amount.mul(_percentFees).div(100);
    }

    function getUnlockableAmount(address account) public view returns (uint256) {
        Lock[] memory locks = _locks[account];
        uint256 unlockableAmount = 0;

        for (uint i=0; i<locks.length; i++) {
            if (block.timestamp >= locks[i].unlockTime) {
                unlockableAmount = unlockableAmount.add(locks[i].lockAmount);
            }
        }
        
        return unlockableAmount;
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function lock(uint256 amount) public virtual {
        address user = _msgSender();
        uint256 lockAmount = amount;
        uint256 timestamp = block.timestamp;
        uint256 unlockTimestamp = timestamp.add(5 days);

        _depositForLock(user, lockAmount);

        Lock memory currentLock = Lock(
            {
                lockAmount: amount,
                unlockTime: unlockTimestamp
            }
        );

        _locks[user].push(currentLock);

        emit Deposit(user, lockAmount, timestamp, unlockTimestamp);
    }

    function unlock() public virtual {
        uint256 unlockableAmount = getUnlockableAmount(_msgSender());
        require(unlockableAmount > 0, "No unlockable Tokens");
                
        Lock[] storage locks = _locks[_msgSender()];
        uint256 withdrawAmount = 0;

        // loop just in case somehow the order gets messed up, would be possible with single assignment from index 0 too
        for (uint i=0; i<locks.length; i++) {
            if (block.timestamp >= locks[i].unlockTime) {
                withdrawAmount = withdrawAmount.add(locks[i].lockAmount);
                locks = _removeIndex(i, locks);
                break;
            }
        }

        _locks[_msgSender()] = locks;

        _withdrawFromLock(_msgSender(), withdrawAmount);
    }

    function _removeIndex(uint256 index, Lock[] storage array) internal virtual returns(Lock[] storage) {
        if (index >= array.length) {
            return array;
        }

        for (uint i=index; i<array.length-1; i++) {
            array[i] = array[i+1];
        }

        array.pop();

        return array;
    }

    function _depositForLock(address sender, uint256 amount) internal virtual {
        _balances[sender] = _balances[sender].sub(amount, "ERC20: lock amount exceeds balance");
        _balances[address(this)] = _balances[address(this)].add(amount);
        
        emit Transfer(sender, address(this), amount);
    }

    function _withdrawFromLock(address withdrawer, uint256 amount) internal virtual {
        _balances[address(this)] = _balances[address(this)].sub(amount);
        _balances[withdrawer] = _balances[withdrawer].add(amount);
        
        emit Transfer(address(this), withdrawer, amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 transferFee = getFeeAmount(amount);
        uint256 amountAfterFee = amount.sub(transferFee);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amountAfterFee);

        _balances[owner()] = _balances[owner()].add(transferFee);

        emit Transfer(sender, recipient, amount);
        emit Transfer(sender, owner(), transferFee);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _setupDecimals(uint8 decimals_) internal virtual {
        _decimals = decimals_;
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"depositor","type":"address"},{"indexed":false,"internalType":"uint256","name":"depositAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlockTimestamp","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getContractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getFeeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getUnlockableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405269152d02c7e14af68000006004556040518060400160405280600681526020017f4761735061790000000000000000000000000000000000000000000000000000815250600590805190602001906200005f92919062000219565b506040518060400160405280600781526020017f244741535041590000000000000000000000000000000000000000000000000081525060069080519060200190620000ad92919062000219565b506012600760006101000a81548160ff021916908360ff1602179055506006600855348015620000dc57600080fd5b506000620000ef620001e860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060045460016000620001a4620001f060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620002cf565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200025157600085556200029d565b82601f106200026c57805160ff19168380011785556200029d565b828001600101855582156200029d579182015b828111156200029c5782518255916020019190600101906200027f565b5b509050620002ac9190620002b0565b5090565b5b80821115620002cb576000816000905550600101620002b1565b5090565b61233480620002df6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80638da5cb5b116100ad578063a9059cbb11610071578063a9059cbb1461051b578063dd4670641461057f578063dd62ed3e146105ad578063e680be4d14610625578063f2fde38b1461067d57610121565b80638da5cb5b146103b457806395d89b41146103e85780639704122c1461046b578063a457c2d7146104ad578063a69df4b51461051157610121565b8063313ce567116100f4578063313ce567146102af57806339509351146102d05780636f9fb98a1461033457806370a0823114610352578063715018a6146103aa57610121565b806306fdde0314610126578063095ea7b3146101a957806318160ddd1461020d57806323b872dd1461022b575b600080fd5b61012e6106c1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561016e578082015181840152602081019050610153565b50505050905090810190601f16801561019b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f5600480360360408110156101bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610763565b60405180821515815260200191505060405180910390f35b610215610781565b6040518082815260200191505060405180910390f35b6102976004803603606081101561024157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061078b565b60405180821515815260200191505060405180910390f35b6102b7610864565b604051808260ff16815260200191505060405180910390f35b61031c600480360360408110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061087b565b60405180821515815260200191505060405180910390f35b61033c61092e565b6040518082815260200191505060405180910390f35b6103946004803603602081101561036857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610975565b6040518082815260200191505060405180910390f35b6103b26109be565b005b6103bc610b44565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103f0610b6d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610430578082015181840152602081019050610415565b50505050905090810190601f16801561045d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104976004803603602081101561048157600080fd5b8101908080359060200190929190505050610c0f565b6040518082815260200191505060405180910390f35b6104f9600480360360408110156104c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c40565b60405180821515815260200191505060405180910390f35b610519610d0d565b005b6105676004803603604081101561053157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ed2565b60405180821515815260200191505060405180910390f35b6105ab6004803603602081101561059557600080fd5b8101908080359060200190929190505050610ef0565b005b61060f600480360360408110156105c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611028565b6040518082815260200191505060405180910390f35b6106676004803603602081101561063b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110af565b6040518082815260200191505060405180910390f35b6106bf6004803603602081101561069357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111cd565b005b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107595780601f1061072e57610100808354040283529160200191610759565b820191906000526020600020905b81548152906001019060200180831161073c57829003601f168201915b5050505050905090565b60006107776107706113d8565b84846113e0565b6001905092915050565b6000600454905090565b60006107988484846115d7565b610859846107a46113d8565b6108548560405180606001604052806028815260200161226960289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061080a6113d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119d19092919063ffffffff16565b6113e0565b600190509392505050565b6000600760009054906101000a900460ff16905090565b60006109246108886113d8565b8461091f85600260006108996113d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9190919063ffffffff16565b6113e0565b6001905092915050565b6000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109c66113d8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c055780601f10610bda57610100808354040283529160200191610c05565b820191906000526020600020905b815481529060010190602001808311610be857829003601f168201915b5050505050905090565b6000610c396064610c2b60085485611b1990919063ffffffff16565b611b9f90919063ffffffff16565b9050919050565b6000610d03610c4d6113d8565b84610cfe856040518060600160405280602581526020016122da6025913960026000610c776113d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119d19092919063ffffffff16565b6113e0565b6001905092915050565b6000610d1f610d1a6113d8565b6110af565b905060008111610d97576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f20756e6c6f636b61626c6520546f6b656e7300000000000000000000000081525060200191505060405180910390fd5b600060036000610da56113d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000805b8280549050811015610e6557828181548110610dfd57fe5b9060005260206000209060020201600101544210610e5857610e45838281548110610e2457fe5b90600052602060002090600202016000015483611a9190919063ffffffff16565b9150610e518184611be9565b9250610e65565b8080600101915050610de5565b508160036000610e736113d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020908054610ebb929190612101565b50610ecd610ec76113d8565b82611cac565b505050565b6000610ee6610edf6113d8565b84846115d7565b6001905092915050565b6000610efa6113d8565b9050600082905060004290506000610f1e6206978083611a9190919063ffffffff16565b9050610f2a8484611e3f565b60006040518060400160405280878152602001838152509050600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508473ffffffffffffffffffffffffffffffffffffffff167f36af321ec8d3c75236829c5317affd40ddb308863a1236d2d277a4025cccee1e85858560405180848152602001838152602001828152602001935050505060405180910390a2505050505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561115757838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190611111565b5050505090506000805b82518110156111c25782818151811061117657fe5b60200260200101516020015142106111b5576111b283828151811061119757fe5b60200260200101516000015183611a9190919063ffffffff16565b91505b8080600101915050611161565b508092505050919050565b6111d56113d8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611295576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561131b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806121b86026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611466576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806122b66024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806121de6022913960400191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561165d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806122916025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806121956023913960400191505060405180910390fd5b6116ee838383611fec565b60006116f982610c0f565b905060006117108284611ff190919063ffffffff16565b905061177e8360405180606001604052806026815260200161222260269139600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119d19092919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061181381600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118af8260016000611866610b44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9190919063ffffffff16565b600160006118bb610b44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3611966610b44565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050565b6000838311158290611a7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a43578082015181840152602081019050611a28565b50505050905090810190601f168015611a705780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611b0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415611b2c5760009050611b99565b6000828402905082848281611b3d57fe5b0414611b94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806122486021913960400191505060405180910390fd5b809150505b92915050565b6000611be183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061203b565b905092915050565b600081805490508310611bfe57819050611ca6565b60008390505b6001838054905003811015611c6e57826001820181548110611c2257fe5b9060005260206000209060020201838281548110611c3c57fe5b906000526020600020906002020160008201548160000155600182015481600101559050508080600101915050611c04565b5081805480611c7957fe5b60019003818190600052602060002090600202016000808201600090556001820160009055505090558190505b92915050565b611cfe81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff190919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d9381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b611eab8160405180606001604052806022815260200161220060229139600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119d19092919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f4081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9190919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b600061203383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119d1565b905092915050565b600080831182906120e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120ac578082015181840152602081019050612091565b50505050905090810190601f1680156120d95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816120f357fe5b049050809150509392505050565b82805482825590600052602060002090600202810192821561215c5760005260206000209160020282015b8281111561215b578282600082015481600001556001820154816001015550509160020191906002019061212c565b5b509050612169919061216d565b5090565b5b808211156121905760008082016000905560018201600090555060020161216e565b509056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206c6f636b20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200ff28b299ad00dd22b9a73932438bb31e0a8be54ee6814337e1d083bc126652264736f6c63430007060033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101215760003560e01c80638da5cb5b116100ad578063a9059cbb11610071578063a9059cbb1461051b578063dd4670641461057f578063dd62ed3e146105ad578063e680be4d14610625578063f2fde38b1461067d57610121565b80638da5cb5b146103b457806395d89b41146103e85780639704122c1461046b578063a457c2d7146104ad578063a69df4b51461051157610121565b8063313ce567116100f4578063313ce567146102af57806339509351146102d05780636f9fb98a1461033457806370a0823114610352578063715018a6146103aa57610121565b806306fdde0314610126578063095ea7b3146101a957806318160ddd1461020d57806323b872dd1461022b575b600080fd5b61012e6106c1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561016e578082015181840152602081019050610153565b50505050905090810190601f16801561019b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f5600480360360408110156101bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610763565b60405180821515815260200191505060405180910390f35b610215610781565b6040518082815260200191505060405180910390f35b6102976004803603606081101561024157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061078b565b60405180821515815260200191505060405180910390f35b6102b7610864565b604051808260ff16815260200191505060405180910390f35b61031c600480360360408110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061087b565b60405180821515815260200191505060405180910390f35b61033c61092e565b6040518082815260200191505060405180910390f35b6103946004803603602081101561036857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610975565b6040518082815260200191505060405180910390f35b6103b26109be565b005b6103bc610b44565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103f0610b6d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610430578082015181840152602081019050610415565b50505050905090810190601f16801561045d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104976004803603602081101561048157600080fd5b8101908080359060200190929190505050610c0f565b6040518082815260200191505060405180910390f35b6104f9600480360360408110156104c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c40565b60405180821515815260200191505060405180910390f35b610519610d0d565b005b6105676004803603604081101561053157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ed2565b60405180821515815260200191505060405180910390f35b6105ab6004803603602081101561059557600080fd5b8101908080359060200190929190505050610ef0565b005b61060f600480360360408110156105c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611028565b6040518082815260200191505060405180910390f35b6106676004803603602081101561063b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110af565b6040518082815260200191505060405180910390f35b6106bf6004803603602081101561069357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111cd565b005b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107595780601f1061072e57610100808354040283529160200191610759565b820191906000526020600020905b81548152906001019060200180831161073c57829003601f168201915b5050505050905090565b60006107776107706113d8565b84846113e0565b6001905092915050565b6000600454905090565b60006107988484846115d7565b610859846107a46113d8565b6108548560405180606001604052806028815260200161226960289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061080a6113d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119d19092919063ffffffff16565b6113e0565b600190509392505050565b6000600760009054906101000a900460ff16905090565b60006109246108886113d8565b8461091f85600260006108996113d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9190919063ffffffff16565b6113e0565b6001905092915050565b6000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109c66113d8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c055780601f10610bda57610100808354040283529160200191610c05565b820191906000526020600020905b815481529060010190602001808311610be857829003601f168201915b5050505050905090565b6000610c396064610c2b60085485611b1990919063ffffffff16565b611b9f90919063ffffffff16565b9050919050565b6000610d03610c4d6113d8565b84610cfe856040518060600160405280602581526020016122da6025913960026000610c776113d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119d19092919063ffffffff16565b6113e0565b6001905092915050565b6000610d1f610d1a6113d8565b6110af565b905060008111610d97576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f20756e6c6f636b61626c6520546f6b656e7300000000000000000000000081525060200191505060405180910390fd5b600060036000610da56113d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000805b8280549050811015610e6557828181548110610dfd57fe5b9060005260206000209060020201600101544210610e5857610e45838281548110610e2457fe5b90600052602060002090600202016000015483611a9190919063ffffffff16565b9150610e518184611be9565b9250610e65565b8080600101915050610de5565b508160036000610e736113d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020908054610ebb929190612101565b50610ecd610ec76113d8565b82611cac565b505050565b6000610ee6610edf6113d8565b84846115d7565b6001905092915050565b6000610efa6113d8565b9050600082905060004290506000610f1e6206978083611a9190919063ffffffff16565b9050610f2a8484611e3f565b60006040518060400160405280878152602001838152509050600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508473ffffffffffffffffffffffffffffffffffffffff167f36af321ec8d3c75236829c5317affd40ddb308863a1236d2d277a4025cccee1e85858560405180848152602001838152602001828152602001935050505060405180910390a2505050505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561115757838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190611111565b5050505090506000805b82518110156111c25782818151811061117657fe5b60200260200101516020015142106111b5576111b283828151811061119757fe5b60200260200101516000015183611a9190919063ffffffff16565b91505b8080600101915050611161565b508092505050919050565b6111d56113d8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611295576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561131b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806121b86026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611466576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806122b66024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806121de6022913960400191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561165d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806122916025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806121956023913960400191505060405180910390fd5b6116ee838383611fec565b60006116f982610c0f565b905060006117108284611ff190919063ffffffff16565b905061177e8360405180606001604052806026815260200161222260269139600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119d19092919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061181381600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118af8260016000611866610b44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9190919063ffffffff16565b600160006118bb610b44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3611966610b44565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050565b6000838311158290611a7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a43578082015181840152602081019050611a28565b50505050905090810190601f168015611a705780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611b0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415611b2c5760009050611b99565b6000828402905082848281611b3d57fe5b0414611b94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806122486021913960400191505060405180910390fd5b809150505b92915050565b6000611be183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061203b565b905092915050565b600081805490508310611bfe57819050611ca6565b60008390505b6001838054905003811015611c6e57826001820181548110611c2257fe5b9060005260206000209060020201838281548110611c3c57fe5b906000526020600020906002020160008201548160000155600182015481600101559050508080600101915050611c04565b5081805480611c7957fe5b60019003818190600052602060002090600202016000808201600090556001820160009055505090558190505b92915050565b611cfe81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff190919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d9381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b611eab8160405180606001604052806022815260200161220060229139600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119d19092919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f4081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9190919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b600061203383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119d1565b905092915050565b600080831182906120e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120ac578082015181840152602081019050612091565b50505050905090810190601f1680156120d95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816120f357fe5b049050809150509392505050565b82805482825590600052602060002090600202810192821561215c5760005260206000209160020282015b8281111561215b578282600082015481600001556001820154816001015550509160020191906002019061212c565b5b509050612169919061216d565b5090565b5b808211156121905760008082016000905560018201600090555060020161216e565b509056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206c6f636b20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200ff28b299ad00dd22b9a73932438bb31e0a8be54ee6814337e1d083bc126652264736f6c63430007060033

Deployed Bytecode Sourcemap

3865:7794:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4603:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6146:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4880:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6323:321;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4789:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6652:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5115:110;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4988:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3458:148;;;:::i;:::-;;3244:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4694:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5233:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6878:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7723:790;;;:::i;:::-;;5804:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7155:560;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5987:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5368:428;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3614:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4603:83;4640:13;4673:5;4666:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4603:83;:::o;6146:169::-;6229:4;6246:39;6255:12;:10;:12::i;:::-;6269:7;6278:6;6246:8;:39::i;:::-;6303:4;6296:11;;6146:169;;;;:::o;4880:100::-;4933:7;4960:12;;4953:19;;4880:100;:::o;6323:321::-;6429:4;6446:36;6456:6;6464:9;6475:6;6446:9;:36::i;:::-;6493:121;6502:6;6510:12;:10;:12::i;:::-;6524:89;6562:6;6524:89;;;;;;;;;;;;;;;;;:11;:19;6536:6;6524:19;;;;;;;;;;;;;;;:33;6544:12;:10;:12::i;:::-;6524:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6493:8;:121::i;:::-;6632:4;6625:11;;6323:321;;;;;:::o;4789:83::-;4830:5;4855:9;;;;;;;;;;;4848:16;;4789:83;:::o;6652:218::-;6740:4;6757:83;6766:12;:10;:12::i;:::-;6780:7;6789:50;6828:10;6789:11;:25;6801:12;:10;:12::i;:::-;6789:25;;;;;;;;;;;;;;;:34;6815:7;6789:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6757:8;:83::i;:::-;6858:4;6851:11;;6652:218;;;;:::o;5115:110::-;5166:7;5193:9;:24;5211:4;5193:24;;;;;;;;;;;;;;;;5186:31;;5115:110;:::o;4988:119::-;5054:7;5081:9;:18;5091:7;5081:18;;;;;;;;;;;;;;;;5074:25;;4988:119;;;:::o;3458:148::-;3381:12;:10;:12::i;:::-;3371:22;;:6;;;;;;;;;;:22;;;3363:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3565:1:::1;3528:40;;3549:6;::::0;::::1;;;;;;;;3528:40;;;;;;;;;;;;3596:1;3579:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3458:148::o:0;3244:79::-;3282:7;3309:6;;;;;;;;;;;3302:13;;3244:79;:::o;4694:87::-;4733:13;4766:7;4759:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4694:87;:::o;5233:127::-;5292:7;5319:33;5348:3;5319:24;5330:12;;5319:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;5312:40;;5233:127;;;:::o;6878:269::-;6971:4;6988:129;6997:12;:10;:12::i;:::-;7011:7;7020:96;7059:15;7020:96;;;;;;;;;;;;;;;;;:11;:25;7032:12;:10;:12::i;:::-;7020:25;;;;;;;;;;;;;;;:34;7046:7;7020:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6988:8;:129::i;:::-;7135:4;7128:11;;6878:269;;;;:::o;7723:790::-;7767:24;7794:33;7814:12;:10;:12::i;:::-;7794:19;:33::i;:::-;7767:60;;7865:1;7846:16;:20;7838:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7920:20;7943:6;:20;7950:12;:10;:12::i;:::-;7943:20;;;;;;;;;;;;;;;7920:43;;7974:22;8140:6;8135:270;8152:5;:12;;;;8150:1;:14;8135:270;;;8209:5;8215:1;8209:8;;;;;;;;;;;;;;;;;;:19;;;8190:15;:38;8186:208;;8266:39;8285:5;8291:1;8285:8;;;;;;;;;;;;;;;;;;:19;;;8266:14;:18;;:39;;;;:::i;:::-;8249:56;;8332:22;8345:1;8348:5;8332:12;:22::i;:::-;8324:30;;8373:5;;8186:208;8166:3;;;;;;;8135:270;;;;8440:5;8417:6;:20;8424:12;:10;:12::i;:::-;8417:20;;;;;;;;;;;;;;;:28;;;;;;;;:::i;:::-;;8458:47;8476:12;:10;:12::i;:::-;8490:14;8458:17;:47::i;:::-;7723:790;;;:::o;5804:175::-;5890:4;5907:42;5917:12;:10;:12::i;:::-;5931:9;5942:6;5907:9;:42::i;:::-;5967:4;5960:11;;5804:175;;;;:::o;7155:560::-;7211:12;7226;:10;:12::i;:::-;7211:27;;7249:18;7270:6;7249:27;;7287:17;7307:15;7287:35;;7333:23;7359:21;7373:6;7359:9;:13;;:21;;;;:::i;:::-;7333:47;;7393:33;7409:4;7415:10;7393:15;:33::i;:::-;7439:23;7465:128;;;;;;;;7515:6;7465:128;;;;7552:15;7465:128;;;7439:154;;7606:6;:12;7613:4;7606:12;;;;;;;;;;;;;;;7624:11;7606:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7662:4;7654:53;;;7668:10;7680:9;7691:15;7654:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7155:560;;;;;;:::o;5987:151::-;6076:7;6103:11;:18;6115:5;6103:18;;;;;;;;;;;;;;;:27;6122:7;6103:27;;;;;;;;;;;;;;;;6096:34;;5987:151;;;;:::o;5368:428::-;5435:7;5455:19;5477:6;:15;5484:7;5477:15;;;;;;;;;;;;;;;5455:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5503:24;5549:6;5544:201;5561:5;:12;5559:1;:14;5544:201;;;5618:5;5624:1;5618:8;;;;;;;;;;;;;;:19;;;5599:15;:38;5595:139;;5677:41;5698:5;5704:1;5698:8;;;;;;;;;;;;;;:19;;;5677:16;:20;;:41;;;;:::i;:::-;5658:60;;5595:139;5575:3;;;;;;;5544:201;;;;5772:16;5765:23;;;;5368:428;;;:::o;3614:244::-;3381:12;:10;:12::i;:::-;3371:22;;:6;;;;;;;;;;:22;;;3363:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3723:1:::1;3703:22;;:8;:22;;;;3695:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3813:8;3784:38;;3805:6;::::0;::::1;;;;;;;;3784:38;;;;;;;;;;;;3842:8;3833:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3614:244:::0;:::o;2561:106::-;2614:15;2649:10;2642:17;;2561:106;:::o;11104:346::-;11223:1;11206:19;;:5;:19;;;;11198:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11304:1;11285:21;;:7;:21;;;;11277:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11388:6;11358:11;:18;11370:5;11358:18;;;;;;;;;;;;;;;:27;11377:7;11358:27;;;;;;;;;;;;;;;:36;;;;11426:7;11410:32;;11419:5;11410:32;;;11435:6;11410:32;;;;;;;;;;;;;;;;;;11104:346;;;:::o;9498:786::-;9622:1;9604:20;;:6;:20;;;;9596:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9706:1;9685:23;;:9;:23;;;;9677:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9761:47;9782:6;9790:9;9801:6;9761:20;:47::i;:::-;9821:19;9843:20;9856:6;9843:12;:20::i;:::-;9821:42;;9874:22;9899:23;9910:11;9899:6;:10;;:23;;;;:::i;:::-;9874:48;;9955:71;9977:6;9955:71;;;;;;;;;;;;;;;;;:9;:17;9965:6;9955:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;9935:9;:17;9945:6;9935:17;;;;;;;;;;;;;;;:91;;;;10060:40;10085:14;10060:9;:20;10070:9;10060:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;10037:9;:20;10047:9;10037:20;;;;;;;;;;;;;;;:63;;;;10134:35;10157:11;10134:9;:18;10144:7;:5;:7::i;:::-;10134:18;;;;;;;;;;;;;;;;:22;;:35;;;;:::i;:::-;10113:9;:18;10123:7;:5;:7::i;:::-;10113:18;;;;;;;;;;;;;;;:56;;;;10204:9;10187:35;;10196:6;10187:35;;;10215:6;10187:35;;;;;;;;;;;;;;;;;;10255:7;:5;:7::i;:::-;10238:38;;10247:6;10238:38;;;10264:11;10238:38;;;;;;;;;;;;;;;;;;9498:786;;;;;:::o;1266:192::-;1352:7;1385:1;1380;:6;;1388:12;1372:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1412:9;1428:1;1424;:5;1412:17;;1449:1;1442:8;;;1266:192;;;;;:::o;933:181::-;991:7;1011:9;1027:1;1023;:5;1011:17;;1052:1;1047;:6;;1039:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1105:1;1098:8;;;933:181;;;;:::o;1466:250::-;1524:7;1553:1;1548;:6;1544:47;;;1578:1;1571:8;;;;1544:47;1603:9;1619:1;1615;:5;1603:17;;1648:1;1643;1639;:5;;;;;;:10;1631:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1707:1;1700:8;;;1466:250;;;;;:::o;1724:132::-;1782:7;1809:39;1813:1;1816;1809:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1802:46;;1724:132;;;;:::o;8521:335::-;8605:14;8645:5;:12;;;;8636:5;:21;8632:66;;8681:5;8674:12;;;;8632:66;8715:6;8722:5;8715:12;;8710:90;8744:1;8731:5;:12;;;;:14;8729:1;:16;8710:90;;;8778:5;8786:1;8784;:3;8778:10;;;;;;;;;;;;;;;;;;8767:5;8773:1;8767:8;;;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;;8747:3;;;;;;;8710:90;;;;8812:5;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8843:5;8836:12;;8521:335;;;;;:::o;9191:299::-;9309:36;9338:6;9309:9;:24;9327:4;9309:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;9282:9;:24;9300:4;9282:24;;;;;;;;;;;;;;;:63;;;;9380:33;9406:6;9380:9;:21;9390:10;9380:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;9356:9;:21;9366:10;9356:21;;;;;;;;;;;;;;;:57;;;;9463:10;9439:43;;9456:4;9439:43;;;9475:6;9439:43;;;;;;;;;;;;;;;;;;9191:299;;:::o;8864:319::-;8969:67;8991:6;8969:67;;;;;;;;;;;;;;;;;:9;:17;8979:6;8969:17;;;;;;;;;;;;;;;;:21;;:67;;;;;:::i;:::-;8949:9;:17;8959:6;8949:17;;;;;;;;;;;;;;;:87;;;;9074:36;9103:6;9074:9;:24;9092:4;9074:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;9047:9;:24;9065:4;9047:24;;;;;;;;;;;;;;;:63;;;;9161:4;9136:39;;9145:6;9136:39;;;9168:6;9136:39;;;;;;;;;;;;;;;;;;8864:319;;:::o;11564:92::-;;;;:::o;1122:136::-;1180:7;1207:43;1211:1;1214;1207:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1200:50;;1122:136;;;;:::o;1864:345::-;1950:7;2049:1;2045;:5;2052:12;2037:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2076:9;2092:1;2088;:5;;;;;;2076:17;;2200:1;2193:8;;;1864:345;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://0ff28b299ad00dd22b9a73932438bb31e0a8be54ee6814337e1d083bc1266522
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.