ETH Price: $3,485.23 (+2.27%)
Gas: 10 Gwei

Token

Enso Terminal (ENSO)
 

Overview

Max Total Supply

694,514,322.778365854929921173 ENSO

Holders

117

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,114,812.706680994605570569 ENSO

Value
$0.00
0xcaa92e89ba303884bcbc5bbb5e2ad821275d2305
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:
ENSO

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-25
*/

/**

Website: https://ensoterminal.com
Twitter: https://twitter.com/ensoterminal
Telegram: https://t.me/ensoterminal
 
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from,
        address to,
        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 IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = _allowances[owner][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

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

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {
    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 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;
        }
    }
}

contract ENSO is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 private _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private _uniswapV2Pair;
    
    uint256 public maxHoldings;
    uint256 public feeThreshold;
    bool public tradingActive;
        
    uint256 private _totalSupply = 1000000000 * 10 ** 18;
    bool private _inSwap;
    bool private _swapEnabled;
    uint256 private _taxFee;
    address private _taxAddr;

    mapping (address => bool) private _excludeFees;

    constructor() ERC20("Enso Terminal", "ENSO") {
        feeThreshold = _totalSupply * 6 / 1000000;
        _taxAddr = address(0xD593558C3A10446368095619768027c73E682598);

        // exclution from fees and limits
        _excludeFees[_taxAddr] = true;
        _excludeFees[owner()] = true;
        _excludeFees[address(this)] = true;
        _excludeFees[address(0xdead)] = true;

        uint256 liquidityTokens = _totalSupply * 98 / 100;
        _mint(address(this), liquidityTokens);
        _mint(msg.sender, _totalSupply.sub(liquidityTokens));
    }

    function createLP() external onlyOwner {
        _uniswapV2Pair = IUniswapV2Factory(
            _uniswapV2Router.factory()).createPair(address(this), 
            _uniswapV2Router.WETH()
        );

        tradingActive = true;
        _addLiquidity(
            balanceOf(address(this)), 
            address(this).balance
        );
        tradingActive = false;
        maxHoldings = _totalSupply * 2 / 100;
    }

    function stealthLaunch() external onlyOwner {
        tradingActive = true;
        _swapEnabled = true;
        _taxFee = 20;
    }

    function setNormalFee() external onlyOwner {
        _taxFee = 3;
    }

    function removeLimit() external onlyOwner {
        maxHoldings = 0;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "Transfer from the zero address not allowed.");
        require(to != address(0), "Transfer to the zero address not allowed.");

        // no reason to waste gas
        bool isBuy = from == _uniswapV2Pair;
        bool isSell = to == _uniswapV2Pair;
        bool isFee = from == _taxAddr;
        bool exluded = _excludeFees[from] || _excludeFees[to];

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        // if pair has not yet been created
        if (!tradingActive) {
            require(exluded, "Please wait for the LP pair to be created.");
            return;
        }

        // max holding check
        if (maxHoldings > 0 && isBuy && !exluded)
            require(super.balanceOf(to) + amount <= maxHoldings, "Balance exceeds max holdings amount, consider using a second wallet.");
        
        
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = amount >= feeThreshold;
        if (
            _swapEnabled &&
            canSwap &&
            !_inSwap &&
            isSell &&
            !exluded
        ) {
            _inSwap = true;
            if (contractTokenBalance > feeThreshold) swapBack();
            sendETH();
            _inSwap = false;
        }


        // check if we should be taking the fee
        bool takeFee = !_inSwap;
        if (exluded || !isBuy && !isSell) takeFee = false;
        if (isFee && !isSell) { super._burn(_uniswapV2Pair, amount); return; } 
        
        if (takeFee) {
            uint256 fees = amount.mul(_taxFee).div(100);
            
            if (fees > 0)
                super._transfer(from, address(this), fees);
            
            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    // swaps tokens to eth
    function _swapTokensForEth(uint256 tokenAmount) internal {
        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
        );
    }

    // does what it says
    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        _approve(address(this), address(_uniswapV2Router), tokenAmount);

        _uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function swapBack() internal {
        uint256 contractBal = balanceOf(address(this));        
        if (contractBal == 0) return;
        if (contractBal >= feeThreshold * 1500) contractBal = feeThreshold * 1500;
        _swapTokensForEth(contractBal);
    }

    // transfers any stuck eth from contract to feeAddr
    function sendETH() public {
        payable(_taxAddr).transfer(address(this).balance);
    }

    receive() external payable {}
}

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":"createLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setNormalFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stealthLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"}]

6080604052600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556b033b2e3c9fd0803ce8000000600b5534801562000046575f80fd5b506040518060400160405280600d81526020016c115b9cdbc815195c9b5a5b985b609a1b81525060405180604001604052806004815260200163454e534f60e01b81525081600390816200009b919062000416565b506004620000aa828262000416565b505050620000c7620000c16200022260201b60201c565b62000226565b620f4240600b546006620000dc9190620004f2565b620000e891906200050c565b600955600e80546001600160a01b03191673d593558c3a10446368095619768027c73e6825989081179091555f908152600f60208190527f33957f1eab12ff6dd6d5166b92ef1d2a5682f6f866d26c6cc4ee3d44570f590a805460ff1916600190811790915591620001626005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff19958616179055308152600f909252812080548316600190811790915561dead82527f99629f56119585bf27511b6b7d295dffb54757453fcc3dabcf51d92028301f10805490931617909155600b54606490620001e5906062620004f2565b620001f191906200050c565b9050620001ff308262000277565b600b546200021b9033906200021590846200035c565b62000277565b5062000558565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620002d25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f828254620002e591906200052c565b90915550506001600160a01b0382165f9081526020819052604081208054839290620003139084906200052c565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b5f62000369828462000542565b90505b92915050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620003a057607f821691505b602082108103620003bf57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000372575f81815260208120601f850160051c81016020861015620003ed5750805b601f850160051c820191505b818110156200040e57828155600101620003f9565b505050505050565b81516001600160401b0381111562000432576200043262000377565b6200044a816200044384546200038b565b84620003c5565b602080601f83116001811462000480575f8415620004685750858301515b5f19600386901b1c1916600185901b1785556200040e565b5f85815260208120601f198616915b82811015620004b0578886015182559484019460019091019084016200048f565b5085821015620004ce57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176200036c576200036c620004de565b5f826200052757634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200036c576200036c620004de565b818103818111156200036c576200036c620004de565b61178980620005665f395ff3fe608060405260043610610134575f3560e01c80638da5cb5b116100a8578063bbc0c7421161006d578063bbc0c74214610322578063cb4e162b1461033b578063dd62ed3e14610350578063e54f4faa14610394578063f2fde38b146103a9578063f7f23a0c146103c8575f80fd5b80638da5cb5b146102955780638f0e110b146102bc57806395d89b41146102d0578063a457c2d7146102e4578063a9059cbb14610303575f80fd5b806323b872dd116100f957806323b872dd146101e0578063313ce567146101ff578063395093511461021a578063622565891461023957806370a082311461024d578063715018a614610281575f80fd5b806306fdde031461013f57806307df7a0d14610169578063095ea7b31461017f57806318160ddd146101ae5780631d16d9a0146101cc575f80fd5b3661013b57005b5f80fd5b34801561014a575f80fd5b506101536103dc565b6040516101609190611494565b60405180910390f35b348015610174575f80fd5b5061017d61046c565b005b34801561018a575f80fd5b5061019e6101993660046114f3565b6104c2565b6040519015158152602001610160565b3480156101b9575f80fd5b506002545b604051908152602001610160565b3480156101d7575f80fd5b5061017d6104db565b3480156101eb575f80fd5b5061019e6101fa36600461151d565b610514565b34801561020a575f80fd5b5060405160128152602001610160565b348015610225575f80fd5b5061019e6102343660046114f3565b610537565b348015610244575f80fd5b5061017d610575565b348015610258575f80fd5b506101be61026736600461155b565b6001600160a01b03165f9081526020819052604090205490565b34801561028c575f80fd5b5061017d6105a5565b3480156102a0575f80fd5b506005546040516001600160a01b039091168152602001610160565b3480156102c7575f80fd5b5061017d6105da565b3480156102db575f80fd5b5061015361060b565b3480156102ef575f80fd5b5061019e6102fe3660046114f3565b61061a565b34801561030e575f80fd5b5061019e61031d3660046114f3565b6106ab565b34801561032d575f80fd5b50600a5461019e9060ff1681565b348015610346575f80fd5b506101be60095481565b34801561035b575f80fd5b506101be61036a366004611576565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561039f575f80fd5b506101be60085481565b3480156103b4575f80fd5b5061017d6103c336600461155b565b6106b8565b3480156103d3575f80fd5b5061017d610750565b6060600380546103eb906115ad565b80601f0160208091040260200160405190810160405280929190818152602001828054610417906115ad565b80156104625780601f1061043957610100808354040283529160200191610462565b820191905f5260205f20905b81548152906001019060200180831161044557829003601f168201915b5050505050905090565b6005546001600160a01b0316331461049f5760405162461bcd60e51b8152600401610496906115e5565b60405180910390fd5b600a805460ff19166001179055600c805461ff0019166101001790556014600d55565b5f336104cf81858561094f565b60019150505b92915050565b600e546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610511573d5f803e3d5ffd5b50565b5f33610521858285610a73565b61052c858585610b03565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091906104cf908290869061057090879061162e565b61094f565b6005546001600160a01b0316331461059f5760405162461bcd60e51b8152600401610496906115e5565b5f600855565b6005546001600160a01b031633146105cf5760405162461bcd60e51b8152600401610496906115e5565b6105d85f610eab565b565b6005546001600160a01b031633146106045760405162461bcd60e51b8152600401610496906115e5565b6003600d55565b6060600480546103eb906115ad565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091908381101561069e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610496565b61052c828686840361094f565b5f336104cf818585610b03565b6005546001600160a01b031633146106e25760405162461bcd60e51b8152600401610496906115e5565b6001600160a01b0381166107475760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610496565b61051181610eab565b6005546001600160a01b0316331461077a5760405162461bcd60e51b8152600401610496906115e5565b60065f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ee9190611641565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108719190611641565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156108bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108df9190611641565b600780546001600160a01b0319166001600160a01b0392909216919091179055600a805460ff19166001179055305f908152602081905260409020546109259047610efc565b600a805460ff19169055600b5460649061094090600261165c565b61094a9190611673565b600855565b6001600160a01b0383166109b15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610496565b6001600160a01b038216610a125760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610496565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610afd5781811015610af05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610496565b610afd848484840361094f565b50505050565b6001600160a01b038316610b6d5760405162461bcd60e51b815260206004820152602b60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60448201526a37ba1030b63637bbb2b21760a91b6064820152608401610496565b6001600160a01b038216610bd55760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220746f20746865207a65726f2061646472657373206e6f746044820152681030b63637bbb2b21760b91b6064820152608401610496565b600754600e546001600160a01b038581165f818152600f602052604081205494831682811495888516909114949093169091149160ff1680610c2e57506001600160a01b0386165f908152600f602052604090205460ff165b9050845f03610c4b57610c4287875f610fce565b50505050505050565b600a5460ff16610cb55780610c425760405162461bcd60e51b815260206004820152602a60248201527f506c65617365207761697420666f7220746865204c50207061697220746f2062604482015269329031b932b0ba32b21760b11b6064820152608401610496565b5f600854118015610cc35750835b8015610ccd575080155b15610d805760085485610cf4886001600160a01b03165f9081526020819052604090205490565b610cfe919061162e565b1115610d805760405162461bcd60e51b8152602060048201526044602482018190527f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f908201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c6064820152633632ba1760e11b608482015260a401610496565b305f90815260208190526040902054600954600c549087101590610100900460ff168015610dab5750805b8015610dba5750600c5460ff16155b8015610dc35750845b8015610dcd575082155b15610e0457600c805460ff19166001179055600954821115610df157610df161119a565b610df96104db565b600c805460ff191690555b600c5460ff16158380610e1e575086158015610e1e575085155b15610e2657505f5b848015610e31575085155b15610e5857600754610e4c906001600160a01b0316896111e4565b50505050505050505050565b8015610ea0575f610e7f6064610e79600d548c61132790919063ffffffff16565b90611339565b90508015610e9257610e928b3083610fce565b610e9c818a611692565b9850505b610e4c8a8a8a610fce565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600654610f149030906001600160a01b03168461094f565b6006546001600160a01b031663f305d7198230855f80610f3c6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610fa2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fc791906116a5565b5050505050565b6001600160a01b0383166110325760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610496565b6001600160a01b0382166110945760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610496565b6001600160a01b0383165f908152602081905260409020548181101561110b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610496565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061114190849061162e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161118d91815260200190565b60405180910390a3610afd565b305f90815260208190526040812054908190036111b45750565b6009546111c3906105dc61165c565b81106111db576009546111d8906105dc61165c565b90505b61051181611344565b6001600160a01b0382166112445760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610496565b6001600160a01b0382165f90815260208190526040902054818110156112b75760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610496565b6001600160a01b0383165f9081526020819052604081208383039055600280548492906112e5908490611692565b90915550506040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610a66565b5f611332828461165c565b9392505050565b5f6113328284611673565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611377576113776116d0565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f29190611641565b81600181518110611405576114056116d0565b6001600160a01b03928316602091820292909201015260065461142b913091168461094f565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906114639085905f908690309042906004016116e4565b5f604051808303815f87803b15801561147a575f80fd5b505af115801561148c573d5f803e3d5ffd5b505050505050565b5f6020808352835180828501525f5b818110156114bf578581018301518582016040015282016114a3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610511575f80fd5b5f8060408385031215611504575f80fd5b823561150f816114df565b946020939093013593505050565b5f805f6060848603121561152f575f80fd5b833561153a816114df565b9250602084013561154a816114df565b929592945050506040919091013590565b5f6020828403121561156b575f80fd5b8135611332816114df565b5f8060408385031215611587575f80fd5b8235611592816114df565b915060208301356115a2816114df565b809150509250929050565b600181811c908216806115c157607f821691505b6020821081036115df57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104d5576104d561161a565b5f60208284031215611651575f80fd5b8151611332816114df565b80820281158282048414176104d5576104d561161a565b5f8261168d57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104d5576104d561161a565b5f805f606084860312156116b7575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117325784516001600160a01b03168352938301939183019160010161170d565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212206975d598258f4f8b9460a7d87233a7ade1ca71bf3f8162f84667419f7a5c8b3664736f6c63430008140033

Deployed Bytecode

0x608060405260043610610134575f3560e01c80638da5cb5b116100a8578063bbc0c7421161006d578063bbc0c74214610322578063cb4e162b1461033b578063dd62ed3e14610350578063e54f4faa14610394578063f2fde38b146103a9578063f7f23a0c146103c8575f80fd5b80638da5cb5b146102955780638f0e110b146102bc57806395d89b41146102d0578063a457c2d7146102e4578063a9059cbb14610303575f80fd5b806323b872dd116100f957806323b872dd146101e0578063313ce567146101ff578063395093511461021a578063622565891461023957806370a082311461024d578063715018a614610281575f80fd5b806306fdde031461013f57806307df7a0d14610169578063095ea7b31461017f57806318160ddd146101ae5780631d16d9a0146101cc575f80fd5b3661013b57005b5f80fd5b34801561014a575f80fd5b506101536103dc565b6040516101609190611494565b60405180910390f35b348015610174575f80fd5b5061017d61046c565b005b34801561018a575f80fd5b5061019e6101993660046114f3565b6104c2565b6040519015158152602001610160565b3480156101b9575f80fd5b506002545b604051908152602001610160565b3480156101d7575f80fd5b5061017d6104db565b3480156101eb575f80fd5b5061019e6101fa36600461151d565b610514565b34801561020a575f80fd5b5060405160128152602001610160565b348015610225575f80fd5b5061019e6102343660046114f3565b610537565b348015610244575f80fd5b5061017d610575565b348015610258575f80fd5b506101be61026736600461155b565b6001600160a01b03165f9081526020819052604090205490565b34801561028c575f80fd5b5061017d6105a5565b3480156102a0575f80fd5b506005546040516001600160a01b039091168152602001610160565b3480156102c7575f80fd5b5061017d6105da565b3480156102db575f80fd5b5061015361060b565b3480156102ef575f80fd5b5061019e6102fe3660046114f3565b61061a565b34801561030e575f80fd5b5061019e61031d3660046114f3565b6106ab565b34801561032d575f80fd5b50600a5461019e9060ff1681565b348015610346575f80fd5b506101be60095481565b34801561035b575f80fd5b506101be61036a366004611576565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561039f575f80fd5b506101be60085481565b3480156103b4575f80fd5b5061017d6103c336600461155b565b6106b8565b3480156103d3575f80fd5b5061017d610750565b6060600380546103eb906115ad565b80601f0160208091040260200160405190810160405280929190818152602001828054610417906115ad565b80156104625780601f1061043957610100808354040283529160200191610462565b820191905f5260205f20905b81548152906001019060200180831161044557829003601f168201915b5050505050905090565b6005546001600160a01b0316331461049f5760405162461bcd60e51b8152600401610496906115e5565b60405180910390fd5b600a805460ff19166001179055600c805461ff0019166101001790556014600d55565b5f336104cf81858561094f565b60019150505b92915050565b600e546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610511573d5f803e3d5ffd5b50565b5f33610521858285610a73565b61052c858585610b03565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091906104cf908290869061057090879061162e565b61094f565b6005546001600160a01b0316331461059f5760405162461bcd60e51b8152600401610496906115e5565b5f600855565b6005546001600160a01b031633146105cf5760405162461bcd60e51b8152600401610496906115e5565b6105d85f610eab565b565b6005546001600160a01b031633146106045760405162461bcd60e51b8152600401610496906115e5565b6003600d55565b6060600480546103eb906115ad565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091908381101561069e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610496565b61052c828686840361094f565b5f336104cf818585610b03565b6005546001600160a01b031633146106e25760405162461bcd60e51b8152600401610496906115e5565b6001600160a01b0381166107475760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610496565b61051181610eab565b6005546001600160a01b0316331461077a5760405162461bcd60e51b8152600401610496906115e5565b60065f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ee9190611641565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108719190611641565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156108bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108df9190611641565b600780546001600160a01b0319166001600160a01b0392909216919091179055600a805460ff19166001179055305f908152602081905260409020546109259047610efc565b600a805460ff19169055600b5460649061094090600261165c565b61094a9190611673565b600855565b6001600160a01b0383166109b15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610496565b6001600160a01b038216610a125760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610496565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610afd5781811015610af05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610496565b610afd848484840361094f565b50505050565b6001600160a01b038316610b6d5760405162461bcd60e51b815260206004820152602b60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60448201526a37ba1030b63637bbb2b21760a91b6064820152608401610496565b6001600160a01b038216610bd55760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220746f20746865207a65726f2061646472657373206e6f746044820152681030b63637bbb2b21760b91b6064820152608401610496565b600754600e546001600160a01b038581165f818152600f602052604081205494831682811495888516909114949093169091149160ff1680610c2e57506001600160a01b0386165f908152600f602052604090205460ff165b9050845f03610c4b57610c4287875f610fce565b50505050505050565b600a5460ff16610cb55780610c425760405162461bcd60e51b815260206004820152602a60248201527f506c65617365207761697420666f7220746865204c50207061697220746f2062604482015269329031b932b0ba32b21760b11b6064820152608401610496565b5f600854118015610cc35750835b8015610ccd575080155b15610d805760085485610cf4886001600160a01b03165f9081526020819052604090205490565b610cfe919061162e565b1115610d805760405162461bcd60e51b8152602060048201526044602482018190527f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f908201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c6064820152633632ba1760e11b608482015260a401610496565b305f90815260208190526040902054600954600c549087101590610100900460ff168015610dab5750805b8015610dba5750600c5460ff16155b8015610dc35750845b8015610dcd575082155b15610e0457600c805460ff19166001179055600954821115610df157610df161119a565b610df96104db565b600c805460ff191690555b600c5460ff16158380610e1e575086158015610e1e575085155b15610e2657505f5b848015610e31575085155b15610e5857600754610e4c906001600160a01b0316896111e4565b50505050505050505050565b8015610ea0575f610e7f6064610e79600d548c61132790919063ffffffff16565b90611339565b90508015610e9257610e928b3083610fce565b610e9c818a611692565b9850505b610e4c8a8a8a610fce565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600654610f149030906001600160a01b03168461094f565b6006546001600160a01b031663f305d7198230855f80610f3c6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610fa2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fc791906116a5565b5050505050565b6001600160a01b0383166110325760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610496565b6001600160a01b0382166110945760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610496565b6001600160a01b0383165f908152602081905260409020548181101561110b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610496565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061114190849061162e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161118d91815260200190565b60405180910390a3610afd565b305f90815260208190526040812054908190036111b45750565b6009546111c3906105dc61165c565b81106111db576009546111d8906105dc61165c565b90505b61051181611344565b6001600160a01b0382166112445760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610496565b6001600160a01b0382165f90815260208190526040902054818110156112b75760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610496565b6001600160a01b0383165f9081526020819052604081208383039055600280548492906112e5908490611692565b90915550506040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610a66565b5f611332828461165c565b9392505050565b5f6113328284611673565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611377576113776116d0565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f29190611641565b81600181518110611405576114056116d0565b6001600160a01b03928316602091820292909201015260065461142b913091168461094f565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906114639085905f908690309042906004016116e4565b5f604051808303815f87803b15801561147a575f80fd5b505af115801561148c573d5f803e3d5ffd5b505050505050565b5f6020808352835180828501525f5b818110156114bf578581018301518582016040015282016114a3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610511575f80fd5b5f8060408385031215611504575f80fd5b823561150f816114df565b946020939093013593505050565b5f805f6060848603121561152f575f80fd5b833561153a816114df565b9250602084013561154a816114df565b929592945050506040919091013590565b5f6020828403121561156b575f80fd5b8135611332816114df565b5f8060408385031215611587575f80fd5b8235611592816114df565b915060208301356115a2816114df565b809150509250929050565b600181811c908216806115c157607f821691505b6020821081036115df57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104d5576104d561161a565b5f60208284031215611651575f80fd5b8151611332816114df565b80820281158282048414176104d5576104d561161a565b5f8261168d57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104d5576104d561161a565b5f805f606084860312156116b7575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117325784516001600160a01b03168352938301939183019160010161170d565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212206975d598258f4f8b9460a7d87233a7ade1ca71bf3f8162f84667419f7a5c8b3664736f6c63430008140033

Deployed Bytecode Sourcemap

9445:5289:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1765:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11037:136;;;;;;;;;;;;;:::i;:::-;;2697:201;;;;;;;;;;-1:-1:-1;2697:201:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;2697:201:0;1023:187:1;2086:108:0;;;;;;;;;;-1:-1:-1;2174:12:0;;2086:108;;;1361:25:1;;;1349:2;1334:18;2086:108:0;1215:177:1;14600:94:0;;;;;;;;;;;;;:::i;2906:295::-;;;;;;;;;;-1:-1:-1;2906:295:0;;;;;:::i;:::-;;:::i;1985:93::-;;;;;;;;;;-1:-1:-1;1985:93:0;;2068:2;2000:36:1;;1988:2;1973:18;1985:93:0;1858:184:1;3209:240:0;;;;;;;;;;-1:-1:-1;3209:240:0;;;;;:::i;:::-;;:::i;11262:76::-;;;;;;;;;;;;;:::i;2202:127::-;;;;;;;;;;-1:-1:-1;2202:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2303:18:0;2276:7;2303:18;;;;;;;;;;;;2202:127;7985:103;;;;;;;;;;;;;:::i;7762:87::-;;;;;;;;;;-1:-1:-1;7835:6:0;;7762:87;;-1:-1:-1;;;;;7835:6:0;;;2445:51:1;;2433:2;2418:18;7762:87:0;2299:203:1;11181:73:0;;;;;;;;;;;;;:::i;1873:104::-;;;;;;;;;;;;;:::i;3457:438::-;;;;;;;;;;-1:-1:-1;3457:438:0;;;;;:::i;:::-;;:::i;2337:193::-;;;;;;;;;;-1:-1:-1;2337:193:0;;;;;:::i;:::-;;:::i;9744:25::-;;;;;;;;;;-1:-1:-1;9744:25:0;;;;;;;;9710:27;;;;;;;;;;;;;;;;2538:151;;;;;;;;;;-1:-1:-1;2538:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2654:18:0;;;2627:7;2654:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2538:151;9677:26;;;;;;;;;;;;;;;;8096:201;;;;;;;;;;-1:-1:-1;8096:201:0;;;;;:::i;:::-;;:::i;10597:432::-;;;;;;;;;;;;;:::i;1765:100::-;1819:13;1852:5;1845:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1765:100;:::o;11037:136::-;7835:6;;-1:-1:-1;;;;;7835:6:0;307:10;7897:23;7889:68;;;;-1:-1:-1;;;7889:68:0;;;;;;;:::i;:::-;;;;;;;;;11092:13:::1;:20:::0;;-1:-1:-1;;11092:20:0::1;11108:4;11092:20;::::0;;11123:12:::1;:19:::0;;-1:-1:-1;;11123:19:0::1;11092:20;11123:19;::::0;;11163:2:::1;11153:7;:12:::0;11037:136::o;2697:201::-;2780:4;307:10;2836:32;307:10;2852:7;2861:6;2836:8;:32::i;:::-;2886:4;2879:11;;;2697:201;;;;;:::o;14600:94::-;14645:8;;14637:49;;-1:-1:-1;;;;;14645:8:0;;;;14664:21;14637:49;;;;;14645:8;14637:49;14645:8;14637:49;14664:21;14645:8;14637:49;;;;;;;;;;;;;;;;;;;;;14600:94::o;2906:295::-;3037:4;307:10;3095:38;3111:4;307:10;3126:6;3095:15;:38::i;:::-;3144:27;3154:4;3160:2;3164:6;3144:9;:27::i;:::-;-1:-1:-1;3189:4:0;;2906:295;-1:-1:-1;;;;2906:295:0:o;3209:240::-;307:10;3297:4;3378:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;3378:27:0;;;;;;;;;;3297:4;;307:10;3353:66;;307:10;;3378:27;;:40;;3408:10;;3378:40;:::i;:::-;3353:8;:66::i;11262:76::-;7835:6;;-1:-1:-1;;;;;7835:6:0;307:10;7897:23;7889:68;;;;-1:-1:-1;;;7889:68:0;;;;;;;:::i;:::-;11329:1:::1;11315:11;:15:::0;11262:76::o;7985:103::-;7835:6;;-1:-1:-1;;;;;7835:6:0;307:10;7897:23;7889:68;;;;-1:-1:-1;;;7889:68:0;;;;;;;:::i;:::-;8050:30:::1;8077:1;8050:18;:30::i;:::-;7985:103::o:0;11181:73::-;7835:6;;-1:-1:-1;;;;;7835:6:0;307:10;7897:23;7889:68;;;;-1:-1:-1;;;7889:68:0;;;;;;;:::i;:::-;11245:1:::1;11235:7;:11:::0;11181:73::o;1873:104::-;1929:13;1962:7;1955:14;;;;;:::i;3457:438::-;307:10;3550:4;3633:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;3633:27:0;;;;;;;;;;3550:4;;307:10;3679:35;;;;3671:85;;;;-1:-1:-1;;;3671:85:0;;4110:2:1;3671:85:0;;;4092:21:1;4149:2;4129:18;;;4122:30;4188:34;4168:18;;;4161:62;-1:-1:-1;;;4239:18:1;;;4232:35;4284:19;;3671:85:0;3908:401:1;3671:85:0;3792:60;3801:5;3808:7;3836:15;3817:16;:34;3792:8;:60::i;2337:193::-;2416:4;307:10;2472:28;307:10;2489:2;2493:6;2472:9;:28::i;8096:201::-;7835:6;;-1:-1:-1;;;;;7835:6:0;307:10;7897:23;7889:68;;;;-1:-1:-1;;;7889:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8185:22:0;::::1;8177:73;;;::::0;-1:-1:-1;;;8177:73:0;;4516:2:1;8177:73:0::1;::::0;::::1;4498:21:1::0;4555:2;4535:18;;;4528:30;4594:34;4574:18;;;4567:62;-1:-1:-1;;;4645:18:1;;;4638:36;4691:19;;8177:73:0::1;4314:402:1::0;8177:73:0::1;8261:28;8280:8;8261:18;:28::i;10597:432::-:0;7835:6;;-1:-1:-1;;;;;7835:6:0;307:10;7897:23;7889:68;;;;-1:-1:-1;;;7889:68:0;;;;;;;:::i;:::-;10696:16:::1;;;;;;;;;-1:-1:-1::0;;;;;10696:16:0::1;-1:-1:-1::0;;;;;10696:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10664:70:0::1;;10743:4;10764:16;;;;;;;;;-1:-1:-1::0;;;;;10764:16:0::1;-1:-1:-1::0;;;;;10764:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10664:134;::::0;-1:-1:-1;;;;;;10664:134:0::1;::::0;;;;;;-1:-1:-1;;;;;5207:15:1;;;10664:134:0::1;::::0;::::1;5189:34:1::0;5259:15;;5239:18;;;5232:43;5124:18;;10664:134:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10647:14;:151:::0;;-1:-1:-1;;;;;;10647:151:0::1;-1:-1:-1::0;;;;;10647:151:0;;;::::1;::::0;;;::::1;::::0;;10811:13:::1;:20:::0;;-1:-1:-1;;10811:20:0::1;-1:-1:-1::0;10811:20:0::1;::::0;;10888:4:::1;-1:-1:-1::0;2303:18:0;;;;;;;;;;;10842:100:::1;::::0;10910:21:::1;10842:13;:100::i;:::-;10953:13;:21:::0;;-1:-1:-1;;10953:21:0::1;::::0;;10999:12:::1;::::0;11018:3:::1;::::0;10999:16:::1;::::0;11014:1:::1;10999:16;:::i;:::-;:22;;;;:::i;:::-;10985:11;:36:::0;10597:432::o;5588:380::-;-1:-1:-1;;;;;5724:19:0;;5716:68;;;;-1:-1:-1;;;5716:68:0;;5883:2:1;5716:68:0;;;5865:21:1;5922:2;5902:18;;;5895:30;5961:34;5941:18;;;5934:62;-1:-1:-1;;;6012:18:1;;;6005:34;6056:19;;5716:68:0;5681:400:1;5716:68:0;-1:-1:-1;;;;;5803:21:0;;5795:68;;;;-1:-1:-1;;;5795:68:0;;6288:2:1;5795:68:0;;;6270:21:1;6327:2;6307:18;;;6300:30;6366:34;6346:18;;;6339:62;-1:-1:-1;;;6417:18:1;;;6410:32;6459:19;;5795:68:0;6086:398:1;5795:68:0;-1:-1:-1;;;;;5876:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5928:32;;1361:25:1;;;5928:32:0;;1334:18:1;5928:32:0;;;;;;;;5588:380;;;:::o;5976:453::-;-1:-1:-1;;;;;2654:18:0;;;6111:24;2654:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;6178:37:0;;6174:248;;6260:6;6240:16;:26;;6232:68;;;;-1:-1:-1;;;6232:68:0;;6691:2:1;6232:68:0;;;6673:21:1;6730:2;6710:18;;;6703:30;6769:31;6749:18;;;6742:59;6818:18;;6232:68:0;6489:353:1;6232:68:0;6344:51;6353:5;6360:7;6388:6;6369:16;:25;6344:8;:51::i;:::-;6100:329;5976:453;;;:::o;11346:1999::-;-1:-1:-1;;;;;11478:18:0;;11470:74;;;;-1:-1:-1;;;11470:74:0;;7049:2:1;11470:74:0;;;7031:21:1;7088:2;7068:18;;;7061:30;7127:34;7107:18;;;7100:62;-1:-1:-1;;;7178:18:1;;;7171:41;7229:19;;11470:74:0;6847:407:1;11470:74:0;-1:-1:-1;;;;;11563:16:0;;11555:70;;;;-1:-1:-1;;;11555:70:0;;7461:2:1;11555:70:0;;;7443:21:1;7500:2;7480:18;;;7473:30;7539:34;7519:18;;;7512:62;-1:-1:-1;;;7590:18:1;;;7583:39;7639:19;;11555:70:0;7259:405:1;11555:70:0;11694:14;;11785:8;;-1:-1:-1;;;;;11686:22:0;;;11673:10;11819:18;;;:12;:18;;;;;;11694:14;;;11686:22;;;;11733:20;;;;;;;11785:8;;;11777:16;;;;11819:18;;;:38;;-1:-1:-1;;;;;;11841:16:0;;;;;;:12;:16;;;;;;;;11819:38;11804:53;;11874:6;11884:1;11874:11;11870:93;;11902:28;11918:4;11924:2;11928:1;11902:15;:28::i;:::-;11945:7;;;;11346:1999;;;:::o;11870:93::-;12025:13;;;;12020:130;;12063:7;12055:62;;;;-1:-1:-1;;;12055:62:0;;7871:2:1;12055:62:0;;;7853:21:1;7910:2;7890:18;;;7883:30;7949:34;7929:18;;;7922:62;-1:-1:-1;;;8000:18:1;;;7993:40;8050:19;;12055:62:0;7669:406:1;12020:130:0;12210:1;12196:11;;:15;:24;;;;;12215:5;12196:24;:36;;;;;12225:7;12224:8;12196:36;12192:179;;;12287:11;;12277:6;12255:19;12271:2;-1:-1:-1;;;;;2303:18:0;2276:7;2303:18;;;;;;;;;;;;2202:127;12255:19;:28;;;;:::i;:::-;:43;;12247:124;;;;-1:-1:-1;;;12247:124:0;;8282:2:1;12247:124:0;;;8264:21:1;8321:2;8301:18;;;8294:30;;;8360:34;8340:18;;;8333:62;8431:34;8411:18;;;8404:62;-1:-1:-1;;;8482:19:1;;;8475:35;8527:19;;12247:124:0;8080:472:1;12247:124:0;12451:4;12402:28;2303:18;;;;;;;;;;;12493:12;;12534;;12483:22;;;;;12534:12;;;;;:36;;;;;12563:7;12534:36;:61;;;;-1:-1:-1;12588:7:0;;;;12587:8;12534:61;:84;;;;;12612:6;12534:84;:109;;;;;12636:7;12635:8;12534:109;12516:300;;;12670:7;:14;;-1:-1:-1;;12670:14:0;12680:4;12670:14;;;12726:12;;12703:35;;12699:51;;;12740:10;:8;:10::i;:::-;12765:9;:7;:9::i;:::-;12789:7;:15;;-1:-1:-1;;12789:15:0;;;12516:300;12895:7;;;;12894:8;12917:7;;:28;;;12929:5;12928:6;:17;;;;;12939:6;12938:7;12928:17;12913:49;;;-1:-1:-1;12957:5:0;12913:49;12977:5;:16;;;;;12987:6;12986:7;12977:16;12973:70;;;13009:14;;12997:35;;-1:-1:-1;;;;;13009:14:0;13025:6;12997:11;:35::i;:::-;13034:7;;;;;;;11346:1999;;;:::o;12973:70::-;13068:7;13064:228;;;13092:12;13107:28;13131:3;13107:19;13118:7;;13107:6;:10;;:19;;;;:::i;:::-;:23;;:28::i;:::-;13092:43;-1:-1:-1;13168:8:0;;13164:73;;13195:42;13211:4;13225;13232;13195:15;:42::i;:::-;13266:14;13276:4;13266:14;;:::i;:::-;;;13077:215;13064:228;13304:33;13320:4;13326:2;13330:6;13304:15;:33::i;8305:191::-;8398:6;;;-1:-1:-1;;;;;8415:17:0;;;-1:-1:-1;;;;;;8415:17:0;;;;;;;8448:40;;8398:6;;;8415:17;8398:6;;8448:40;;8379:16;;8448:40;8368:128;8305:191;:::o;13895:366::-;14010:16;;13978:63;;13995:4;;-1:-1:-1;;;;;14010:16:0;14029:11;13978:8;:63::i;:::-;14054:16;;-1:-1:-1;;;;;14054:16:0;:32;14094:9;14127:4;14147:11;14054:16;;14205:7;7835:6;;-1:-1:-1;;;;;7835:6:0;;7762:87;14205:7;14054:199;;;;;;-1:-1:-1;;;;;;14054:199:0;;;-1:-1:-1;;;;;9049:15:1;;;14054:199:0;;;9031:34:1;9081:18;;;9074:34;;;;9124:18;;;9117:34;;;;9167:18;;;9160:34;9231:15;;;9210:19;;;9203:44;14227:15:0;9263:19:1;;;9256:35;8965:19;;14054:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13895:366;;:::o;3903:671::-;-1:-1:-1;;;;;4034:18:0;;4026:68;;;;-1:-1:-1;;;4026:68:0;;9815:2:1;4026:68:0;;;9797:21:1;9854:2;9834:18;;;9827:30;9893:34;9873:18;;;9866:62;-1:-1:-1;;;9944:18:1;;;9937:35;9989:19;;4026:68:0;9613:401:1;4026:68:0;-1:-1:-1;;;;;4113:16:0;;4105:64;;;;-1:-1:-1;;;4105:64:0;;10221:2:1;4105:64:0;;;10203:21:1;10260:2;10240:18;;;10233:30;10299:34;10279:18;;;10272:62;-1:-1:-1;;;10350:18:1;;;10343:33;10393:19;;4105:64:0;10019:399:1;4105:64:0;-1:-1:-1;;;;;4255:15:0;;4233:19;4255:15;;;;;;;;;;;4289:21;;;;4281:72;;;;-1:-1:-1;;;4281:72:0;;10625:2:1;4281:72:0;;;10607:21:1;10664:2;10644:18;;;10637:30;10703:34;10683:18;;;10676:62;-1:-1:-1;;;10754:18:1;;;10747:36;10800:19;;4281:72:0;10423:402:1;4281:72:0;-1:-1:-1;;;;;4389:15:0;;;:9;:15;;;;;;;;;;;4407:20;;;4389:38;;4449:13;;;;;;;;:23;;4421:6;;4389:9;4449:23;;4421:6;;4449:23;:::i;:::-;;;;;;;;4505:2;-1:-1:-1;;;;;4490:26:0;4499:4;-1:-1:-1;;;;;4490:26:0;;4509:6;4490:26;;;;1361:25:1;;1349:2;1334:18;;1215:177;4490:26:0;;;;;;;;4529:37;4989:591;14269:266;14349:4;14309:19;2303:18;;;;;;;;;;;;14378:16;;;14374:29;;14396:7;14269:266::o;14374:29::-;14432:12;;:19;;14447:4;14432:19;:::i;:::-;14417:11;:34;14413:73;;14467:12;;:19;;14482:4;14467:19;:::i;:::-;14453:33;;14413:73;14497:30;14515:11;14497:17;:30::i;4989:591::-;-1:-1:-1;;;;;5073:21:0;;5065:67;;;;-1:-1:-1;;;5065:67:0;;11032:2:1;5065:67:0;;;11014:21:1;11071:2;11051:18;;;11044:30;11110:34;11090:18;;;11083:62;-1:-1:-1;;;11161:18:1;;;11154:31;11202:19;;5065:67:0;10830:397:1;5065:67:0;-1:-1:-1;;;;;5232:18:0;;5207:22;5232:18;;;;;;;;;;;5269:24;;;;5261:71;;;;-1:-1:-1;;;5261:71:0;;11434:2:1;5261:71:0;;;11416:21:1;11473:2;11453:18;;;11446:30;11512:34;11492:18;;;11485:62;-1:-1:-1;;;11563:18:1;;;11556:32;11605:19;;5261:71:0;11232:398:1;5261:71:0;-1:-1:-1;;;;;5368:18:0;;:9;:18;;;;;;;;;;5389:23;;;5368:44;;5434:12;:22;;5406:6;;5368:9;5434:22;;5406:6;;5434:22;:::i;:::-;;;;-1:-1:-1;;5474:37:0;;1361:25:1;;;5500:1:0;;-1:-1:-1;;;;;5474:37:0;;;;;1349:2:1;1334:18;5474:37:0;1215:177:1;8739:98:0;8797:7;8824:5;8828:1;8824;:5;:::i;:::-;8817:12;8739:98;-1:-1:-1;;;8739:98:0:o;8845:::-;8903:7;8930:5;8934:1;8930;:5;:::i;13381:480::-;13473:16;;;13487:1;13473:16;;;;;;;;13449:21;;13473:16;;;;;;;;;;-1:-1:-1;13473:16:0;13449:40;;13518:4;13500;13505:1;13500:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13500:23:0;;;:7;;;;;;;;;;:23;;;;13544:16;;:23;;;-1:-1:-1;;;13544:23:0;;;;:16;;;;;:21;;:23;;;;;13500:7;;13544:23;;;;;:16;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13534:4;13539:1;13534:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13534:33:0;;;:7;;;;;;;;;:33;13612:16;;13580:63;;13597:4;;13612:16;13631:11;13580:8;:63::i;:::-;13656:16;;:197;;-1:-1:-1;;;13656:197:0;;-1:-1:-1;;;;;13656:16:0;;;;:67;;:197;;13738:11;;13656:16;;13780:4;;13807;;13827:15;;13656:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13438:423;13381:480;:::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:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:380::-;2979:1;2975:12;;;;3022;;;3043:61;;3097:4;3089:6;3085:17;3075:27;;3043:61;3150:2;3142:6;3139:14;3119:18;3116:38;3113:161;;3196:10;3191:3;3187:20;3184:1;3177:31;3231:4;3228:1;3221:15;3259:4;3256:1;3249:15;3113:161;;2900:380;;;:::o;3285:356::-;3487:2;3469:21;;;3506:18;;;3499:30;3565:34;3560:2;3545:18;;3538:62;3632:2;3617:18;;3285:356::o;3646:127::-;3707:10;3702:3;3698:20;3695:1;3688:31;3738:4;3735:1;3728:15;3762:4;3759:1;3752:15;3778:125;3843:9;;;3864:10;;;3861:36;;;3877:18;;:::i;4721:251::-;4791:6;4844:2;4832:9;4823:7;4819:23;4815:32;4812:52;;;4860:1;4857;4850:12;4812:52;4892:9;4886:16;4911:31;4936:5;4911:31;:::i;5286:168::-;5359:9;;;5390;;5407:15;;;5401:22;;5387:37;5377:71;;5428:18;;:::i;5459:217::-;5499:1;5525;5515:132;;5569:10;5564:3;5560:20;5557:1;5550:31;5604:4;5601:1;5594:15;5632:4;5629:1;5622:15;5515:132;-1:-1:-1;5661:9:1;;5459:217::o;8557:128::-;8624:9;;;8645:11;;;8642:37;;;8659:18;;:::i;9302:306::-;9390:6;9398;9406;9459:2;9447:9;9438:7;9434:23;9430:32;9427:52;;;9475:1;9472;9465:12;9427:52;9504:9;9498:16;9488:26;;9554:2;9543:9;9539:18;9533:25;9523:35;;9598:2;9587:9;9583:18;9577:25;9567:35;;9302:306;;;;;:::o;11767:127::-;11828:10;11823:3;11819:20;11816:1;11809:31;11859:4;11856:1;11849:15;11883:4;11880:1;11873:15;11899:980;12161:4;12209:3;12198:9;12194:19;12240:6;12229:9;12222:25;12266:2;12304:6;12299:2;12288:9;12284:18;12277:34;12347:3;12342:2;12331:9;12327:18;12320:31;12371:6;12406;12400:13;12437:6;12429;12422:22;12475:3;12464:9;12460:19;12453:26;;12514:2;12506:6;12502:15;12488:29;;12535:1;12545:195;12559:6;12556:1;12553:13;12545:195;;;12624:13;;-1:-1:-1;;;;;12620:39:1;12608:52;;12715:15;;;;12680:12;;;;12656:1;12574:9;12545:195;;;-1:-1:-1;;;;;;;12796:32:1;;;;12791:2;12776:18;;12769:60;-1:-1:-1;;;12860:3:1;12845:19;12838:35;12757:3;11899:980;-1:-1:-1;;;11899:980:1:o

Swarm Source

ipfs://6975d598258f4f8b9460a7d87233a7ade1ca71bf3f8162f84667419f7a5c8b36
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.