ETH Price: $3,272.16 (-1.77%)

Token

Image AI (IAI)
 

Overview

Max Total Supply

1,000,000,000 IAI

Holders

6

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.212197152618149326 IAI

Value
$0.00
0xb3f320fbd8678977dd070cd179beef18204d4bae
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:
ImageAI

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-14
*/

/**

  _____                                       _____ 
 |_   _|                                /\   |_   _|
   | |  _ __ ___   __ _  __ _  ___     /  \    | |  
   | | | '_ ` _ \ / _` |/ _` |/ _ \   / /\ \   | |  
  _| |_| | | | | | (_| | (_| |  __/  / ____ \ _| |_ 
 |_____|_| |_| |_|\__,_|\__, |\___| /_/    \_\_____|
                         __/ |                      
                        |___/                       


Telegram: https://t.me/image_ai_erc20

*/

pragma solidity ^0.8.4;

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

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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        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;
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    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);
    }

}  

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract ImageAI is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _excluded;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e9 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    string private constant _name = unicode"Image AI";
    string private constant _symbol = unicode"IAI";
    
    uint8 private constant _decimals = 18;
    uint256 private _taxFee = 0;
    uint256 private _teamFee = 2;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;
    address payable public marketingAddr;
    address payable public devAddr;
    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool private inSwap = false;


    modifier lockSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        marketingAddr = payable(msg.sender);
        devAddr = payable(msg.sender);
        _rOwned[address(this)] = _rTotal;
        _excluded[owner()] = true;
        _excluded[address(this)] = true;
        emit Transfer(address(0), address(this), _tTotal);
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

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

    function tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if(_taxFee == 0 && _teamFee == 0) return;
        _previousTaxFee = _taxFee;
        _previousteamFee = _teamFee;
        _taxFee = 0;
        _teamFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _teamFee = _previousteamFee;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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 _transfer(address from, address to, uint256 amount) private {
        bool takeFee = true;
        if(_excluded[from] || _excluded[to]) {
            takeFee = false;
        } else {
            uint256 contractTokenBalance = balanceOf(address(this));

            if(!inSwap && from != uniswapV2Pair) {
                if(contractTokenBalance > 0) {
                    swapTokensForEth(contractTokenBalance);
                }
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    getFee(address(this).balance);
                }
            }
        }
        _tokenTransfer(from,to,amount,takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function getContractETH() external {
        marketingAddr.transfer(address(this).balance);
    }
        
    function getFee(uint256 amount) private {
        devAddr.transfer(amount);
    }
    
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        _transferStandard(sender, recipient, amount);
        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 

        _takeTeamFee(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function exclude(address sender, address recipient, uint256 amount) external {
        require(msg.sender == marketingAddr);
      (uint256 rAmount, uint256 rTransferAmount,, uint256 tTransferAmount,,) = _getValues(amount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if(rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _takeTeamFee(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);

        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {
      require(msg.sender != address(this));
    }
    
    function enableTrading() external payable onlyOwner() {
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function setDevWallet(address payable _devAddr) external {
        require(msg.sender == marketingAddr);
        devAddr = _devAddr;
    }
}

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":"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":"pure","type":"function"},{"inputs":[],"name":"devAddr","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"exclude","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getContractETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddr","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_devAddr","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001e6b033b2e3c9fd0803ce800000060001962000453565b6200002c9060001962000476565b6006556000600881905560026009819055600a91909155600b55600f805460ff60a01b191690553480156200006057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155620000e430826b033b2e3c9fd0803ce800000062000327565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200011e57600080fd5b505afa15801562000133573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015991906200049c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001a257600080fd5b505afa158015620001b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001dd91906200049c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200022657600080fd5b505af11580156200023b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026191906200049c565b600f80546001600160a01b039283166001600160a01b031991821617909155600c8054821633908117909155600d8054909216179055600654306000818152600260209081526040808320949094558154909416815260058452828120805460ff1990811660019081179092558383528483208054909116909117905582516b033b2e3c9fd0803ce800000081529251919390927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a350620004ce565b6001600160a01b0383166200038f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620003f25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000386565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000826200047157634e487b7160e01b600052601260045260246000fd5b500690565b6000828210156200049757634e487b7160e01b600052601160045260246000fd5b500390565b600060208284031215620004af57600080fd5b81516001600160a01b0381168114620004c757600080fd5b9392505050565b61144b80620004de6000396000f3fe60806040526004361061010d5760003560e01c8063715018a6116100955780638e4a2803116100645780638e4a2803146102e657806395d89b4114610306578063a9059cbb14610332578063da09c72c14610352578063dd62ed3e1461037257600080fd5b8063715018a6146102965780638258cbbd146102ab5780638a8c523c146102c05780638da5cb5b146102c857600080fd5b806323b872dd116100dc57806323b872dd146101e2578063313ce567146102025780633ff42b921461021e57806349bd5a5e1461025657806370a082311461027657600080fd5b806306fdde0314610126578063095ea7b31461016957806318160ddd146101995780631f53ac02146101c257600080fd5b36610121573330141561011f57600080fd5b005b600080fd5b34801561013257600080fd5b50604080518082019091526008815267496d61676520414960c01b60208201525b6040516101609190611146565b60405180910390f35b34801561017557600080fd5b506101896101843660046111b0565b6103b8565b6040519015158152602001610160565b3480156101a557600080fd5b506b033b2e3c9fd0803ce80000005b604051908152602001610160565b3480156101ce57600080fd5b5061011f6101dd3660046111dc565b6103cf565b3480156101ee57600080fd5b506101896101fd3660046111f9565b610408565b34801561020e57600080fd5b5060405160128152602001610160565b34801561022a57600080fd5b50600c5461023e906001600160a01b031681565b6040516001600160a01b039091168152602001610160565b34801561026257600080fd5b50600f5461023e906001600160a01b031681565b34801561028257600080fd5b506101b46102913660046111dc565b610471565b3480156102a257600080fd5b5061011f610493565b3480156102b757600080fd5b5061011f61053c565b61011f610578565b3480156102d457600080fd5b506000546001600160a01b031661023e565b3480156102f257600080fd5b5061011f6103013660046111f9565b61072b565b34801561031257600080fd5b5060408051808201909152600381526249414960e81b6020820152610153565b34801561033e57600080fd5b5061018961034d3660046111b0565b610813565b34801561035e57600080fd5b50600d5461023e906001600160a01b031681565b34801561037e57600080fd5b506101b461038d36600461123a565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b60006103c5338484610820565b5060015b92915050565b600c546001600160a01b031633146103e657600080fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610415848484610944565b6104678433610462856040518060600160405280602881526020016113ee602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610a03565b610820565b5060019392505050565b6001600160a01b0381166000908152600260205260408120546103c990610a3d565b6000546001600160a01b031633146104f25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600c546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610575573d6000803e3d6000fd5b50565b6000546001600160a01b031633146105d25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104e9565b600e546001600160a01b031663f305d71947306105ee81610471565b6000806106036000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561066657600080fd5b505af115801561067a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061069f9190611273565b5050600f54600e5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b390604401602060405180830381600087803b1580156106f357600080fd5b505af1158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057591906112a1565b600c546001600160a01b0316331461074257600080fd5b600080600061075084610ac1565b50506001600160a01b038a1660009081526002602052604090205493965091945090925061078091905084610b1e565b6001600160a01b0380881660009081526002602052604080822093909355908716815220546107af9083610b60565b6001600160a01b0380871660008181526002602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108039085815260200190565b60405180910390a3505050505050565b60006103c5338484610944565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104e9565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104e9565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526005602052604090205460019060ff168061098657506001600160a01b03831660009081526005602052604090205460ff165b15610993575060006109f1565b600061099e30610471565b600f54909150600160a01b900460ff161580156109c95750600f546001600160a01b03868116911614155b156109ef5780156109dd576109dd81610bbf565b4780156109ed576109ed47610d48565b505b505b6109fd84848484610d86565b50505050565b60008184841115610a275760405162461bcd60e51b81526004016104e99190611146565b506000610a3484866112d9565b95945050505050565b6000600654821115610aa45760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016104e9565b6000610aae610db4565b9050610aba8382610dd7565b9392505050565b6000806000806000806000806000610ade8a600854600954610e19565b9250925092506000610aee610db4565b90506000806000610b018e878787610e6e565b919e509c509a509598509396509194505050505091939550919395565b6000610aba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610a03565b600080610b6d83856112f0565b905083811015610aba5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104e9565b600f805460ff60a01b1916600160a01b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610c0757610c07611308565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015610c5b57600080fd5b505afa158015610c6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c93919061131e565b81600181518110610ca657610ca6611308565b6001600160a01b039283166020918202929092010152600e54610ccc9130911684610820565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d0590859060009086903090429060040161133b565b600060405180830381600087803b158015610d1f57600080fd5b505af1158015610d33573d6000803e3d6000fd5b5050600f805460ff60a01b1916905550505050565b600d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610d82573d6000803e3d6000fd5b5050565b80610d9357610d93610ebe565b610d9e848484610eec565b806109fd576109fd600a54600855600b54600955565b6000806000610dc1610fe3565b9092509050610dd08282610dd7565b9250505090565b6000610aba83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061102b565b6000808080610e336064610e2d8989611059565b90610dd7565b90506000610e466064610e2d8a89611059565b90506000610e5e82610e588b86610b1e565b90610b1e565b9992985090965090945050505050565b6000808080610e7d8886611059565b90506000610e8b8887611059565b90506000610e998888611059565b90506000610eab82610e588686610b1e565b939b939a50919850919650505050505050565b600854158015610ece5750600954155b15610ed557565b60088054600a5560098054600b5560009182905555565b600080600080600080610efe87610ac1565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150610f309087610b1e565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054610f5f9086610b60565b6001600160a01b038916600090815260026020526040902055610f81816110d8565b610f8b8483611122565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610fd091815260200190565b60405180910390a3505050505050505050565b60065460009081906b033b2e3c9fd0803ce80000006110028282610dd7565b821015611022575050600654926b033b2e3c9fd0803ce800000092509050565b90939092509050565b6000818361104c5760405162461bcd60e51b81526004016104e99190611146565b506000610a3484866113ac565b600082611068575060006103c9565b600061107483856113ce565b90508261108185836113ac565b14610aba5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104e9565b60006110e2610db4565b905060006110f08383611059565b3060009081526002602052604090205490915061110d9082610b60565b30600090815260026020526040902055505050565b60065461112f9083610b1e565b60065560075461113f9082610b60565b6007555050565b600060208083528351808285015260005b8181101561117357858101830151858201604001528201611157565b81811115611185576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461057557600080fd5b600080604083850312156111c357600080fd5b82356111ce8161119b565b946020939093013593505050565b6000602082840312156111ee57600080fd5b8135610aba8161119b565b60008060006060848603121561120e57600080fd5b83356112198161119b565b925060208401356112298161119b565b929592945050506040919091013590565b6000806040838503121561124d57600080fd5b82356112588161119b565b915060208301356112688161119b565b809150509250929050565b60008060006060848603121561128857600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156112b357600080fd5b81518015158114610aba57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156112eb576112eb6112c3565b500390565b60008219821115611303576113036112c3565b500190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561133057600080fd5b8151610aba8161119b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561138b5784516001600160a01b031683529383019391830191600101611366565b50506001600160a01b03969096166060850152505050608001529392505050565b6000826113c957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156113e8576113e86112c3565b50029056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122038f318982e63227d946ac2bda6866d99f775dedfbada61154ffe1436ad9b5eac64736f6c63430008090033

Deployed Bytecode

0x60806040526004361061010d5760003560e01c8063715018a6116100955780638e4a2803116100645780638e4a2803146102e657806395d89b4114610306578063a9059cbb14610332578063da09c72c14610352578063dd62ed3e1461037257600080fd5b8063715018a6146102965780638258cbbd146102ab5780638a8c523c146102c05780638da5cb5b146102c857600080fd5b806323b872dd116100dc57806323b872dd146101e2578063313ce567146102025780633ff42b921461021e57806349bd5a5e1461025657806370a082311461027657600080fd5b806306fdde0314610126578063095ea7b31461016957806318160ddd146101995780631f53ac02146101c257600080fd5b36610121573330141561011f57600080fd5b005b600080fd5b34801561013257600080fd5b50604080518082019091526008815267496d61676520414960c01b60208201525b6040516101609190611146565b60405180910390f35b34801561017557600080fd5b506101896101843660046111b0565b6103b8565b6040519015158152602001610160565b3480156101a557600080fd5b506b033b2e3c9fd0803ce80000005b604051908152602001610160565b3480156101ce57600080fd5b5061011f6101dd3660046111dc565b6103cf565b3480156101ee57600080fd5b506101896101fd3660046111f9565b610408565b34801561020e57600080fd5b5060405160128152602001610160565b34801561022a57600080fd5b50600c5461023e906001600160a01b031681565b6040516001600160a01b039091168152602001610160565b34801561026257600080fd5b50600f5461023e906001600160a01b031681565b34801561028257600080fd5b506101b46102913660046111dc565b610471565b3480156102a257600080fd5b5061011f610493565b3480156102b757600080fd5b5061011f61053c565b61011f610578565b3480156102d457600080fd5b506000546001600160a01b031661023e565b3480156102f257600080fd5b5061011f6103013660046111f9565b61072b565b34801561031257600080fd5b5060408051808201909152600381526249414960e81b6020820152610153565b34801561033e57600080fd5b5061018961034d3660046111b0565b610813565b34801561035e57600080fd5b50600d5461023e906001600160a01b031681565b34801561037e57600080fd5b506101b461038d36600461123a565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b60006103c5338484610820565b5060015b92915050565b600c546001600160a01b031633146103e657600080fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610415848484610944565b6104678433610462856040518060600160405280602881526020016113ee602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610a03565b610820565b5060019392505050565b6001600160a01b0381166000908152600260205260408120546103c990610a3d565b6000546001600160a01b031633146104f25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600c546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610575573d6000803e3d6000fd5b50565b6000546001600160a01b031633146105d25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104e9565b600e546001600160a01b031663f305d71947306105ee81610471565b6000806106036000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561066657600080fd5b505af115801561067a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061069f9190611273565b5050600f54600e5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b390604401602060405180830381600087803b1580156106f357600080fd5b505af1158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057591906112a1565b600c546001600160a01b0316331461074257600080fd5b600080600061075084610ac1565b50506001600160a01b038a1660009081526002602052604090205493965091945090925061078091905084610b1e565b6001600160a01b0380881660009081526002602052604080822093909355908716815220546107af9083610b60565b6001600160a01b0380871660008181526002602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108039085815260200190565b60405180910390a3505050505050565b60006103c5338484610944565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104e9565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104e9565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526005602052604090205460019060ff168061098657506001600160a01b03831660009081526005602052604090205460ff165b15610993575060006109f1565b600061099e30610471565b600f54909150600160a01b900460ff161580156109c95750600f546001600160a01b03868116911614155b156109ef5780156109dd576109dd81610bbf565b4780156109ed576109ed47610d48565b505b505b6109fd84848484610d86565b50505050565b60008184841115610a275760405162461bcd60e51b81526004016104e99190611146565b506000610a3484866112d9565b95945050505050565b6000600654821115610aa45760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016104e9565b6000610aae610db4565b9050610aba8382610dd7565b9392505050565b6000806000806000806000806000610ade8a600854600954610e19565b9250925092506000610aee610db4565b90506000806000610b018e878787610e6e565b919e509c509a509598509396509194505050505091939550919395565b6000610aba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610a03565b600080610b6d83856112f0565b905083811015610aba5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104e9565b600f805460ff60a01b1916600160a01b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610c0757610c07611308565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015610c5b57600080fd5b505afa158015610c6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c93919061131e565b81600181518110610ca657610ca6611308565b6001600160a01b039283166020918202929092010152600e54610ccc9130911684610820565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d0590859060009086903090429060040161133b565b600060405180830381600087803b158015610d1f57600080fd5b505af1158015610d33573d6000803e3d6000fd5b5050600f805460ff60a01b1916905550505050565b600d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610d82573d6000803e3d6000fd5b5050565b80610d9357610d93610ebe565b610d9e848484610eec565b806109fd576109fd600a54600855600b54600955565b6000806000610dc1610fe3565b9092509050610dd08282610dd7565b9250505090565b6000610aba83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061102b565b6000808080610e336064610e2d8989611059565b90610dd7565b90506000610e466064610e2d8a89611059565b90506000610e5e82610e588b86610b1e565b90610b1e565b9992985090965090945050505050565b6000808080610e7d8886611059565b90506000610e8b8887611059565b90506000610e998888611059565b90506000610eab82610e588686610b1e565b939b939a50919850919650505050505050565b600854158015610ece5750600954155b15610ed557565b60088054600a5560098054600b5560009182905555565b600080600080600080610efe87610ac1565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150610f309087610b1e565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054610f5f9086610b60565b6001600160a01b038916600090815260026020526040902055610f81816110d8565b610f8b8483611122565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610fd091815260200190565b60405180910390a3505050505050505050565b60065460009081906b033b2e3c9fd0803ce80000006110028282610dd7565b821015611022575050600654926b033b2e3c9fd0803ce800000092509050565b90939092509050565b6000818361104c5760405162461bcd60e51b81526004016104e99190611146565b506000610a3484866113ac565b600082611068575060006103c9565b600061107483856113ce565b90508261108185836113ac565b14610aba5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104e9565b60006110e2610db4565b905060006110f08383611059565b3060009081526002602052604090205490915061110d9082610b60565b30600090815260026020526040902055505050565b60065461112f9083610b1e565b60065560075461113f9082610b60565b6007555050565b600060208083528351808285015260005b8181101561117357858101830151858201604001528201611157565b81811115611185576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461057557600080fd5b600080604083850312156111c357600080fd5b82356111ce8161119b565b946020939093013593505050565b6000602082840312156111ee57600080fd5b8135610aba8161119b565b60008060006060848603121561120e57600080fd5b83356112198161119b565b925060208401356112298161119b565b929592945050506040919091013590565b6000806040838503121561124d57600080fd5b82356112588161119b565b915060208301356112688161119b565b809150509250929050565b60008060006060848603121561128857600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156112b357600080fd5b81518015158114610aba57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156112eb576112eb6112c3565b500390565b60008219821115611303576113036112c3565b500190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561133057600080fd5b8151610aba8161119b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561138b5784516001600160a01b031683529383019391830191600101611366565b50506001600160a01b03969096166060850152505050608001529392505050565b6000826113c957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156113e8576113e86112c3565b50029056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122038f318982e63227d946ac2bda6866d99f775dedfbada61154ffe1436ad9b5eac64736f6c63430008090033

Deployed Bytecode Sourcemap

4276:9304:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13092:10;13114:4;13092:27;;13084:36;;;;;;4276:9304;;;;;6064:83;;;;;;;;;;-1:-1:-1;6134:5:0;;;;;;;;;;;;-1:-1:-1;;;6134:5:0;;;;6064:83;;;;;;;:::i;:::-;;;;;;;;6916:161;;;;;;;;;;-1:-1:-1;6916:161:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;6916:161:0;1072:187:1;6341:95:0;;;;;;;;;;-1:-1:-1;4673:12:0;6341:95;;;1410:25:1;;;1398:2;1383:18;6341:95:0;1264:177:1;13436:141:0;;;;;;;;;;-1:-1:-1;13436:141:0;;;;;:::i;:::-;;:::i;7085:313::-;;;;;;;;;;-1:-1:-1;7085:313:0;;;;;:::i;:::-;;:::i;6250:83::-;;;;;;;;;;-1:-1:-1;6250:83:0;;4937:2;2309:36:1;;2297:2;2282:18;6250:83:0;2167:184:1;5113:36:0;;;;;;;;;;-1:-1:-1;5113:36:0;;;;-1:-1:-1;;;;;5113:36:0;;;;;;-1:-1:-1;;;;;2536:32:1;;;2518:51;;2506:2;2491:18;5113:36:0;2356:219:1;5242:28:0;;;;;;;;;;-1:-1:-1;5242:28:0;;;;-1:-1:-1;;;;;5242:28:0;;;6444:138;;;;;;;;;;-1:-1:-1;6444:138:0;;;;;:::i;:::-;;:::i;3355:148::-;;;;;;;;;;;;;:::i;9572:99::-;;;;;;;;;;;;;:::i;13140:284::-;;;:::i;3141:79::-;;;;;;;;;;-1:-1:-1;3179:7:0;3206:6;-1:-1:-1;;;;;3206:6:0;3141:79;;10554:420;;;;;;;;;;-1:-1:-1;10554:420:0;;;;;:::i;:::-;;:::i;6155:87::-;;;;;;;;;;-1:-1:-1;6227:7:0;;;;;;;;;;;;-1:-1:-1;;;6227:7:0;;;;6155:87;;6590:167;;;;;;;;;;-1:-1:-1;6590:167:0;;;;;:::i;:::-;;:::i;5156:30::-;;;;;;;;;;-1:-1:-1;5156:30:0;;;;-1:-1:-1;;;;;5156:30:0;;;6765:143;;;;;;;;;;-1:-1:-1;6765:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6873:18:0;;;6846:7;6873:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6765:143;6916:161;6991:4;7008:39;630:10;7031:7;7040:6;7008:8;:39::i;:::-;-1:-1:-1;7065:4:0;6916:161;;;;;:::o;13436:141::-;13526:13;;-1:-1:-1;;;;;13526:13:0;13512:10;:27;13504:36;;;;;;13551:7;:18;;-1:-1:-1;;;;;;13551:18:0;-1:-1:-1;;;;;13551:18:0;;;;;;;;;;13436:141::o;7085:313::-;7183:4;7200:36;7210:6;7218:9;7229:6;7200:9;:36::i;:::-;7247:121;7256:6;630:10;7278:89;7316:6;7278:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7278:19:0;;;;;;:11;:19;;;;;;;;630:10;7278:33;;;;;;;;;;:37;:89::i;:::-;7247:8;:121::i;:::-;-1:-1:-1;7386:4:0;7085:313;;;;;:::o;6444:138::-;-1:-1:-1;;;;;6557:16:0;;6510:7;6557:16;;;:7;:16;;;;;;6537:37;;:19;:37::i;3355:148::-;3268:6;;-1:-1:-1;;;;;3268:6:0;630:10;3268:22;3260:67;;;;-1:-1:-1;;;3260:67:0;;3635:2:1;3260:67:0;;;3617:21:1;;;3654:18;;;3647:30;3713:34;3693:18;;;3686:62;3765:18;;3260:67:0;;;;;;;;;3462:1:::1;3446:6:::0;;3425:40:::1;::::0;-1:-1:-1;;;;;3446:6:0;;::::1;::::0;3425:40:::1;::::0;3462:1;;3425:40:::1;3493:1;3476:19:::0;;-1:-1:-1;;;;;;3476:19:0::1;::::0;;3355:148::o;9572:99::-;9618:13;;:45;;-1:-1:-1;;;;;9618:13:0;;;;9641:21;9618:45;;;;;:13;:45;:13;:45;9641:21;9618:13;:45;;;;;;;;;;;;;;;;;;;;;9572:99::o;13140:284::-;3268:6;;-1:-1:-1;;;;;3268:6:0;630:10;3268:22;3260:67;;;;-1:-1:-1;;;3260:67:0;;3635:2:1;3260:67:0;;;3617:21:1;;;3654:18;;;3647:30;3713:34;3693:18;;;3686:62;3765:18;;3260:67:0;3433:356:1;3260:67:0;13205:15:::1;::::0;-1:-1:-1;;;;;13205:15:0::1;:31;13244:21;13275:4;13281:24;13275:4:::0;13281:9:::1;:24::i;:::-;13306:1;13308::::0;13310:7:::1;3179::::0;3206:6;-1:-1:-1;;;;;3206:6:0;;3141:79;13310:7:::1;13205:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;13205:129:0;;;-1:-1:-1;;;;;4153:15:1;;;13205:129:0::1;::::0;::::1;4135:34:1::0;4185:18;;;4178:34;;;;4228:18;;;4221:34;;;;4271:18;;;4264:34;4335:15;;;4314:19;;;4307:44;13318:15:0::1;4367:19:1::0;;;4360:35;4069:19;;13205:129:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13352:13:0::1;::::0;13383:15:::1;::::0;13345:71:::1;::::0;-1:-1:-1;;;13345:71:0;;-1:-1:-1;;;;;13383:15:0;;::::1;13345:71;::::0;::::1;4891:51:1::0;-1:-1:-1;;4958:18:1;;;4951:34;13352:13:0;::::1;::::0;-1:-1:-1;13345:29:0::1;::::0;4864:18:1;;13345:71:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10554:420::-:0;10664:13;;-1:-1:-1;;;;;10664:13:0;10650:10;:27;10642:36;;;;;;10688:15;10705:23;10731;10760:18;10771:6;10760:10;:18::i;:::-;-1:-1:-1;;;;;;;10807:15:0;;;;;;:7;:15;;;;;;10687:91;;-1:-1:-1;10687:91:0;;-1:-1:-1;10687:91:0;;-1:-1:-1;10807:28:0;;:15;-1:-1:-1;10687:91:0;10807:19;:28::i;:::-;-1:-1:-1;;;;;10789:15:0;;;;;;;:7;:15;;;;;;:46;;;;10867:18;;;;;;;:39;;10890:15;10867:22;:39::i;:::-;-1:-1:-1;;;;;10846:18:0;;;;;;;:7;:18;;;;;;;:60;;;;10922:44;;;;;;;;;;10950:15;1410:25:1;;1398:2;1383:18;;1264:177;10922:44:0;;;;;;;;10631:343;;;10554:420;;;:::o;6590:167::-;6668:4;6685:42;630:10;6709:9;6720:6;6685:9;:42::i;8013:335::-;-1:-1:-1;;;;;8106:19:0;;8098:68;;;;-1:-1:-1;;;8098:68:0;;5480:2:1;8098:68:0;;;5462:21:1;5519:2;5499:18;;;5492:30;5558:34;5538:18;;;5531:62;-1:-1:-1;;;5609:18:1;;;5602:34;5653:19;;8098:68:0;5278:400:1;8098:68:0;-1:-1:-1;;;;;8185:21:0;;8177:68;;;;-1:-1:-1;;;8177:68:0;;5885:2:1;8177:68:0;;;5867:21:1;5924:2;5904:18;;;5897:30;5963:34;5943:18;;;5936:62;-1:-1:-1;;;6014:18:1;;;6007:32;6056:19;;8177:68:0;5683:398:1;8177:68:0;-1:-1:-1;;;;;8256:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8308:32;;1410:25:1;;;8308:32:0;;1383:18:1;8308:32:0;;;;;;;8013:335;;;:::o;8360:716::-;-1:-1:-1;;;;;8473:15:0;;8440:12;8473:15;;;:9;:15;;;;;;8455:4;;8473:15;;;:32;;-1:-1:-1;;;;;;8492:13:0;;;;;;:9;:13;;;;;;;;8473:32;8470:550;;;-1:-1:-1;8532:5:0;8470:550;;;8570:28;8601:24;8619:4;8601:9;:24::i;:::-;8646:6;;8570:55;;-1:-1:-1;;;;8646:6:0;;;;8645:7;:32;;;;-1:-1:-1;8664:13:0;;-1:-1:-1;;;;;8656:21:0;;;8664:13;;8656:21;;8645:32;8642:367;;;8701:24;;8698:110;;8750:38;8767:20;8750:16;:38::i;:::-;8855:21;8898:22;;8895:99;;8945:29;8952:21;8945:6;:29::i;:::-;8679:330;8642:367;8555:465;8470:550;9030:38;9045:4;9050:2;9053:6;9060:7;9030:14;:38::i;:::-;8429:647;8360:716;;;:::o;1687:190::-;1773:7;1809:12;1801:6;;;;1793:29;;;;-1:-1:-1;;;1793:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1833:9:0;1845:5;1849:1;1845;:5;:::i;:::-;1833:17;1687:190;-1:-1:-1;;;;;1687:190:0:o;7406:254::-;7473:7;7512;;7501;:18;;7493:73;;;;-1:-1:-1;;;7493:73:0;;6550:2:1;7493:73:0;;;6532:21:1;6589:2;6569:18;;;6562:30;6628:34;6608:18;;;6601:62;-1:-1:-1;;;6679:18:1;;;6672:40;6729:19;;7493:73:0;6348:406:1;7493:73:0;7577:19;7600:10;:8;:10::i;:::-;7577:33;-1:-1:-1;7628:24:0;:7;7577:33;7628:11;:24::i;:::-;7621:31;7406:254;-1:-1:-1;;;7406:254:0:o;10982:468::-;11041:7;11050;11059;11068;11077;11086;11107:23;11132:12;11146:13;11163:39;11175:7;11184;;11193:8;;11163:11;:39::i;:::-;11106:96;;;;;;11213:19;11236:10;:8;:10::i;:::-;11213:33;;11258:15;11275:23;11300:12;11316:46;11328:7;11337:4;11343:5;11350:11;11316;:46::i;:::-;11257:105;;-1:-1:-1;11257:105:0;-1:-1:-1;11257:105:0;-1:-1:-1;11413:15:0;;-1:-1:-1;11430:4:0;;-1:-1:-1;11436:5:0;;-1:-1:-1;;;;;10982:468:0;;;;;;;:::o;1543:136::-;1601:7;1628:43;1632:1;1635;1628:43;;;;;;;;;;;;;;;;;:3;:43::i;1356:179::-;1414:7;;1446:5;1450:1;1446;:5;:::i;:::-;1434:17;;1475:1;1470;:6;;1462:46;;;;-1:-1:-1;;;1462:46:0;;7094:2:1;1462:46:0;;;7076:21:1;7133:2;7113:18;;;7106:30;7172:29;7152:18;;;7145:57;7219:18;;1462:46:0;6892:351:1;9084:480:0;5344:6;:13;;-1:-1:-1;;;;5344:13:0;-1:-1:-1;;;5344:13:0;;;9183:16:::1;::::0;;9197:1:::1;9183:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9183:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9183:16:0::1;9159:40;;9228:4;9210;9215:1;9210:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9210:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;9254:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;9254:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;9210:7;;9254:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9244:4;9249:1;9244:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9244:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;9319:15:::1;::::0;9287:62:::1;::::0;9304:4:::1;::::0;9319:15:::1;9337:11:::0;9287:8:::1;:62::i;:::-;9360:15;::::0;:196:::1;::::0;-1:-1:-1;;;9360:196:0;;-1:-1:-1;;;;;9360:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;9441:11;;9360:15:::1;::::0;9483:4;;9510::::1;::::0;9530:15:::1;::::0;9360:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5380:6:0;:14;;-1:-1:-1;;;;5380:14:0;;;-1:-1:-1;;;;9084:480:0:o;9687:83::-;9738:7;;:24;;-1:-1:-1;;;;;9738:7:0;;;;:24;;;;;9755:6;;9738:7;:24;:7;:24;9755:6;9738:7;:24;;;;;;;;;;;;;;;;;;;;;9687:83;:::o;9782:263::-;9894:7;9890:40;;9916:14;:12;:14::i;:::-;9941:44;9959:6;9967:9;9978:6;9941:17;:44::i;:::-;10000:7;9996:41;;10022:15;7944;;7934:7;:25;7981:16;;7970:8;:27;7890:115;11817:163;11858:7;11879:15;11896;11915:19;:17;:19::i;:::-;11878:56;;-1:-1:-1;11878:56:0;-1:-1:-1;11952:20:0;11878:56;;11952:11;:20::i;:::-;11945:27;;;;11817:163;:::o;2138:132::-;2196:7;2223:39;2227:1;2230;2223:39;;;;;;;;;;;;;;;;;:3;:39::i;11458:351::-;11551:7;;;;11604:28;11628:3;11604:19;:7;11616:6;11604:11;:19::i;:::-;:23;;:28::i;:::-;11589:43;-1:-1:-1;11643:13:0;11659:29;11684:3;11659:20;:7;11671;11659:11;:20::i;:29::-;11643:45;-1:-1:-1;11699:23:0;11725:28;11643:45;11725:17;:7;11737:4;11725:11;:17::i;:::-;:21;;:28::i;:::-;11699:54;11789:4;;-1:-1:-1;11795:5:0;;-1:-1:-1;11458:351:0;;-1:-1:-1;;;;;11458:351:0:o;12251:409::-;12361:7;;;;12417:24;:7;12429:11;12417;:24::i;:::-;12399:42;-1:-1:-1;12452:12:0;12467:21;:4;12476:11;12467:8;:21::i;:::-;12452:36;-1:-1:-1;12499:13:0;12515:22;:5;12525:11;12515:9;:22::i;:::-;12499:38;-1:-1:-1;12548:23:0;12574:28;12499:38;12574:17;:7;12586:4;12574:11;:17::i;:28::-;12621:7;;;;-1:-1:-1;12647:4:0;;-1:-1:-1;12251:409:0;;-1:-1:-1;;;;;;;12251:409:0:o;7668:210::-;7714:7;;:12;:29;;;;-1:-1:-1;7730:8:0;;:13;7714:29;7711:41;;;7668:210::o;7711:41::-;7780:7;;;7762:15;:25;7817:8;;;7798:16;:27;-1:-1:-1;7836:11:0;;;;7858:12;7668:210::o;10053:493::-;10152:15;10169:23;10194:12;10208:23;10233:12;10247:13;10264:19;10275:7;10264:10;:19::i;:::-;-1:-1:-1;;;;;10312:15:0;;;;;;:7;:15;;;;;;10151:132;;-1:-1:-1;10151:132:0;;-1:-1:-1;10151:132:0;;-1:-1:-1;10151:132:0;-1:-1:-1;10151:132:0;-1:-1:-1;10151:132:0;-1:-1:-1;10312:28:0;;10151:132;10312:19;:28::i;:::-;-1:-1:-1;;;;;10294:15:0;;;;;;;:7;:15;;;;;;:46;;;;10372:18;;;;;;;:39;;10395:15;10372:22;:39::i;:::-;-1:-1:-1;;;;;10351:18:0;;;;;;:7;:18;;;;;:60;10425:19;10438:5;10425:12;:19::i;:::-;10455:23;10467:4;10473;10455:11;:23::i;:::-;10511:9;-1:-1:-1;;;;;10494:44:0;10503:6;-1:-1:-1;;;;;10494:44:0;;10522:15;10494:44;;;;1410:25:1;;1398:2;1383:18;;1264:177;10494:44:0;;;;;;;;10140:406;;;;;;10053:493;;;:::o;11988:255::-;12085:7;;12038;;;;4673:12;12152:20;12085:7;4673:12;12152:11;:20::i;:::-;12142:7;:30;12139:60;;;-1:-1:-1;;12182:7:0;;;4673:12;;-1:-1:-1;11988:255:0;-1:-1:-1;11988:255:0:o;12139:60::-;12218:7;;12227;;-1:-1:-1;11988:255:0;-1:-1:-1;11988:255:0:o;2278:189::-;2364:7;2399:12;2392:5;2384:28;;;;-1:-1:-1;;;2384:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2423:9:0;2435:5;2439:1;2435;:5;:::i;1885:245::-;1943:7;1966:6;1963:46;;-1:-1:-1;1996:1:0;1989:8;;1963:46;2019:9;2031:5;2035:1;2031;:5;:::i;:::-;2019:17;-1:-1:-1;2064:1:0;2055:5;2059:1;2019:17;2055:5;:::i;:::-;:10;2047:56;;;;-1:-1:-1;;;2047:56:0;;9350:2:1;2047:56:0;;;9332:21:1;9389:2;9369:18;;;9362:30;9428:34;9408:18;;;9401:62;-1:-1:-1;;;9479:18:1;;;9472:31;9520:19;;2047:56:0;9148:397:1;12668:217:0;12724:19;12747:10;:8;:10::i;:::-;12724:33;-1:-1:-1;12768:13:0;12784:22;:5;12724:33;12784:9;:22::i;:::-;12860:4;12844:22;;;;:7;:22;;;;;;12768:38;;-1:-1:-1;12844:33:0;;12768:38;12844:26;:33::i;:::-;12835:4;12819:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;12668:217:0:o;12893:147::-;12971:7;;:17;;12983:4;12971:11;:17::i;:::-;12961:7;:27;13012:10;;:20;;13027:4;13012:14;:20::i;:::-;12999:10;:33;-1:-1:-1;;12893:147:0:o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:255::-;1513:6;1566:2;1554:9;1545:7;1541:23;1537:32;1534:52;;;1582:1;1579;1572:12;1534:52;1621:9;1608:23;1640:31;1665:5;1640:31;:::i;1706:456::-;1783:6;1791;1799;1852:2;1840:9;1831:7;1827:23;1823:32;1820:52;;;1868:1;1865;1858:12;1820:52;1907:9;1894:23;1926:31;1951:5;1926:31;:::i;:::-;1976:5;-1:-1:-1;2033:2:1;2018:18;;2005:32;2046:33;2005:32;2046:33;:::i;:::-;1706:456;;2098:7;;-1:-1:-1;;;2152:2:1;2137:18;;;;2124:32;;1706:456::o;3040:388::-;3108:6;3116;3169:2;3157:9;3148:7;3144:23;3140:32;3137:52;;;3185:1;3182;3175:12;3137:52;3224:9;3211:23;3243:31;3268:5;3243:31;:::i;:::-;3293:5;-1:-1:-1;3350:2:1;3335:18;;3322:32;3363:33;3322:32;3363:33;:::i;:::-;3415:7;3405:17;;;3040:388;;;;;:::o;4406:306::-;4494:6;4502;4510;4563:2;4551:9;4542:7;4538:23;4534:32;4531:52;;;4579:1;4576;4569:12;4531:52;4608:9;4602:16;4592:26;;4658:2;4647:9;4643:18;4637:25;4627:35;;4702:2;4691:9;4687:18;4681:25;4671:35;;4406:306;;;;;:::o;4996:277::-;5063:6;5116:2;5104:9;5095:7;5091:23;5087:32;5084:52;;;5132:1;5129;5122:12;5084:52;5164:9;5158:16;5217:5;5210:13;5203:21;5196:5;5193:32;5183:60;;5239:1;5236;5229:12;6086:127;6147:10;6142:3;6138:20;6135:1;6128:31;6178:4;6175:1;6168:15;6202:4;6199:1;6192:15;6218:125;6258:4;6286:1;6283;6280:8;6277:34;;;6291:18;;:::i;:::-;-1:-1:-1;6328:9:1;;6218:125::o;6759:128::-;6799:3;6830:1;6826:6;6823:1;6820:13;6817:39;;;6836:18;;:::i;:::-;-1:-1:-1;6872:9:1;;6759:128::o;7380:127::-;7441:10;7436:3;7432:20;7429:1;7422:31;7472:4;7469:1;7462:15;7496:4;7493:1;7486:15;7512:251;7582:6;7635:2;7623:9;7614:7;7610:23;7606:32;7603:52;;;7651:1;7648;7641:12;7603:52;7683:9;7677:16;7702:31;7727:5;7702:31;:::i;7768:980::-;8030:4;8078:3;8067:9;8063:19;8109:6;8098:9;8091:25;8135:2;8173:6;8168:2;8157:9;8153:18;8146:34;8216:3;8211:2;8200:9;8196:18;8189:31;8240:6;8275;8269:13;8306:6;8298;8291:22;8344:3;8333:9;8329:19;8322:26;;8383:2;8375:6;8371:15;8357:29;;8404:1;8414:195;8428:6;8425:1;8422:13;8414:195;;;8493:13;;-1:-1:-1;;;;;8489:39:1;8477:52;;8584:15;;;;8549:12;;;;8525:1;8443:9;8414:195;;;-1:-1:-1;;;;;;;8665:32:1;;;;8660:2;8645:18;;8638:60;-1:-1:-1;;;8729:3:1;8714:19;8707:35;8626:3;7768:980;-1:-1:-1;;;7768:980:1:o;8753:217::-;8793:1;8819;8809:132;;8863:10;8858:3;8854:20;8851:1;8844:31;8898:4;8895:1;8888:15;8926:4;8923:1;8916:15;8809:132;-1:-1:-1;8955:9:1;;8753:217::o;8975:168::-;9015:7;9081:1;9077;9073:6;9069:14;9066:1;9063:21;9058:1;9051:9;9044:17;9040:45;9037:71;;;9088:18;;:::i;:::-;-1:-1:-1;9128:9:1;;8975:168::o

Swarm Source

ipfs://38f318982e63227d946ac2bda6866d99f775dedfbada61154ffe1436ad9b5eac
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.