ETH Price: $3,456.26 (-0.89%)
Gas: 2 Gwei

Token

Encryption AI (Encrypt)
 

Overview

Max Total Supply

1,000,000 Encrypt

Holders

271

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
soulchef.eth
Balance
646 Encrypt

Value
$0.00
0x37450036f83727e0fe62bb0ccfcd2b07075ba6c9
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:
EncryptionAI

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 400 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-02
*/

/**
Encryption A.I An Erc 20 token that provides telegram bots and tools
which helps devs to launch without fear of snipers and bots buying early. 

Telegram :- t.me/EncryptionAIERC
Medium :- https://medium.com/@EncryptionAI
Telegram Bot :- t.me/EncryptionCryptoBot
Twitter :- https://twitter.com/EncryptionAIERC
Website :- 0xEncrypt.ai

*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

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

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

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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

}

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract EncryptionAI is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Encryption AI";
    string private constant _symbol = "Encrypt";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _MFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 5;
    uint256 private _MFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 5;

    //Original Fee
    uint256 private _MFee = _MFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousMFee = _MFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0xbF2954915C89768f4293bA412bA1368382217A8C);
    address payable private _marketingAddress = payable(0xbF2954915C89768f4293bA412bA1368382217A8C);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = _tTotal;
    uint256 public _maxWalletSize = _tTotal * 2 / 100;
    uint256 public _swapTokensAtAmount = _tTotal / 1000;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

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

    function removeAllFee() private {
        if (_MFee == 0 && _taxFee == 0) return;

        _previousMFee = _MFee;
        _previoustaxFee = _taxFee;

        _MFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _MFee = _previousMFee;
        _taxFee = _previoustaxFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _swapTokensAtAmount*8)
            {
                contractTokenBalance = _swapTokensAtAmount*8;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 80000000000000000) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _MFee = _MFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _MFee = _MFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

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

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

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

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

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

    receive() external payable {}

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

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

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

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

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

    function setFee(uint256 MFeeOnBuy, uint256 MFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _MFeeOnBuy = MFeeOnBuy;
        _MFeeOnSell = MFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        uint256 totalFee = _MFeeOnBuy+_MFeeOnSell+_taxFeeOnBuy+_taxFeeOnSell;
        require (totalFee <= 5,"Total Fees cannot be more than 5%");
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = _tTotal*maxTxAmount/100;
        require (_maxTxAmount>= _tTotal/100);
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = _tTotal*maxWalletSize/100;
        require (_maxWalletSize>= _tTotal/100);
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

     function updateMarketingAddress(address _newmarketingAddress) public onlyOwner {
        _marketingAddress = payable(_newmarketingAddress);
    }

    function withdrawUnswappedTokenstoMW(address tokenCA, uint256 _amount) public  {
        IERC20(tokenCA).transfer(_marketingAddress, _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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"MFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"MFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newmarketingAddress","type":"address"}],"name":"updateMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenCA","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawUnswappedTokenstoMW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001866038d7ea4c680005f1962000391565b62000025905f19620003bb565b6006555f600881905560056009819055600a829055600b819055600c829055600d819055600e91909155600f556012805473bf2954915c89768f4293ba412ba1368382217a8c6001600160a01b031991821681179092556013805490911690911790556015805462ffffff60a01b19166201000160a01b17905566038d7ea4c680006016819055606490620000bc906002620003d7565b620000c89190620003f1565b601755620000e06103e866038d7ea4c68000620003f1565b601855348015620000ef575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f9081526002602090815260409182902092909255601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa158015620001a9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001cf919062000407565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000241919062000407565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200028c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002b2919062000407565b601580546001600160a01b0319166001600160a01b039283161790555f80548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601254851684528284208054821683179055601354909416835291208054909216179055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c680006040516200036e91815260200190565b60405180910390a35062000436565b634e487b7160e01b5f52601260045260245ffd5b5f82620003a257620003a26200037d565b500690565b634e487b7160e01b5f52601160045260245ffd5b81810381811115620003d157620003d1620003a7565b92915050565b8082028115828204841417620003d157620003d1620003a7565b5f826200040257620004026200037d565b500490565b5f6020828403121562000418575f80fd5b81516001600160a01b03811681146200042f575f80fd5b9392505050565b611d1280620004445f395ff3fe6080604052600436106101bd575f3560e01c806374010ece116100f2578063a2a957bb11610092578063c492f04611610062578063c492f0461461050a578063dd62ed3e14610529578063ea1644d51461056d578063f2fde38b1461058c575f80fd5b8063a2a957bb1461048a578063a9059cbb146104a9578063bfd79284146104c8578063c3c8cd80146104f6575f80fd5b80638da5cb5b116100cd5780638da5cb5b1461040b5780638f9a55c01461042757806395d89b411461043c57806398a5c3151461046b575f80fd5b806374010ece146103ac5780637d1db4a5146103cb5780637f2feddc146103e0575f80fd5b8063313ce5671161015d5780636d8aa8f8116101385780636d8aa8f8146103465780636fc3eaec1461036557806370a0823114610379578063715018a614610398575f80fd5b8063313ce567146102ed57806349bd5a5e14610308578063561a99a614610327575f80fd5b806318160ddd1161019857806318160ddd146102755780632369bf831461029857806323b872dd146102b95780632fd689e3146102d8575f80fd5b806306fdde03146101c8578063095ea7b31461020f5780631694505e1461023e575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b5060408051808201909152600d81526c456e6372797074696f6e20414960981b60208201525b604051610206919061194d565b60405180910390f35b34801561021a575f80fd5b5061022e6102293660046119ac565b6105ab565b6040519015158152602001610206565b348015610249575f80fd5b5060145461025d906001600160a01b031681565b6040516001600160a01b039091168152602001610206565b348015610280575f80fd5b5066038d7ea4c680005b604051908152602001610206565b3480156102a3575f80fd5b506102b76102b23660046119d6565b6105c1565b005b3480156102c4575f80fd5b5061022e6102d33660046119f1565b61062e565b3480156102e3575f80fd5b5061028a60185481565b3480156102f8575f80fd5b5060405160098152602001610206565b348015610313575f80fd5b5060155461025d906001600160a01b031681565b348015610332575f80fd5b506102b76103413660046119ac565b610695565b348015610351575f80fd5b506102b7610360366004611a3c565b61070e565b348015610370575f80fd5b506102b7610772565b348015610384575f80fd5b5061028a6103933660046119d6565b61077f565b3480156103a3575f80fd5b506102b76107a0565b3480156103b7575f80fd5b506102b76103c6366004611a57565b61082e565b3480156103d6575f80fd5b5061028a60165481565b3480156103eb575f80fd5b5061028a6103fa3660046119d6565b60116020525f908152604090205481565b348015610416575f80fd5b505f546001600160a01b031661025d565b348015610432575f80fd5b5061028a60175481565b348015610447575f80fd5b50604080518082019091526007815266115b98dc9e5c1d60ca1b60208201526101f9565b348015610476575f80fd5b506102b7610485366004611a57565b6108b3565b348015610495575f80fd5b506102b76104a4366004611a6e565b6108fe565b3480156104b4575f80fd5b5061022e6104c33660046119ac565b6109dd565b3480156104d3575f80fd5b5061022e6104e23660046119d6565b60106020525f908152604090205460ff1681565b348015610501575f80fd5b506102b76109e9565b348015610515575f80fd5b506102b7610524366004611a9d565b610a3b565b348015610534575f80fd5b5061028a610543366004611b1c565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610578575f80fd5b506102b7610587366004611a57565b610af5565b348015610597575f80fd5b506102b76105a63660046119d6565b610b7a565b5f6105b7338484610c7e565b5060015b92915050565b5f546001600160a01b0316331461060c5760405162461bcd60e51b815260206004820181905260248201525f80516020611cbd83398151915260448201526064015b60405180910390fd5b601380546001600160a01b0319166001600160a01b0392909216919091179055565b5f61063a848484610da1565b61068b843361068685604051806060016040528060288152602001611c95602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190611257565b610c7e565b5060019392505050565b60135460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af11580156106e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107099190611b53565b505050565b5f546001600160a01b031633146107545760405162461bcd60e51b815260206004820181905260248201525f80516020611cbd8339815191526044820152606401610603565b60158054911515600160b01b0260ff60b01b19909216919091179055565b4761077c8161128f565b50565b6001600160a01b0381165f908152600260205260408120546105bb906112ca565b5f546001600160a01b031633146107e65760405162461bcd60e51b815260206004820181905260248201525f80516020611cbd8339815191526044820152606401610603565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108745760405162461bcd60e51b815260206004820181905260248201525f80516020611cbd8339815191526044820152606401610603565b60646108878266038d7ea4c68000611b82565b6108919190611b99565b6016556108a6606466038d7ea4c68000611b99565b601654101561077c575f80fd5b5f546001600160a01b031633146108f95760405162461bcd60e51b815260206004820181905260248201525f80516020611cbd8339815191526044820152606401610603565b601855565b5f546001600160a01b031633146109445760405162461bcd60e51b815260206004820181905260248201525f80516020611cbd8339815191526044820152606401610603565b6008849055600a8390556009829055600b8190555f81836109658688611bb8565b61096f9190611bb8565b6109799190611bb8565b905060058111156109d65760405162461bcd60e51b815260206004820152602160248201527f546f74616c20466565732063616e6e6f74206265206d6f7265207468616e20356044820152602560f81b6064820152608401610603565b5050505050565b5f6105b7338484610da1565b6012546001600160a01b0316336001600160a01b03161480610a1e57506013546001600160a01b0316336001600160a01b0316145b610a26575f80fd5b5f610a303061077f565b905061077c8161134c565b5f546001600160a01b03163314610a815760405162461bcd60e51b815260206004820181905260248201525f80516020611cbd8339815191526044820152606401610603565b5f5b82811015610aef578160055f868685818110610aa157610aa1611bcb565b9050602002016020810190610ab691906119d6565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580610ae781611bdf565b915050610a83565b50505050565b5f546001600160a01b03163314610b3b5760405162461bcd60e51b815260206004820181905260248201525f80516020611cbd8339815191526044820152606401610603565b6064610b4e8266038d7ea4c68000611b82565b610b589190611b99565b601755610b6d606466038d7ea4c68000611b99565b601754101561077c575f80fd5b5f546001600160a01b03163314610bc05760405162461bcd60e51b815260206004820181905260248201525f80516020611cbd8339815191526044820152606401610603565b6001600160a01b038116610c255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610603565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610ce05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610603565b6001600160a01b038216610d415760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610603565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e055760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610603565b6001600160a01b038216610e675760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610603565b5f8111610ec85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610603565b5f546001600160a01b03848116911614801590610ef257505f546001600160a01b03838116911614155b1561115357601554600160a01b900460ff16610f8a575f546001600160a01b03848116911614610f8a5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610603565b601654811115610fdc5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610603565b6015546001600160a01b038381169116146110615760175481610ffe8461077f565b6110089190611bb8565b106110615760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610603565b5f61106b3061077f565b6018549091508082101590611081906008611b82565b821061109857601854611095906008611b82565b91505b8080156110af5750601554600160a81b900460ff16155b80156110c957506015546001600160a01b03868116911614155b80156110de5750601554600160b01b900460ff165b801561110257506001600160a01b0385165f9081526005602052604090205460ff16155b801561112657506001600160a01b0384165f9081526005602052604090205460ff16155b15611150576111348261134c565b4767011c37937e08000081111561114e5761114e4761128f565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061119357506001600160a01b0383165f9081526005602052604090205460ff165b806111c557506015546001600160a01b038581169116148015906111c557506015546001600160a01b03848116911614155b156111d157505f61124b565b6015546001600160a01b0385811691161480156111fc57506014546001600160a01b03848116911614155b1561120e57600854600c55600954600d555b6015546001600160a01b03848116911614801561123957506014546001600160a01b03858116911614155b1561124b57600a54600c55600b54600d555b610aef848484846114bc565b5f818484111561127a5760405162461bcd60e51b8152600401610603919061194d565b505f6112868486611bf7565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156112c6573d5f803e3d5ffd5b5050565b5f6006548211156113305760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610603565b5f6113396114ea565b9050611345838261150b565b9392505050565b6015805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061139257611392611bcb565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140d9190611c0a565b8160018151811061142057611420611bcb565b6001600160a01b0392831660209182029290920101526014546114469130911684610c7e565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac9479061147e9085905f90869030904290600401611c25565b5f604051808303815f87803b158015611495575f80fd5b505af11580156114a7573d5f803e3d5ffd5b50506015805460ff60a81b1916905550505050565b806114c9576114c961154c565b6114d4848484611579565b80610aef57610aef600e54600c55600f54600d55565b5f805f6114f561166a565b9092509050611504828261150b565b9250505090565b5f61134583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116a7565b600c5415801561155c5750600d54155b1561156357565b600c8054600e55600d8054600f555f9182905555565b5f805f805f80611588876116d3565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506115b99087611728565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546115e79086611769565b6001600160a01b0389165f90815260026020526040902055611608816117c7565b611612848361180d565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161165791815260200190565b60405180910390a3505050505050505050565b6006545f90819066038d7ea4c68000611683828261150b565b82101561169e5750506006549266038d7ea4c6800092509050565b90939092509050565b5f81836116c75760405162461bcd60e51b8152600401610603919061194d565b505f6112868486611b99565b5f805f805f805f805f6116eb8a600c54600d54611831565b9250925092505f6116fa6114ea565b90505f805f61170b8e878787611883565b919e509c509a509598509396509194505050505091939550919395565b5f61134583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611257565b5f806117758385611bb8565b9050838110156113455760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610603565b5f6117d06114ea565b90505f6117dd83836118cf565b305f908152600260205260409020549091506117f99082611769565b305f90815260026020526040902055505050565b60065461181a9083611728565b60065560075461182a9082611769565b6007555050565b5f80808061184a606461184489896118cf565b9061150b565b90505f61185c60646118448a896118cf565b90505f6118738261186d8b86611728565b90611728565b9992985090965090945050505050565b5f80808061189188866118cf565b90505f61189e88876118cf565b90505f6118ab88886118cf565b90505f6118bc8261186d8686611728565b939b939a50919850919650505050505050565b5f825f036118de57505f6105bb565b5f6118e98385611b82565b9050826118f68583611b99565b146113455760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610603565b5f6020808352835180828501525f5b818110156119785785810183015185820160400152820161195c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461077c575f80fd5b5f80604083850312156119bd575f80fd5b82356119c881611998565b946020939093013593505050565b5f602082840312156119e6575f80fd5b813561134581611998565b5f805f60608486031215611a03575f80fd5b8335611a0e81611998565b92506020840135611a1e81611998565b929592945050506040919091013590565b801515811461077c575f80fd5b5f60208284031215611a4c575f80fd5b813561134581611a2f565b5f60208284031215611a67575f80fd5b5035919050565b5f805f8060808587031215611a81575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f60408486031215611aaf575f80fd5b833567ffffffffffffffff80821115611ac6575f80fd5b818601915086601f830112611ad9575f80fd5b813581811115611ae7575f80fd5b8760208260051b8501011115611afb575f80fd5b60209283019550935050840135611b1181611a2f565b809150509250925092565b5f8060408385031215611b2d575f80fd5b8235611b3881611998565b91506020830135611b4881611998565b809150509250929050565b5f60208284031215611b63575f80fd5b815161134581611a2f565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105bb576105bb611b6e565b5f82611bb357634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105bb576105bb611b6e565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611bf057611bf0611b6e565b5060010190565b818103818111156105bb576105bb611b6e565b5f60208284031215611c1a575f80fd5b815161134581611998565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611c735784516001600160a01b031683529383019391830191600101611c4e565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220a3fa073f668ced02c54d7d725faebf5bb184a79108c36d770cec2c1146c97f0c64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101bd575f3560e01c806374010ece116100f2578063a2a957bb11610092578063c492f04611610062578063c492f0461461050a578063dd62ed3e14610529578063ea1644d51461056d578063f2fde38b1461058c575f80fd5b8063a2a957bb1461048a578063a9059cbb146104a9578063bfd79284146104c8578063c3c8cd80146104f6575f80fd5b80638da5cb5b116100cd5780638da5cb5b1461040b5780638f9a55c01461042757806395d89b411461043c57806398a5c3151461046b575f80fd5b806374010ece146103ac5780637d1db4a5146103cb5780637f2feddc146103e0575f80fd5b8063313ce5671161015d5780636d8aa8f8116101385780636d8aa8f8146103465780636fc3eaec1461036557806370a0823114610379578063715018a614610398575f80fd5b8063313ce567146102ed57806349bd5a5e14610308578063561a99a614610327575f80fd5b806318160ddd1161019857806318160ddd146102755780632369bf831461029857806323b872dd146102b95780632fd689e3146102d8575f80fd5b806306fdde03146101c8578063095ea7b31461020f5780631694505e1461023e575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b5060408051808201909152600d81526c456e6372797074696f6e20414960981b60208201525b604051610206919061194d565b60405180910390f35b34801561021a575f80fd5b5061022e6102293660046119ac565b6105ab565b6040519015158152602001610206565b348015610249575f80fd5b5060145461025d906001600160a01b031681565b6040516001600160a01b039091168152602001610206565b348015610280575f80fd5b5066038d7ea4c680005b604051908152602001610206565b3480156102a3575f80fd5b506102b76102b23660046119d6565b6105c1565b005b3480156102c4575f80fd5b5061022e6102d33660046119f1565b61062e565b3480156102e3575f80fd5b5061028a60185481565b3480156102f8575f80fd5b5060405160098152602001610206565b348015610313575f80fd5b5060155461025d906001600160a01b031681565b348015610332575f80fd5b506102b76103413660046119ac565b610695565b348015610351575f80fd5b506102b7610360366004611a3c565b61070e565b348015610370575f80fd5b506102b7610772565b348015610384575f80fd5b5061028a6103933660046119d6565b61077f565b3480156103a3575f80fd5b506102b76107a0565b3480156103b7575f80fd5b506102b76103c6366004611a57565b61082e565b3480156103d6575f80fd5b5061028a60165481565b3480156103eb575f80fd5b5061028a6103fa3660046119d6565b60116020525f908152604090205481565b348015610416575f80fd5b505f546001600160a01b031661025d565b348015610432575f80fd5b5061028a60175481565b348015610447575f80fd5b50604080518082019091526007815266115b98dc9e5c1d60ca1b60208201526101f9565b348015610476575f80fd5b506102b7610485366004611a57565b6108b3565b348015610495575f80fd5b506102b76104a4366004611a6e565b6108fe565b3480156104b4575f80fd5b5061022e6104c33660046119ac565b6109dd565b3480156104d3575f80fd5b5061022e6104e23660046119d6565b60106020525f908152604090205460ff1681565b348015610501575f80fd5b506102b76109e9565b348015610515575f80fd5b506102b7610524366004611a9d565b610a3b565b348015610534575f80fd5b5061028a610543366004611b1c565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610578575f80fd5b506102b7610587366004611a57565b610af5565b348015610597575f80fd5b506102b76105a63660046119d6565b610b7a565b5f6105b7338484610c7e565b5060015b92915050565b5f546001600160a01b0316331461060c5760405162461bcd60e51b815260206004820181905260248201525f80516020611cbd83398151915260448201526064015b60405180910390fd5b601380546001600160a01b0319166001600160a01b0392909216919091179055565b5f61063a848484610da1565b61068b843361068685604051806060016040528060288152602001611c95602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190611257565b610c7e565b5060019392505050565b60135460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af11580156106e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107099190611b53565b505050565b5f546001600160a01b031633146107545760405162461bcd60e51b815260206004820181905260248201525f80516020611cbd8339815191526044820152606401610603565b60158054911515600160b01b0260ff60b01b19909216919091179055565b4761077c8161128f565b50565b6001600160a01b0381165f908152600260205260408120546105bb906112ca565b5f546001600160a01b031633146107e65760405162461bcd60e51b815260206004820181905260248201525f80516020611cbd8339815191526044820152606401610603565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108745760405162461bcd60e51b815260206004820181905260248201525f80516020611cbd8339815191526044820152606401610603565b60646108878266038d7ea4c68000611b82565b6108919190611b99565b6016556108a6606466038d7ea4c68000611b99565b601654101561077c575f80fd5b5f546001600160a01b031633146108f95760405162461bcd60e51b815260206004820181905260248201525f80516020611cbd8339815191526044820152606401610603565b601855565b5f546001600160a01b031633146109445760405162461bcd60e51b815260206004820181905260248201525f80516020611cbd8339815191526044820152606401610603565b6008849055600a8390556009829055600b8190555f81836109658688611bb8565b61096f9190611bb8565b6109799190611bb8565b905060058111156109d65760405162461bcd60e51b815260206004820152602160248201527f546f74616c20466565732063616e6e6f74206265206d6f7265207468616e20356044820152602560f81b6064820152608401610603565b5050505050565b5f6105b7338484610da1565b6012546001600160a01b0316336001600160a01b03161480610a1e57506013546001600160a01b0316336001600160a01b0316145b610a26575f80fd5b5f610a303061077f565b905061077c8161134c565b5f546001600160a01b03163314610a815760405162461bcd60e51b815260206004820181905260248201525f80516020611cbd8339815191526044820152606401610603565b5f5b82811015610aef578160055f868685818110610aa157610aa1611bcb565b9050602002016020810190610ab691906119d6565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580610ae781611bdf565b915050610a83565b50505050565b5f546001600160a01b03163314610b3b5760405162461bcd60e51b815260206004820181905260248201525f80516020611cbd8339815191526044820152606401610603565b6064610b4e8266038d7ea4c68000611b82565b610b589190611b99565b601755610b6d606466038d7ea4c68000611b99565b601754101561077c575f80fd5b5f546001600160a01b03163314610bc05760405162461bcd60e51b815260206004820181905260248201525f80516020611cbd8339815191526044820152606401610603565b6001600160a01b038116610c255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610603565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610ce05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610603565b6001600160a01b038216610d415760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610603565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e055760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610603565b6001600160a01b038216610e675760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610603565b5f8111610ec85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610603565b5f546001600160a01b03848116911614801590610ef257505f546001600160a01b03838116911614155b1561115357601554600160a01b900460ff16610f8a575f546001600160a01b03848116911614610f8a5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610603565b601654811115610fdc5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610603565b6015546001600160a01b038381169116146110615760175481610ffe8461077f565b6110089190611bb8565b106110615760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610603565b5f61106b3061077f565b6018549091508082101590611081906008611b82565b821061109857601854611095906008611b82565b91505b8080156110af5750601554600160a81b900460ff16155b80156110c957506015546001600160a01b03868116911614155b80156110de5750601554600160b01b900460ff165b801561110257506001600160a01b0385165f9081526005602052604090205460ff16155b801561112657506001600160a01b0384165f9081526005602052604090205460ff16155b15611150576111348261134c565b4767011c37937e08000081111561114e5761114e4761128f565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061119357506001600160a01b0383165f9081526005602052604090205460ff165b806111c557506015546001600160a01b038581169116148015906111c557506015546001600160a01b03848116911614155b156111d157505f61124b565b6015546001600160a01b0385811691161480156111fc57506014546001600160a01b03848116911614155b1561120e57600854600c55600954600d555b6015546001600160a01b03848116911614801561123957506014546001600160a01b03858116911614155b1561124b57600a54600c55600b54600d555b610aef848484846114bc565b5f818484111561127a5760405162461bcd60e51b8152600401610603919061194d565b505f6112868486611bf7565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156112c6573d5f803e3d5ffd5b5050565b5f6006548211156113305760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610603565b5f6113396114ea565b9050611345838261150b565b9392505050565b6015805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061139257611392611bcb565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140d9190611c0a565b8160018151811061142057611420611bcb565b6001600160a01b0392831660209182029290920101526014546114469130911684610c7e565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac9479061147e9085905f90869030904290600401611c25565b5f604051808303815f87803b158015611495575f80fd5b505af11580156114a7573d5f803e3d5ffd5b50506015805460ff60a81b1916905550505050565b806114c9576114c961154c565b6114d4848484611579565b80610aef57610aef600e54600c55600f54600d55565b5f805f6114f561166a565b9092509050611504828261150b565b9250505090565b5f61134583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116a7565b600c5415801561155c5750600d54155b1561156357565b600c8054600e55600d8054600f555f9182905555565b5f805f805f80611588876116d3565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506115b99087611728565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546115e79086611769565b6001600160a01b0389165f90815260026020526040902055611608816117c7565b611612848361180d565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161165791815260200190565b60405180910390a3505050505050505050565b6006545f90819066038d7ea4c68000611683828261150b565b82101561169e5750506006549266038d7ea4c6800092509050565b90939092509050565b5f81836116c75760405162461bcd60e51b8152600401610603919061194d565b505f6112868486611b99565b5f805f805f805f805f6116eb8a600c54600d54611831565b9250925092505f6116fa6114ea565b90505f805f61170b8e878787611883565b919e509c509a509598509396509194505050505091939550919395565b5f61134583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611257565b5f806117758385611bb8565b9050838110156113455760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610603565b5f6117d06114ea565b90505f6117dd83836118cf565b305f908152600260205260409020549091506117f99082611769565b305f90815260026020526040902055505050565b60065461181a9083611728565b60065560075461182a9082611769565b6007555050565b5f80808061184a606461184489896118cf565b9061150b565b90505f61185c60646118448a896118cf565b90505f6118738261186d8b86611728565b90611728565b9992985090965090945050505050565b5f80808061189188866118cf565b90505f61189e88876118cf565b90505f6118ab88886118cf565b90505f6118bc8261186d8686611728565b939b939a50919850919650505050505050565b5f825f036118de57505f6105bb565b5f6118e98385611b82565b9050826118f68583611b99565b146113455760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610603565b5f6020808352835180828501525f5b818110156119785785810183015185820160400152820161195c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461077c575f80fd5b5f80604083850312156119bd575f80fd5b82356119c881611998565b946020939093013593505050565b5f602082840312156119e6575f80fd5b813561134581611998565b5f805f60608486031215611a03575f80fd5b8335611a0e81611998565b92506020840135611a1e81611998565b929592945050506040919091013590565b801515811461077c575f80fd5b5f60208284031215611a4c575f80fd5b813561134581611a2f565b5f60208284031215611a67575f80fd5b5035919050565b5f805f8060808587031215611a81575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f60408486031215611aaf575f80fd5b833567ffffffffffffffff80821115611ac6575f80fd5b818601915086601f830112611ad9575f80fd5b813581811115611ae7575f80fd5b8760208260051b8501011115611afb575f80fd5b60209283019550935050840135611b1181611a2f565b809150509250925092565b5f8060408385031215611b2d575f80fd5b8235611b3881611998565b91506020830135611b4881611998565b809150509250929050565b5f60208284031215611b63575f80fd5b815161134581611a2f565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105bb576105bb611b6e565b5f82611bb357634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105bb576105bb611b6e565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611bf057611bf0611b6e565b5060010190565b818103818111156105bb576105bb611b6e565b5f60208284031215611c1a575f80fd5b815161134581611998565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611c735784516001600160a01b031683529383019391830191600101611c4e565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220a3fa073f668ced02c54d7d725faebf5bb184a79108c36d770cec2c1146c97f0c64736f6c63430008140033

Deployed Bytecode Sourcemap

4422:13451:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6898:83;;;;;;;;;;-1:-1:-1;6968:5:0;;;;;;;;;;;;-1:-1:-1;;;6968:5:0;;;;6898:83;;;;;;;:::i;:::-;;;;;;;;7823:193;;;;;;;;;;-1:-1:-1;7823:193:0;;;;;:::i;:::-;;:::i;:::-;;;1211:14:1;;1204:22;1186:41;;1174:2;1159:18;7823:193:0;1046:187:1;5748:41:0;;;;;;;;;;-1:-1:-1;5748:41:0;;;;-1:-1:-1;;;;;5748:41:0;;;;;;-1:-1:-1;;;;;1428:55:1;;;1410:74;;1398:2;1383:18;5748:41:0;1238:252:1;7175:95:0;;;;;;;;;;-1:-1:-1;4981:15:0;7175:95;;;1641:25:1;;;1629:2;1614:18;7175:95:0;1495:177:1;17563:147:0;;;;;;;;;;-1:-1:-1;17563:147:0;;;;;:::i;:::-;;:::i;:::-;;8024:446;;;;;;;;;;-1:-1:-1;8024:446:0;;;;;:::i;:::-;;:::i;6045:51::-;;;;;;;;;;;;;;;;7084:83;;;;;;;;;;-1:-1:-1;7084:83:0;;4655:1;2532:36:1;;2520:2;2505:18;7084:83:0;2390:184:1;5796:28:0;;;;;;;;;;-1:-1:-1;5796:28:0;;;;-1:-1:-1;;;;;5796:28:0;;;17718:150;;;;;;;;;;-1:-1:-1;17718:150:0;;;;;:::i;:::-;;:::i;16821:101::-;;;;;;;;;;-1:-1:-1;16821:101:0;;;;;:::i;:::-;;:::i;12625:143::-;;;;;;;;;;;;;:::i;7278:138::-;;;;;;;;;;-1:-1:-1;7278:138:0;;;;;:::i;:::-;;:::i;1909:148::-;;;;;;;;;;;;;:::i;16961:167::-;;;;;;;;;;-1:-1:-1;16961:167:0;;;;;:::i;:::-;;:::i;5945:37::-;;;;;;;;;;;;;;;;5490:43;;;;;;;;;;-1:-1:-1;5490:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;1695:79;;;;;;;;;;-1:-1:-1;1733:7:0;1760:6;-1:-1:-1;;;;;1760:6:0;1695:79;;5989:49;;;;;;;;;;;;;;;;6989:87;;;;;;;;;;-1:-1:-1;7061:7:0;;;;;;;;;;;;-1:-1:-1;;;7061:7:0;;;;6989:87;;16630:139;;;;;;;;;;-1:-1:-1;16630:139:0;;;;;:::i;:::-;;:::i;16162:416::-;;;;;;;;;;-1:-1:-1;16162:416:0;;;;;:::i;:::-;;:::i;7424:199::-;;;;;;;;;;-1:-1:-1;7424:199:0;;;;;:::i;:::-;;:::i;5452:36::-;;;;;;;;;;-1:-1:-1;5452:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12381:236;;;;;;;;;;;;;:::i;17320:234::-;;;;;;;;;;-1:-1:-1;17320:234:0;;;;;:::i;:::-;;:::i;7631:184::-;;;;;;;;;;-1:-1:-1;7631:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7780:18:0;;;7748:7;7780:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7631:184;17136:176;;;;;;;;;;-1:-1:-1;17136:176:0;;;;;:::i;:::-;;:::i;2065:244::-;;;;;;;;;;-1:-1:-1;2065:244:0;;;;;:::i;:::-;;:::i;7823:193::-;7925:4;7947:39;534:10;7970:7;7979:6;7947:8;:39::i;:::-;-1:-1:-1;8004:4:0;7823:193;;;;;:::o;17563:147::-;1822:6;;-1:-1:-1;;;;;1822:6:0;534:10;1822:22;1814:67;;;;-1:-1:-1;;;1814:67:0;;5104:2:1;1814:67:0;;;5086:21:1;;;5123:18;;;5116:30;-1:-1:-1;;;;;;;;;;;5162:18:1;;;5155:62;5234:18;;1814:67:0;;;;;;;;;17653:17:::1;:49:::0;;-1:-1:-1;;;;;;17653:49:0::1;-1:-1:-1::0;;;;;17653:49:0;;;::::1;::::0;;;::::1;::::0;;17563:147::o;8024:446::-;8156:4;8173:36;8183:6;8191:9;8202:6;8173:9;:36::i;:::-;8220:220;8243:6;534:10;8291:138;8347:6;8291:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8291:19:0;;;;;;:11;:19;;;;;;;;534:10;8291:33;;;;;;;;;;:37;:138::i;:::-;8220:8;:220::i;:::-;-1:-1:-1;8458:4:0;8024:446;;;;;:::o;17718:150::-;17833:17;;17808:52;;-1:-1:-1;;;17808:52:0;;-1:-1:-1;;;;;17833:17:0;;;17808:52;;;5445:74:1;5535:18;;;5528:34;;;17808:24:0;;;;;;5418:18:1;;17808:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17718:150;;:::o;16821:101::-;1822:6;;-1:-1:-1;;;;;1822:6:0;534:10;1822:22;1814:67;;;;-1:-1:-1;;;1814:67:0;;5104:2:1;1814:67:0;;;5086:21:1;;;5123:18;;;5116:30;-1:-1:-1;;;;;;;;;;;5162:18:1;;;5155:62;5234:18;;1814:67:0;4902:356:1;1814:67:0;16888:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;16888:26:0::1;-1:-1:-1::0;;;;16888:26:0;;::::1;::::0;;;::::1;::::0;;16821:101::o;12625:143::-;12696:21;12728:32;12696:21;12728:12;:32::i;:::-;12656:112;12625:143::o;7278:138::-;-1:-1:-1;;;;;7391:16:0;;7344:7;7391:16;;;:7;:16;;;;;;7371:37;;:19;:37::i;1909:148::-;1822:6;;-1:-1:-1;;;;;1822:6:0;534:10;1822:22;1814:67;;;;-1:-1:-1;;;1814:67:0;;5104:2:1;1814:67:0;;;5086:21:1;;;5123:18;;;5116:30;-1:-1:-1;;;;;;;;;;;5162:18:1;;;5155:62;5234:18;;1814:67:0;4902:356:1;1814:67:0;2016:1:::1;2000:6:::0;;1979:40:::1;::::0;-1:-1:-1;;;;;2000:6:0;;::::1;::::0;1979:40:::1;::::0;2016:1;;1979:40:::1;2047:1;2030:19:::0;;-1:-1:-1;;;;;;2030:19:0::1;::::0;;1909:148::o;16961:167::-;1822:6;;-1:-1:-1;;;;;1822:6:0;534:10;1822:22;1814:67;;;;-1:-1:-1;;;1814:67:0;;5104:2:1;1814:67:0;;;5086:21:1;;;5123:18;;;5116:30;-1:-1:-1;;;;;;;;;;;5162:18:1;;;5155:62;5234:18;;1814:67:0;4902:356:1;1814:67:0;17070:3:::1;17050:19;17058:11:::0;4981:15:::1;17050:19;:::i;:::-;:23;;;;:::i;:::-;17035:12;:38:::0;17108:11:::1;17116:3;4981:15;17108:11;:::i;:::-;17093:12;;:26;;17084:36;;;::::0;::::1;16630:139:::0;1822:6;;-1:-1:-1;;;;;1822:6:0;534:10;1822:22;1814:67;;;;-1:-1:-1;;;1814:67:0;;5104:2:1;1814:67:0;;;5086:21:1;;;5123:18;;;5116:30;-1:-1:-1;;;;;;;;;;;5162:18:1;;;5155:62;5234:18;;1814:67:0;4902:356:1;1814:67:0;16721:19:::1;:40:::0;16630:139::o;16162:416::-;1822:6;;-1:-1:-1;;;;;1822:6:0;534:10;1822:22;1814:67;;;;-1:-1:-1;;;1814:67:0;;5104:2:1;1814:67:0;;;5086:21:1;;;5123:18;;;5116:30;-1:-1:-1;;;;;;;;;;;5162:18:1;;;5155:62;5234:18;;1814:67:0;4902:356:1;1814:67:0;16288:10:::1;:22:::0;;;16321:11:::1;:24:::0;;;16356:12:::1;:26:::0;;;16393:13:::1;:28:::0;;;-1:-1:-1;16409:12:0;16371:11;16451:22:::1;16335:10:::0;16301:9;16451:22:::1;:::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;16432:68;;16532:1;16520:8;:13;;16511:59;;;::::0;-1:-1:-1;;;16511:59:0;;6682:2:1;16511:59:0::1;::::0;::::1;6664:21:1::0;6721:2;6701:18;;;6694:30;6760:34;6740:18;;;6733:62;-1:-1:-1;;;6811:18:1;;;6804:31;6852:19;;16511:59:0::1;6480:397:1::0;16511:59:0::1;16277:301;16162:416:::0;;;;:::o;7424:199::-;7529:4;7551:42;534:10;7575:9;7586:6;7551:9;:42::i;12381:236::-;12447:19;;-1:-1:-1;;;;;12447:19:0;534:10;-1:-1:-1;;;;;12431:35:0;;:72;;;-1:-1:-1;12486:17:0;;-1:-1:-1;;;;;12486:17:0;534:10;-1:-1:-1;;;;;12470:33:0;;12431:72;12423:81;;;;;;12515:23;12541:24;12559:4;12541:9;:24::i;:::-;12515:50;;12576:33;12593:15;12576:16;:33::i;17320:234::-;1822:6;;-1:-1:-1;;;;;1822:6:0;534:10;1822:22;1814:67;;;;-1:-1:-1;;;1814:67:0;;5104:2:1;1814:67:0;;;5086:21:1;;;5123:18;;;5116:30;-1:-1:-1;;;;;;;;;;;5162:18:1;;;5155:62;5234:18;;1814:67:0;4902:356:1;1814:67:0;17437:9:::1;17433:114;17452:19:::0;;::::1;17433:114;;;17527:8;17493:18;:31;17512:8;;17521:1;17512:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17493:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17493:31:0;:42;;-1:-1:-1;;17493:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17473:3;::::1;::::0;::::1;:::i;:::-;;;;17433:114;;;;17320:234:::0;;;:::o;17136:176::-;1822:6;;-1:-1:-1;;;;;1822:6:0;534:10;1822:22;1814:67;;;;-1:-1:-1;;;1814:67:0;;5104:2:1;1814:67:0;;;5086:21:1;;;5123:18;;;5116:30;-1:-1:-1;;;;;;;;;;;5162:18:1;;;5155:62;5234:18;;1814:67:0;4902:356:1;1814:67:0;17252:3:::1;17230:21;17238:13:::0;4981:15:::1;17230:21;:::i;:::-;:25;;;;:::i;:::-;17213:14;:42:::0;17292:11:::1;17300:3;4981:15;17292:11;:::i;:::-;17275:14;;:28;;17266:38;;;::::0;::::1;2065:244:::0;1822:6;;-1:-1:-1;;;;;1822:6:0;534:10;1822:22;1814:67;;;;-1:-1:-1;;;1814:67:0;;5104:2:1;1814:67:0;;;5086:21:1;;;5123:18;;;5116:30;-1:-1:-1;;;;;;;;;;;5162:18:1;;;5155:62;5234:18;;1814:67:0;4902:356:1;1814:67:0;-1:-1:-1;;;;;2154:22:0;::::1;2146:73;;;::::0;-1:-1:-1;;;2146:73:0;;7356:2:1;2146:73:0::1;::::0;::::1;7338:21:1::0;7395:2;7375:18;;;7368:30;7434:34;7414:18;;;7407:62;-1:-1:-1;;;7485:18:1;;;7478:36;7531:19;;2146:73:0::1;7154:402:1::0;2146:73:0::1;2256:6;::::0;;2235:38:::1;::::0;-1:-1:-1;;;;;2235:38:0;;::::1;::::0;2256:6;::::1;::::0;2235:38:::1;::::0;::::1;2284:6;:17:::0;;-1:-1:-1;;;;;;2284:17:0::1;-1:-1:-1::0;;;;;2284:17:0;;;::::1;::::0;;;::::1;::::0;;2065:244::o;9137:369::-;-1:-1:-1;;;;;9264:19:0;;9256:68;;;;-1:-1:-1;;;9256:68:0;;7763:2:1;9256:68:0;;;7745:21:1;7802:2;7782:18;;;7775:30;7841:34;7821:18;;;7814:62;-1:-1:-1;;;7892:18:1;;;7885:34;7936:19;;9256:68:0;7561:400:1;9256:68:0;-1:-1:-1;;;;;9343:21:0;;9335:68;;;;-1:-1:-1;;;9335:68:0;;8168:2:1;9335:68:0;;;8150:21:1;8207:2;8187:18;;;8180:30;8246:34;8226:18;;;8219:62;-1:-1:-1;;;8297:18:1;;;8290:32;8339:19;;9335:68:0;7966:398:1;9335:68:0;-1:-1:-1;;;;;9414:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9466:32;;1641:25:1;;;9466:32:0;;1614:18:1;9466:32:0;;;;;;;9137:369;;;:::o;9514:2261::-;-1:-1:-1;;;;;9636:18:0;;9628:68;;;;-1:-1:-1;;;9628:68:0;;8571:2:1;9628:68:0;;;8553:21:1;8610:2;8590:18;;;8583:30;8649:34;8629:18;;;8622:62;-1:-1:-1;;;8700:18:1;;;8693:35;8745:19;;9628:68:0;8369:401:1;9628:68:0;-1:-1:-1;;;;;9715:16:0;;9707:64;;;;-1:-1:-1;;;9707:64:0;;8977:2:1;9707:64:0;;;8959:21:1;9016:2;8996:18;;;8989:30;9055:34;9035:18;;;9028:62;-1:-1:-1;;;9106:18:1;;;9099:33;9149:19;;9707:64:0;8775:399:1;9707:64:0;9799:1;9790:6;:10;9782:64;;;;-1:-1:-1;;;9782:64:0;;9381:2:1;9782:64:0;;;9363:21:1;9420:2;9400:18;;;9393:30;9459:34;9439:18;;;9432:62;-1:-1:-1;;;9510:18:1;;;9503:39;9559:19;;9782:64:0;9179:405:1;9782:64:0;1733:7;1760:6;-1:-1:-1;;;;;9863:15:0;;;1760:6;;9863:15;;;;:32;;-1:-1:-1;1733:7:0;1760:6;-1:-1:-1;;;;;9882:13:0;;;1760:6;;9882:13;;9863:32;9859:1206;;;9952:11;;-1:-1:-1;;;9952:11:0;;;;9947:144;;1733:7;1760:6;-1:-1:-1;;;;;9992:15:0;;;1760:6;;9992:15;9984:91;;;;-1:-1:-1;;;9984:91:0;;9791:2:1;9984:91:0;;;9773:21:1;9830:2;9810:18;;;9803:30;9869:34;9849:18;;;9842:62;9940:33;9920:18;;;9913:61;9991:19;;9984:91:0;9589:427:1;9984:91:0;10125:12;;10115:6;:22;;10107:63;;;;-1:-1:-1;;;10107:63:0;;10223:2:1;10107:63:0;;;10205:21:1;10262:2;10242:18;;;10235:30;10301;10281:18;;;10274:58;10349:18;;10107:63:0;10021:352:1;10107:63:0;10196:13;;-1:-1:-1;;;;;10190:19:0;;;10196:13;;10190:19;10187:146;;10263:14;;10254:6;10238:13;10248:2;10238:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10230:87;;;;-1:-1:-1;;;10230:87:0;;10580:2:1;10230:87:0;;;10562:21:1;10619:2;10599:18;;;10592:30;10658:34;10638:18;;;10631:62;-1:-1:-1;;;10709:18:1;;;10702:33;10752:19;;10230:87:0;10378:399:1;10230:87:0;10349:28;10380:24;10398:4;10380:9;:24::i;:::-;10458:19;;10349:55;;-1:-1:-1;10434:43:0;;;;;10521:21;;10541:1;10521:21;:::i;:::-;10497:20;:45;10494:142;;10599:19;;:21;;10619:1;10599:21;:::i;:::-;10576:44;;10494:142;10656:7;:18;;;;-1:-1:-1;10668:6:0;;-1:-1:-1;;;10668:6:0;;;;10667:7;10656:18;:43;;;;-1:-1:-1;10686:13:0;;-1:-1:-1;;;;;10678:21:0;;;10686:13;;10678:21;;10656:43;:58;;;;-1:-1:-1;10703:11:0;;-1:-1:-1;;;10703:11:0;;;;10656:58;:87;;;;-1:-1:-1;;;;;;10719:24:0;;;;;;:18;:24;;;;;;;;10718:25;10656:87;:114;;;;-1:-1:-1;;;;;;10748:22:0;;;;;;:18;:22;;;;;;;;10747:23;10656:114;10652:402;;;10791:38;10808:20;10791:16;:38::i;:::-;10877:21;10942:17;10921:38;;10917:122;;;10984:35;10997:21;10984:12;:35::i;:::-;10772:282;10652:402;9897:1168;;9859:1206;-1:-1:-1;;;;;11141:24:0;;11077:12;11141:24;;;:18;:24;;;;;;11092:4;;11141:24;;;:50;;-1:-1:-1;;;;;;11169:22:0;;;;;;:18;:22;;;;;;;;11141:50;11140:102;;;-1:-1:-1;11205:13:0;;-1:-1:-1;;;;;11197:21:0;;;11205:13;;11197:21;;;;:44;;-1:-1:-1;11228:13:0;;-1:-1:-1;;;;;11222:19:0;;;11228:13;;11222:19;;11197:44;11136:578;;;-1:-1:-1;11269:5:0;11136:578;;;11352:13;;-1:-1:-1;;;;;11344:21:0;;;11352:13;;11344:21;:55;;;;-1:-1:-1;11383:15:0;;-1:-1:-1;;;;;11369:30:0;;;11383:15;;11369:30;;11344:55;11341:154;;;11428:10;;11420:5;:18;11467:12;;11457:7;:22;11341:154;11554:13;;-1:-1:-1;;;;;11548:19:0;;;11554:13;;11548:19;:55;;;;-1:-1:-1;11587:15:0;;-1:-1:-1;;;;;11571:32:0;;;11587:15;;11571:32;;11548:55;11544:157;;;11632:11;;11624:5;:19;11672:13;;11662:7;:23;11544:157;11726:41;11741:4;11747:2;11751:6;11759:7;11726:14;:41::i;2673:224::-;2793:7;2829:12;2821:6;;;;2813:29;;;;-1:-1:-1;;;2813:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2853:9:0;2865:5;2869:1;2865;:5;:::i;:::-;2853:17;2673:224;-1:-1:-1;;;;;2673:224:0:o;12274:99::-;12331:17;;:34;;-1:-1:-1;;;;;12331:17:0;;;;:34;;;;;12358:6;;12331:17;:34;:17;:34;12358:6;12331:17;:34;;;;;;;;;;;;;;;;;;;;;12274:99;:::o;8478:323::-;8573:7;8631;;8620;:18;;8598:110;;;;-1:-1:-1;;;8598:110:0;;11117:2:1;8598:110:0;;;11099:21:1;11156:2;11136:18;;;11129:30;11195:34;11175:18;;;11168:62;-1:-1:-1;;;11246:18:1;;;11239:40;11296:19;;8598:110:0;10915:406:1;8598:110:0;8719:19;8741:10;:8;:10::i;:::-;8719:32;-1:-1:-1;8769:24:0;:7;8719:32;8769:11;:24::i;:::-;8762:31;8478:323;-1:-1:-1;;;8478:323:0:o;11783:483::-;6190:6;:13;;-1:-1:-1;;;;6190:13:0;-1:-1:-1;;;6190:13:0;;;11885:16:::1;::::0;;11899:1:::1;11885:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11885:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11885:16:0::1;11861:40;;11930:4;11912;11917:1;11912:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11912:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11956:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11956:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11912:7;;11956:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11946:4;11951:1;11946:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11946:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12021:15:::1;::::0;11989:62:::1;::::0;12006:4:::1;::::0;12021:15:::1;12039:11:::0;11989:8:::1;:62::i;:::-;12062:15;::::0;:196:::1;::::0;-1:-1:-1;;;12062:196:0;;-1:-1:-1;;;;;12062:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12143:11;;12062:15:::1;::::0;12185:4;;12212::::1;::::0;12232:15:::1;::::0;12062:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6226:6:0;:14;;-1:-1:-1;;;;6226:14:0;;;-1:-1:-1;;;;11783:483:0:o;12776:282::-;12932:7;12927:28;;12941:14;:12;:14::i;:::-;12966:44;12984:6;12992:9;13003:6;12966:17;:44::i;:::-;13026:7;13021:29;;13035:15;9072:13;;9064:5;:21;9106:15;;9096:7;:25;9020:109;15725:164;15767:7;15788:15;15805;15824:19;:17;:19::i;:::-;15787:56;;-1:-1:-1;15787:56:0;-1:-1:-1;15861:20:0;15787:56;;15861:11;:20::i;:::-;15854:27;;;;15725:164;:::o;3159:132::-;3217:7;3244:39;3248:1;3251;3244:39;;;;;;;;;;;;;;;;;:3;:39::i;8809:203::-;8856:5;;:10;:26;;;;-1:-1:-1;8870:7:0;;:12;8856:26;8852:39;;;8809:203::o;8852:39::-;8919:5;;;8903:13;:21;8953:7;;;8935:15;:25;-1:-1:-1;8973:9:0;;;;8993:11;8809:203::o;13066:610::-;13213:15;13243:23;13281:12;13308:23;13346:12;13373:13;13400:19;13411:7;13400:10;:19::i;:::-;-1:-1:-1;;;;;13448:15:0;;;;;;:7;:15;;;;;;13198:221;;-1:-1:-1;13198:221:0;;-1:-1:-1;13198:221:0;;-1:-1:-1;13198:221:0;-1:-1:-1;13198:221:0;-1:-1:-1;13198:221:0;-1:-1:-1;13448:28:0;;13198:221;13448:19;:28::i;:::-;-1:-1:-1;;;;;13430:15:0;;;;;;;:7;:15;;;;;;:46;;;;13508:18;;;;;;;:39;;13531:15;13508:22;:39::i;:::-;-1:-1:-1;;;;;13487:18:0;;;;;;:7;:18;;;;;:60;13558:16;13568:5;13558:9;:16::i;:::-;13585:23;13597:4;13603;13585:11;:23::i;:::-;13641:9;-1:-1:-1;;;;;13624:44:0;13633:6;-1:-1:-1;;;;;13624:44:0;;13652:15;13624:44;;;;1641:25:1;;1629:2;1614:18;;1495:177;13624:44:0;;;;;;;;13187:489;;;;;;13066:610;;;:::o;15897:257::-;15995:7;;15948;;;;4981:15;16063:20;15995:7;4981:15;16063:11;:20::i;:::-;16053:7;:30;16049:61;;;-1:-1:-1;;16093:7:0;;;4981:15;;-1:-1:-1;15897:257:0;-1:-1:-1;15897:257:0:o;16049:61::-;16129:7;;16138;;-1:-1:-1;15897:257:0;-1:-1:-1;15897:257:0:o;3299:223::-;3419:7;3454:12;3447:5;3439:28;;;;-1:-1:-1;;;3439:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3478:9:0;3490:5;3494:1;3490;:5;:::i;14095:611::-;14195:7;14217;14239;14261;14283;14305;14341:23;14366:12;14380:13;14410:36;14422:7;14431:5;;14438:7;;14410:11;:36::i;:::-;14340:106;;;;;;14457:19;14479:10;:8;:10::i;:::-;14457:32;;14501:15;14518:23;14543:12;14572:46;14584:7;14593:4;14599:5;14606:11;14572;:46::i;:::-;14500:118;;-1:-1:-1;14500:118:0;-1:-1:-1;14500:118:0;-1:-1:-1;14669:15:0;;-1:-1:-1;14686:4:0;;-1:-1:-1;14692:5:0;;-1:-1:-1;;;;;14095:611:0;;;;;;;:::o;2529:136::-;2587:7;2614:43;2618:1;2621;2614:43;;;;;;;;;;;;;;;;;:3;:43::i;2342:179::-;2400:7;;2432:5;2436:1;2432;:5;:::i;:::-;2420:17;;2461:1;2456;:6;;2448:46;;;;-1:-1:-1;;;2448:46:0;;12947:2:1;2448:46:0;;;12929:21:1;12986:2;12966:18;;;12959:30;13025:29;13005:18;;;12998:57;13072:18;;2448:46:0;12745:351:1;13684:211:0;13737:19;13759:10;:8;:10::i;:::-;13737:32;-1:-1:-1;13780:13:0;13796:22;:5;13737:32;13796:9;:22::i;:::-;13870:4;13854:22;;;;:7;:22;;;;;;13780:38;;-1:-1:-1;13854:33:0;;13780:38;13854:26;:33::i;:::-;13845:4;13829:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13684:211:0:o;13903:147::-;13981:7;;:17;;13993:4;13981:11;:17::i;:::-;13971:7;:27;14022:10;;:20;;14037:4;14022:14;:20::i;:::-;14009:10;:33;-1:-1:-1;;13903:147:0:o;14714:461::-;14879:7;;;;14973:26;14995:3;14973:17;:7;14985:4;14973:11;:17::i;:::-;:21;;:26::i;:::-;14958:41;-1:-1:-1;15010:13:0;15026:28;15050:3;15026:19;:7;15038:6;15026:11;:19::i;:28::-;15010:44;-1:-1:-1;15065:23:0;15091:28;15010:44;15091:17;:7;15103:4;15091:11;:17::i;:::-;:21;;:28::i;:::-;15065:54;15155:4;;-1:-1:-1;15161:5:0;;-1:-1:-1;14714:461:0;;-1:-1:-1;;;;;14714:461:0:o;15183:534::-;15377:7;;;;15474:24;:7;15486:11;15474;:24::i;:::-;15456:42;-1:-1:-1;15509:12:0;15524:21;:4;15533:11;15524:8;:21::i;:::-;15509:36;-1:-1:-1;15556:13:0;15572:22;:5;15582:11;15572:9;:22::i;:::-;15556:38;-1:-1:-1;15605:23:0;15631:28;15556:38;15631:17;:7;15643:4;15631:11;:17::i;:28::-;15678:7;;;;-1:-1:-1;15704:4:0;;-1:-1:-1;15183:534:0;;-1:-1:-1;;;;;;;15183:534:0:o;2905:246::-;2963:7;2987:1;2992;2987:6;2983:47;;-1:-1:-1;3017:1:0;3010:8;;2983:47;3040:9;3052:5;3056:1;3052;:5;:::i;:::-;3040:17;-1:-1:-1;3085:1:0;3076:5;3080:1;3040:17;3076:5;:::i;:::-;:10;3068:56;;;;-1:-1:-1;;;3068:56:0;;13303:2:1;3068:56:0;;;13285:21:1;13342:2;13322:18;;;13315:30;13381:34;13361:18;;;13354:62;-1:-1:-1;;;13432:18:1;;;13425:31;13473:19;;3068:56:0;13101:397:1;14:548;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:154::-;-1:-1:-1;;;;;646:5:1;642:54;635:5;632:65;622:93;;711:1;708;701:12;726:315;794:6;802;855:2;843:9;834:7;830:23;826:32;823:52;;;871:1;868;861:12;823:52;910:9;897:23;929:31;954:5;929:31;:::i;:::-;979:5;1031:2;1016:18;;;;1003:32;;-1:-1:-1;;;726:315:1:o;1677:247::-;1736:6;1789:2;1777:9;1768:7;1764:23;1760:32;1757:52;;;1805:1;1802;1795:12;1757:52;1844:9;1831:23;1863:31;1888:5;1863:31;:::i;1929:456::-;2006:6;2014;2022;2075:2;2063:9;2054:7;2050:23;2046:32;2043:52;;;2091:1;2088;2081:12;2043:52;2130:9;2117:23;2149:31;2174:5;2149:31;:::i;:::-;2199:5;-1:-1:-1;2256:2:1;2241:18;;2228:32;2269:33;2228:32;2269:33;:::i;:::-;1929:456;;2321:7;;-1:-1:-1;;;2375:2:1;2360:18;;;;2347:32;;1929:456::o;2810:118::-;2896:5;2889:13;2882:21;2875:5;2872:32;2862:60;;2918:1;2915;2908:12;2933:241;2989:6;3042:2;3030:9;3021:7;3017:23;3013:32;3010:52;;;3058:1;3055;3048:12;3010:52;3097:9;3084:23;3116:28;3138:5;3116:28;:::i;3179:180::-;3238:6;3291:2;3279:9;3270:7;3266:23;3262:32;3259:52;;;3307:1;3304;3297:12;3259:52;-1:-1:-1;3330:23:1;;3179:180;-1:-1:-1;3179:180:1:o;3364:385::-;3450:6;3458;3466;3474;3527:3;3515:9;3506:7;3502:23;3498:33;3495:53;;;3544:1;3541;3534:12;3495:53;-1:-1:-1;;3567:23:1;;;3637:2;3622:18;;3609:32;;-1:-1:-1;3688:2:1;3673:18;;3660:32;;3739:2;3724:18;3711:32;;-1:-1:-1;3364:385:1;-1:-1:-1;3364:385:1:o;3754:750::-;3846:6;3854;3862;3915:2;3903:9;3894:7;3890:23;3886:32;3883:52;;;3931:1;3928;3921:12;3883:52;3971:9;3958:23;4000:18;4041:2;4033:6;4030:14;4027:34;;;4057:1;4054;4047:12;4027:34;4095:6;4084:9;4080:22;4070:32;;4140:7;4133:4;4129:2;4125:13;4121:27;4111:55;;4162:1;4159;4152:12;4111:55;4202:2;4189:16;4228:2;4220:6;4217:14;4214:34;;;4244:1;4241;4234:12;4214:34;4299:7;4292:4;4282:6;4279:1;4275:14;4271:2;4267:23;4263:34;4260:47;4257:67;;;4320:1;4317;4310:12;4257:67;4351:4;4343:13;;;;-1:-1:-1;4375:6:1;-1:-1:-1;;4416:20:1;;4403:34;4446:28;4403:34;4446:28;:::i;:::-;4493:5;4483:15;;;3754:750;;;;;:::o;4509:388::-;4577:6;4585;4638:2;4626:9;4617:7;4613:23;4609:32;4606:52;;;4654:1;4651;4644:12;4606:52;4693:9;4680:23;4712:31;4737:5;4712:31;:::i;:::-;4762:5;-1:-1:-1;4819:2:1;4804:18;;4791:32;4832:33;4791:32;4832:33;:::i;:::-;4884:7;4874:17;;;4509:388;;;;;:::o;5573:245::-;5640:6;5693:2;5681:9;5672:7;5668:23;5664:32;5661:52;;;5709:1;5706;5699:12;5661:52;5741:9;5735:16;5760:28;5782:5;5760:28;:::i;5823:127::-;5884:10;5879:3;5875:20;5872:1;5865:31;5915:4;5912:1;5905:15;5939:4;5936:1;5929:15;5955:168;6028:9;;;6059;;6076:15;;;6070:22;;6056:37;6046:71;;6097:18;;:::i;6128:217::-;6168:1;6194;6184:132;;6238:10;6233:3;6229:20;6226:1;6219:31;6273:4;6270:1;6263:15;6301:4;6298:1;6291:15;6184:132;-1:-1:-1;6330:9:1;;6128:217::o;6350:125::-;6415:9;;;6436:10;;;6433:36;;;6449:18;;:::i;6882:127::-;6943:10;6938:3;6934:20;6931:1;6924:31;6974:4;6971:1;6964:15;6998:4;6995:1;6988:15;7014:135;7053:3;7074:17;;;7071:43;;7094:18;;:::i;:::-;-1:-1:-1;7141:1:1;7130:13;;7014:135::o;10782:128::-;10849:9;;;10870:11;;;10867:37;;;10884:18;;:::i;11458:251::-;11528:6;11581:2;11569:9;11560:7;11556:23;11552:32;11549:52;;;11597:1;11594;11587:12;11549:52;11629:9;11623:16;11648:31;11673:5;11648:31;:::i;11714:1026::-;11976:4;12024:3;12013:9;12009:19;12055:6;12044:9;12037:25;12081:2;12119:6;12114:2;12103:9;12099:18;12092:34;12162:3;12157:2;12146:9;12142:18;12135:31;12186:6;12221;12215:13;12252:6;12244;12237:22;12290:3;12279:9;12275:19;12268:26;;12329:2;12321:6;12317:15;12303:29;;12350:1;12360:218;12374:6;12371:1;12368:13;12360:218;;;12439:13;;-1:-1:-1;;;;;12435:62:1;12423:75;;12553:15;;;;12518:12;;;;12396:1;12389:9;12360:218;;;-1:-1:-1;;;;;;;12634:55:1;;;;12629:2;12614:18;;12607:83;-1:-1:-1;;;12721:3:1;12706:19;12699:35;12595:3;11714:1026;-1:-1:-1;;;11714:1026:1:o

Swarm Source

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