ETH Price: $3,265.20 (+2.96%)
Gas: 9 Gwei

Token

Archangel-12 (A12)
 

Overview

Max Total Supply

1,000,000,000 A12

Holders

74

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.464114494 A12

Value
$0.00
0xcbe0f27f3519f3e46908cf8dc5ffeb9ac81d49ec
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:
Archangel

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**

https://a12.ai

https://t.me/A12Ventures

https://twitter.com/a12_crypto

*/

// SPDX-License-Identifier: Unlicensed

    pragma solidity ^0.8.16;

    interface IERC20 {
        
        function totalSupply() external view returns (uint256);
        function balanceOf(address account) external view returns (uint256);
        function transfer(address recipient, uint256 amount) external returns (bool);
        function allowance(address owner, address spender) external view returns (uint256);
        function approve(address spender, uint256 amount) external returns (bool);
        function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
        
        event Transfer(address indexed from, address indexed to, uint256 value);
        event Approval(address indexed owner, address indexed spender, uint256 value);
    }

    library SafeMath {
        
        function add(uint256 a, uint256 b) internal pure returns (uint256) {
            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;
            }
        }
        
    }

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

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

    abstract contract Ownable is Context {
        address internal _owner;
        address private _previousOwner;

        event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
        constructor () {
            _owner = _msgSender();
            emit OwnershipTransferred(address(0), _owner);
        }
        
        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 {
            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;
        }
 }

    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,Ownable, IERC20, IERC20Metadata {
        using SafeMath for uint256;

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

        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 recipient, uint256 amount) public virtual override returns (bool) {
            _transfer(_msgSender(), recipient, amount);
            return true;
        }

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

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

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

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

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

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

            _beforeTokenTransfer(sender, recipient, amount);

            _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, 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 = _totalSupply.add(amount);
            _balances[account] = _balances[account].add(amount);
            emit Transfer(address(0), account, amount);
        }

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

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

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

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

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

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


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

    interface IUniswapV2Pair {
        function factory() external view returns (address);
    }

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

    contract Archangel is ERC20 {
        
        using SafeMath for uint256;

        mapping (address => bool) private isExcludedFromFee;
        mapping(address => bool) private isExcludedFromMaxWallet;

        address public marketingWallet;
        address public devWallet;
        address constant _burnAddress = 0x000000000000000000000000000000000000dEaD;

        uint256 public buyMarketingFee = 2;  
        uint256 public sellMarketingFee = 2; 

        uint256 public buyDevFee = 3;  
        uint256 public sellDevFee = 3; 

        IUniswapV2Router02 public uniswapV2Router;
        address public uniswapV2Pair;
        bool inSwapAndLiquify;
        bool public swapAndLiquifyEnabled = true;
        uint256 public numTokensSellToSendFees;
        uint256 public maxWalletBalance;
        event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
        event SwapAndLiquifyEnabledUpdated(bool enabled);
        event SwapAndLiquify(
            uint256 tokensSwapped,
            uint256 ethReceived,
            uint256 tokensIntoLiqudity
        );
        
        modifier lockTheSwap {
            inSwapAndLiquify = true;
            _;
            inSwapAndLiquify = false;
        }
        
        constructor () ERC20("Archangel-12", "A12"){

            numTokensSellToSendFees = 1000000 * 10 ** decimals();
            marketingWallet = 0xE1be2D185608715830Dc093D112A655f13615e7d;
            devWallet = 0xE1be2D185608715830Dc093D112A655f13615e7d;
            
            IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());

            uniswapV2Router = _uniswapV2Router;
            
            isExcludedFromFee[_msgSender()] = true;
            isExcludedFromFee[address(this)] = true;
            isExcludedFromFee[marketingWallet] = true;
            isExcludedFromFee[devWallet] = true;

            isExcludedFromMaxWallet[owner()] = true;
            isExcludedFromMaxWallet[address(this)] = true;
            isExcludedFromMaxWallet[_burnAddress] = true;
            isExcludedFromMaxWallet[marketingWallet] = true;
            isExcludedFromMaxWallet[devWallet] = true;

            _mint(owner(), 1000000000 * 10 ** decimals());
            maxWalletBalance = (totalSupply() * 1 ) / 100;

        }

        function burn(uint tokens) external onlyOwner {
            _burn(msg.sender, tokens * 10 ** decimals());
        }

        function excludedFromMaxWallet(address account) public onlyOwner {
            isExcludedFromMaxWallet[account] = true;
        }
        
        function includeInMaxWallet(address account) public onlyOwner {
            isExcludedFromMaxWallet[account] = false;
        }

        function isExcludedFromMaxBalance(address account) external view returns(bool) {
            return isExcludedFromMaxWallet[account];
        }

        function excludeFromFee(address account) public onlyOwner {
            isExcludedFromFee[account] = true;
        }
        
        function includeInFee(address account) public onlyOwner {
            isExcludedFromFee[account] = false;
        }

        function isExcludedFromFees(address account) public view returns(bool) {
            return isExcludedFromFee[account];
        }

        function setBuyAndSellFee(
            uint256 buyMarFee,
            uint256 sellMarFee,            
            uint256 buyDeFee,
            uint256 sellDeFee

        ) external onlyOwner {
            buyMarketingFee = buyMarFee;
            sellMarketingFee = sellMarFee;
            buyDevFee = buyDeFee;
            sellDeFee = buyDeFee;

        }

        function setWallets(address _marketing, address _dev) external onlyOwner {
            marketingWallet = _marketing;
            devWallet = _dev;
        }

        function setMaxBalance(uint256 maxBalancePercent) external onlyOwner {
              maxWalletBalance = maxBalancePercent * 10 ** decimals();
        }  

        function setNumTokensSellToSendFees(uint256 amount) external onlyOwner {
            numTokensSellToSendFees = amount * 10 ** decimals();
        }

        function setRouterAddress(address newRouter) external onlyOwner {
            IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouter);
            uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
            uniswapV2Router = _uniswapV2Router;
        }

        function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner {
            swapAndLiquifyEnabled = _enabled;
            emit SwapAndLiquifyEnabledUpdated(_enabled);
        }
        
        receive() external payable {}

        function _transfer(
            address from,
            address to,
            uint256 amount
        ) internal override {
            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 != address(this) &&
            to != _burnAddress &&
            to != uniswapV2Pair ) 
            {
                    uint256 currentBalance = balanceOf(to);
                    require(isExcludedFromMaxWallet[to] || (currentBalance + amount <= maxWalletBalance),
                            "ERC20: Reached max wallet holding");
            }

            uint256 contractTokenBalance = balanceOf(address(this)); 
            bool overMinTokenBalance = contractTokenBalance >= numTokensSellToSendFees;
            if (
                overMinTokenBalance &&
                !inSwapAndLiquify &&
                from != uniswapV2Pair &&
                swapAndLiquifyEnabled
            ) {
                contractTokenBalance = numTokensSellToSendFees;
                swapBack(contractTokenBalance);
            }

            bool takeFee = true;
        if (isExcludedFromFee[from] || isExcludedFromFee[to]) {
            super._transfer(from, to, amount);
            takeFee = false;
        } else {

            if (from == uniswapV2Pair) {
                uint256 marketingTokens = amount.mul(buyMarketingFee).div(100);
                uint256 devTokens = amount.mul(buyDevFee).div(100);
                amount= amount.sub(marketingTokens.add(devTokens));
                super._transfer(from, address(this), marketingTokens.add(devTokens));
                super._transfer(from, to, amount);

            } else if (to == uniswapV2Pair) {
                uint256 marketingTokens = amount.mul(sellMarketingFee).div(100);
                uint256 devTokens = amount.mul(sellDevFee).div(100);
                amount= amount.sub(marketingTokens.add(devTokens));
                super._transfer(from, address(this),marketingTokens.add(devTokens));
                super._transfer(from, to, amount);
            } else {
                super._transfer(from, to, amount);
            }
        }
        }

        function swapBack(uint256 contractBalance) private lockTheSwap {
            
                uint256 marketingTokens = contractBalance.mul(sellMarketingFee).div(100);
                uint256 devTokens = contractBalance.mul(sellDevFee).div(100);

                uint256 totalTokensToSwap =  marketingTokens + devTokens ;
                
                if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

                bool success;
                
                swapTokensForEth(contractBalance); 
                
                uint256 ethBalance = address(this).balance;

                uint256 ethForMarketing = ethBalance * marketingTokens / (totalTokensToSwap);
                uint256 ethForDev = ethBalance * devTokens / (totalTokensToSwap);
        
                (success,) = address(marketingWallet).call{value: ethForMarketing}("");
                (success,) = address(devWallet).call{value: ethForDev}("");

        }       

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

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":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludedFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletBalance","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":"numTokensSellToSendFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyMarFee","type":"uint256"},{"internalType":"uint256","name":"sellMarFee","type":"uint256"},{"internalType":"uint256","name":"buyDeFee","type":"uint256"},{"internalType":"uint256","name":"sellDeFee","type":"uint256"}],"name":"setBuyAndSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBalancePercent","type":"uint256"}],"name":"setMaxBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNumTokensSellToSendFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_dev","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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"},{"stateMutability":"payable","type":"receive"}]

60806040526002600b819055600c556003600d819055600e556010805460ff60a81b1916600160a81b1790553480156200003857600080fd5b506040518060400160405280600c81526020016b20b931b430b733b2b616989960a11b8152506040518060400160405280600381526020016220989960e91b8152506200008a6200046d60201b60201c565b600080546001600160a01b0319166001600160a01b039290921691821781556040517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36005620000df838262000621565b506006620000ee828262000621565b50620000fb915050600990565b6200010890600a62000800565b6200011790620f424062000811565b6011556009805473e1be2d185608715830dc093d112a655f13615e7d6001600160a01b03199182168117909255600a805490911690911790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a0155916004808201926020929091908290030181865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca91906200082b565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000218573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023e91906200082b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200028c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b291906200082b565b601080546001600160a01b03199081166001600160a01b0393841617909155600f8054909116918316919091179055600160076000620002ef3390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526007909352818320805485166001908117909155600954821684528284208054861682179055600a54909116835290822080549093168117909255600890620003716000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260089093528183208054851660019081179091557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd093342998054861682179055600954821684528284208054861682179055600a549091168352912080549092161790556200043e6200041a6000546001600160a01b031690565b620004286009600a62000800565b6200043890633b9aca0062000811565b62000471565b60646200044a60045490565b6200045790600162000811565b6200046391906200085d565b6012555062000896565b3390565b6001600160a01b038216620004cc5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b600454620004db908262000566565b6004556001600160a01b03821660009081526002602052604090205462000503908262000566565b6001600160a01b0383166000818152600260205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620005559085815260200190565b60405180910390a35050565b505050565b600062000574828462000880565b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005a857607f821691505b602082108103620005c957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200056157600081815260208120601f850160051c81016020861015620005f85750805b601f850160051c820191505b81811015620006195782815560010162000604565b505050505050565b81516001600160401b038111156200063d576200063d6200057d565b62000655816200064e845462000593565b84620005cf565b602080601f8311600181146200068d5760008415620006745750858301515b600019600386901b1c1916600185901b17855562000619565b600085815260208120601f198616915b82811015620006be578886015182559484019460019091019084016200069d565b5085821015620006dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000744578160001904821115620007285762000728620006ed565b808516156200073657918102915b93841c939080029062000708565b509250929050565b6000826200075d5750600162000577565b816200076c5750600062000577565b81600181146200078557600281146200079057620007b0565b600191505062000577565b60ff841115620007a457620007a4620006ed565b50506001821b62000577565b5060208310610133831016604e8410600b8410161715620007d5575081810a62000577565b620007e1838362000703565b8060001904821115620007f857620007f8620006ed565b029392505050565b60006200057460ff8416836200074c565b8082028115828204841417620005775762000577620006ed565b6000602082840312156200083e57600080fd5b81516001600160a01b03811681146200085657600080fd5b9392505050565b6000826200087b57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620005775762000577620006ed565b611e4080620008a66000396000f3fe6080604052600436106102295760003560e01c80637bce5a0411610123578063a0d82dc5116100ab578063c98c83ff1161006f578063c98c83ff1461067a578063d3f6a1571461069a578063dd62ed3e146106ba578063ea2f0b3714610700578063f2fde38b1461072057600080fd5b8063a0d82dc5146105ee578063a457c2d714610604578063a9059cbb14610624578063bbde77c114610644578063c49b9a801461065a57600080fd5b80638ea5220f116100f25780638ea5220f1461056d578063921369131461058d57806395d89b41146105a35780639c3b4fdc146105b85780639d51d9b7146105ce57600080fd5b80637bce5a04146104f95780637d99f9a41461050f57806384e2b88d1461052f5780638da5cb5b1461054f57600080fd5b806341cb87fc116101b15780634fbee193116101755780634fbee1931461043f57806353cae9cf1461047857806370a082311461048e578063715018a6146104c457806375f0a874146104d957600080fd5b806341cb87fc1461039e57806342966c68146103be578063437823ec146103de57806349bd5a5e146103fe5780634a74bb021461041e57600080fd5b8063181cec1c116101f8578063181cec1c146102e757806323b872dd14610320578063313ce56714610340578063395093511461035c5780633f33e9091461037c57600080fd5b806306fdde0314610235578063095ea7b3146102605780631694505e1461029057806318160ddd146102c857600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610740565b60405161025791906118df565b60405180910390f35b34801561026c57600080fd5b5061028061027b366004611942565b6107d2565b6040519015158152602001610257565b34801561029c57600080fd5b50600f546102b0906001600160a01b031681565b6040516001600160a01b039091168152602001610257565b3480156102d457600080fd5b506004545b604051908152602001610257565b3480156102f357600080fd5b5061028061030236600461196e565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561032c57600080fd5b5061028061033b36600461198b565b6107e9565b34801561034c57600080fd5b5060405160098152602001610257565b34801561036857600080fd5b50610280610377366004611942565b610852565b34801561038857600080fd5b5061039c61039736600461196e565b610888565b005b3480156103aa57600080fd5b5061039c6103b936600461196e565b6108dc565b3480156103ca57600080fd5b5061039c6103d93660046119cc565b610a81565b3480156103ea57600080fd5b5061039c6103f936600461196e565b610acd565b34801561040a57600080fd5b506010546102b0906001600160a01b031681565b34801561042a57600080fd5b5060105461028090600160a81b900460ff1681565b34801561044b57600080fd5b5061028061045a36600461196e565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561048457600080fd5b506102d960115481565b34801561049a57600080fd5b506102d96104a936600461196e565b6001600160a01b031660009081526002602052604090205490565b3480156104d057600080fd5b5061039c610b1b565b3480156104e557600080fd5b506009546102b0906001600160a01b031681565b34801561050557600080fd5b506102d9600b5481565b34801561051b57600080fd5b5061039c61052a36600461196e565b610b8f565b34801561053b57600080fd5b5061039c61054a3660046119cc565b610bdd565b34801561055b57600080fd5b506000546001600160a01b03166102b0565b34801561057957600080fd5b50600a546102b0906001600160a01b031681565b34801561059957600080fd5b506102d9600c5481565b3480156105af57600080fd5b5061024a610c23565b3480156105c457600080fd5b506102d9600d5481565b3480156105da57600080fd5b5061039c6105e93660046119cc565b610c32565b3480156105fa57600080fd5b506102d9600e5481565b34801561061057600080fd5b5061028061061f366004611942565b610c78565b34801561063057600080fd5b5061028061063f366004611942565b610cc7565b34801561065057600080fd5b506102d960125481565b34801561066657600080fd5b5061039c6106753660046119e5565b610cd4565b34801561068657600080fd5b5061039c610695366004611a07565b610d56565b3480156106a657600080fd5b5061039c6106b5366004611a39565b610d8f565b3480156106c657600080fd5b506102d96106d5366004611a39565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561070c57600080fd5b5061039c61071b36600461196e565b610de7565b34801561072c57600080fd5b5061039c61073b36600461196e565b610e32565b60606005805461074f90611a72565b80601f016020809104026020016040519081016040528092919081815260200182805461077b90611a72565b80156107c85780601f1061079d576101008083540402835291602001916107c8565b820191906000526020600020905b8154815290600101906020018083116107ab57829003601f168201915b5050505050905090565b60006107df338484610f1c565b5060015b92915050565b60006107f6848484611041565b610848843361084385604051806060016040528060288152602001611dbe602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906113a3565b610f1c565b5060019392505050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916107df91859061084390866113cf565b6000546001600160a01b031633146108bb5760405162461bcd60e51b81526004016108b290611aac565b60405180910390fd5b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146109065760405162461bcd60e51b81526004016108b290611aac565b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096d9190611ae1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109de9190611ae1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4f9190611ae1565b601080546001600160a01b039283166001600160a01b031991821617909155600f805493909216921691909117905550565b6000546001600160a01b03163314610aab5760405162461bcd60e51b81526004016108b290611aac565b610aca33610abb6009600a611bf8565b610ac59084611c07565b6113e2565b50565b6000546001600160a01b03163314610af75760405162461bcd60e51b81526004016108b290611aac565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000546001600160a01b03163314610b455760405162461bcd60e51b81526004016108b290611aac565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610bb95760405162461bcd60e51b81526004016108b290611aac565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b03163314610c075760405162461bcd60e51b81526004016108b290611aac565b610c136009600a611bf8565b610c1d9082611c07565b60115550565b60606006805461074f90611a72565b6000546001600160a01b03163314610c5c5760405162461bcd60e51b81526004016108b290611aac565b610c686009600a611bf8565b610c729082611c07565b60125550565b60006107df338461084385604051806060016040528060258152602001611de6602591393360009081526003602090815260408083206001600160a01b038d16845290915290205491906113a3565b60006107df338484611041565b6000546001600160a01b03163314610cfe5760405162461bcd60e51b81526004016108b290611aac565b60108054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610d4b90831515815260200190565b60405180910390a150565b6000546001600160a01b03163314610d805760405162461bcd60e51b81526004016108b290611aac565b50600b92909255600c55600d55565b6000546001600160a01b03163314610db95760405162461bcd60e51b81526004016108b290611aac565b600980546001600160a01b039384166001600160a01b031991821617909155600a8054929093169116179055565b6000546001600160a01b03163314610e115760405162461bcd60e51b81526004016108b290611aac565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b03163314610e5c5760405162461bcd60e51b81526004016108b290611aac565b6001600160a01b038116610ec15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108b2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610f7e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108b2565b6001600160a01b038216610fdf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108b2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166110675760405162461bcd60e51b81526004016108b290611c1e565b6001600160a01b03821661108d5760405162461bcd60e51b81526004016108b290611c63565b600081116110ef5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108b2565b6000546001600160a01b0384811691161480159061111657506001600160a01b0382163014155b801561112d57506001600160a01b03821661dead14155b801561114757506010546001600160a01b03838116911614155b156111e2576001600160a01b03821660009081526002602090815260408083205460089092529091205460ff168061118a57506012546111878383611ca6565b11155b6111e05760405162461bcd60e51b815260206004820152602160248201527f45524332303a2052656163686564206d61782077616c6c657420686f6c64696e6044820152606760f81b60648201526084016108b2565b505b30600090815260026020526040902054601154811080159081906112105750601054600160a01b900460ff16155b801561122a57506010546001600160a01b03868116911614155b801561123f5750601054600160a81b900460ff165b15611252576011549150611252826114ed565b6001600160a01b03851660009081526007602052604090205460019060ff168061129457506001600160a01b03851660009081526007602052604090205460ff165b156112ac576112a486868661165d565b50600061139b565b6010546001600160a01b03908116908716036113405760006112e460646112de600b548861176990919063ffffffff16565b90611775565b9050600061130260646112de600d548961176990919063ffffffff16565b905061131861131183836113cf565b8790611781565b955061132e883061132985856113cf565b61165d565b61133988888861165d565b505061139b565b6010546001600160a01b039081169086160361139057600061137260646112de600c548861176990919063ffffffff16565b9050600061130260646112de600e548961176990919063ffffffff16565b61139b86868661165d565b505050505050565b600081848411156113c75760405162461bcd60e51b81526004016108b291906118df565b505050900390565b60006113db8284611ca6565b9392505050565b6001600160a01b0382166114425760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108b2565b61147f81604051806060016040528060228152602001611d76602291396001600160a01b03851660009081526002602052604090205491906113a3565b6001600160a01b0383166000908152600260205260409020556004546114a59082611781565b6004556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6010805460ff60a01b1916600160a01b179055600c54600090611518906064906112de908590611769565b9050600061153660646112de600e548661176990919063ffffffff16565b905060006115448284611ca6565b9050831580611551575080155b1561155e5750505061164d565b60006115698561178d565b476000836115778784611c07565b6115819190611cb9565b90506000846115908785611c07565b61159a9190611cb9565b6009546040519192506001600160a01b0316908390600081818185875af1925050503d80600081146115e8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ed565b606091505b5050600a546040519195506001600160a01b0316908290600081818185875af1925050503d806000811461163d576040519150601f19603f3d011682016040523d82523d6000602084013e611642565b606091505b505050505050505050505b506010805460ff60a01b19169055565b6001600160a01b0383166116835760405162461bcd60e51b81526004016108b290611c1e565b6001600160a01b0382166116a95760405162461bcd60e51b81526004016108b290611c63565b6116e681604051806060016040528060268152602001611d98602691396001600160a01b03861660009081526002602052604090205491906113a3565b6001600160a01b03808516600090815260026020526040808220939093559084168152205461171590826113cf565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110349085815260200190565b60006113db8284611c07565b60006113db8284611cb9565b60006113db8284611cdb565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106117c2576117c2611cee565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561181b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183f9190611ae1565b8160018151811061185257611852611cee565b6001600160a01b039283166020918202929092010152600f546118789130911684610f1c565b600f5460405163791ac94760e01b81526001600160a01b039091169063791ac947906118b1908590600090869030904290600401611d04565b600060405180830381600087803b1580156118cb57600080fd5b505af115801561139b573d6000803e3d6000fd5b600060208083528351808285015260005b8181101561190c578581018301518582016040015282016118f0565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610aca57600080fd5b6000806040838503121561195557600080fd5b82356119608161192d565b946020939093013593505050565b60006020828403121561198057600080fd5b81356113db8161192d565b6000806000606084860312156119a057600080fd5b83356119ab8161192d565b925060208401356119bb8161192d565b929592945050506040919091013590565b6000602082840312156119de57600080fd5b5035919050565b6000602082840312156119f757600080fd5b813580151581146113db57600080fd5b60008060008060808587031215611a1d57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a4c57600080fd5b8235611a578161192d565b91506020830135611a678161192d565b809150509250929050565b600181811c90821680611a8657607f821691505b602082108103611aa657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611af357600080fd5b81516113db8161192d565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611b4f578160001904821115611b3557611b35611afe565b80851615611b4257918102915b93841c9390800290611b19565b509250929050565b600082611b66575060016107e3565b81611b73575060006107e3565b8160018114611b895760028114611b9357611baf565b60019150506107e3565b60ff841115611ba457611ba4611afe565b50506001821b6107e3565b5060208310610133831016604e8410600b8410161715611bd2575081810a6107e3565b611bdc8383611b14565b8060001904821115611bf057611bf0611afe565b029392505050565b60006113db60ff841683611b57565b80820281158282048414176107e3576107e3611afe565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808201808211156107e3576107e3611afe565b600082611cd657634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156107e3576107e3611afe565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d545784516001600160a01b031683529383019391830191600101611d2f565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ae01fd3e01b1c14abc0f4717612f2f831171fa85e0e07d5c71d2fbfa54d0cac264736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102295760003560e01c80637bce5a0411610123578063a0d82dc5116100ab578063c98c83ff1161006f578063c98c83ff1461067a578063d3f6a1571461069a578063dd62ed3e146106ba578063ea2f0b3714610700578063f2fde38b1461072057600080fd5b8063a0d82dc5146105ee578063a457c2d714610604578063a9059cbb14610624578063bbde77c114610644578063c49b9a801461065a57600080fd5b80638ea5220f116100f25780638ea5220f1461056d578063921369131461058d57806395d89b41146105a35780639c3b4fdc146105b85780639d51d9b7146105ce57600080fd5b80637bce5a04146104f95780637d99f9a41461050f57806384e2b88d1461052f5780638da5cb5b1461054f57600080fd5b806341cb87fc116101b15780634fbee193116101755780634fbee1931461043f57806353cae9cf1461047857806370a082311461048e578063715018a6146104c457806375f0a874146104d957600080fd5b806341cb87fc1461039e57806342966c68146103be578063437823ec146103de57806349bd5a5e146103fe5780634a74bb021461041e57600080fd5b8063181cec1c116101f8578063181cec1c146102e757806323b872dd14610320578063313ce56714610340578063395093511461035c5780633f33e9091461037c57600080fd5b806306fdde0314610235578063095ea7b3146102605780631694505e1461029057806318160ddd146102c857600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610740565b60405161025791906118df565b60405180910390f35b34801561026c57600080fd5b5061028061027b366004611942565b6107d2565b6040519015158152602001610257565b34801561029c57600080fd5b50600f546102b0906001600160a01b031681565b6040516001600160a01b039091168152602001610257565b3480156102d457600080fd5b506004545b604051908152602001610257565b3480156102f357600080fd5b5061028061030236600461196e565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561032c57600080fd5b5061028061033b36600461198b565b6107e9565b34801561034c57600080fd5b5060405160098152602001610257565b34801561036857600080fd5b50610280610377366004611942565b610852565b34801561038857600080fd5b5061039c61039736600461196e565b610888565b005b3480156103aa57600080fd5b5061039c6103b936600461196e565b6108dc565b3480156103ca57600080fd5b5061039c6103d93660046119cc565b610a81565b3480156103ea57600080fd5b5061039c6103f936600461196e565b610acd565b34801561040a57600080fd5b506010546102b0906001600160a01b031681565b34801561042a57600080fd5b5060105461028090600160a81b900460ff1681565b34801561044b57600080fd5b5061028061045a36600461196e565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561048457600080fd5b506102d960115481565b34801561049a57600080fd5b506102d96104a936600461196e565b6001600160a01b031660009081526002602052604090205490565b3480156104d057600080fd5b5061039c610b1b565b3480156104e557600080fd5b506009546102b0906001600160a01b031681565b34801561050557600080fd5b506102d9600b5481565b34801561051b57600080fd5b5061039c61052a36600461196e565b610b8f565b34801561053b57600080fd5b5061039c61054a3660046119cc565b610bdd565b34801561055b57600080fd5b506000546001600160a01b03166102b0565b34801561057957600080fd5b50600a546102b0906001600160a01b031681565b34801561059957600080fd5b506102d9600c5481565b3480156105af57600080fd5b5061024a610c23565b3480156105c457600080fd5b506102d9600d5481565b3480156105da57600080fd5b5061039c6105e93660046119cc565b610c32565b3480156105fa57600080fd5b506102d9600e5481565b34801561061057600080fd5b5061028061061f366004611942565b610c78565b34801561063057600080fd5b5061028061063f366004611942565b610cc7565b34801561065057600080fd5b506102d960125481565b34801561066657600080fd5b5061039c6106753660046119e5565b610cd4565b34801561068657600080fd5b5061039c610695366004611a07565b610d56565b3480156106a657600080fd5b5061039c6106b5366004611a39565b610d8f565b3480156106c657600080fd5b506102d96106d5366004611a39565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561070c57600080fd5b5061039c61071b36600461196e565b610de7565b34801561072c57600080fd5b5061039c61073b36600461196e565b610e32565b60606005805461074f90611a72565b80601f016020809104026020016040519081016040528092919081815260200182805461077b90611a72565b80156107c85780601f1061079d576101008083540402835291602001916107c8565b820191906000526020600020905b8154815290600101906020018083116107ab57829003601f168201915b5050505050905090565b60006107df338484610f1c565b5060015b92915050565b60006107f6848484611041565b610848843361084385604051806060016040528060288152602001611dbe602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906113a3565b610f1c565b5060019392505050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916107df91859061084390866113cf565b6000546001600160a01b031633146108bb5760405162461bcd60e51b81526004016108b290611aac565b60405180910390fd5b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146109065760405162461bcd60e51b81526004016108b290611aac565b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096d9190611ae1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109de9190611ae1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4f9190611ae1565b601080546001600160a01b039283166001600160a01b031991821617909155600f805493909216921691909117905550565b6000546001600160a01b03163314610aab5760405162461bcd60e51b81526004016108b290611aac565b610aca33610abb6009600a611bf8565b610ac59084611c07565b6113e2565b50565b6000546001600160a01b03163314610af75760405162461bcd60e51b81526004016108b290611aac565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000546001600160a01b03163314610b455760405162461bcd60e51b81526004016108b290611aac565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610bb95760405162461bcd60e51b81526004016108b290611aac565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b03163314610c075760405162461bcd60e51b81526004016108b290611aac565b610c136009600a611bf8565b610c1d9082611c07565b60115550565b60606006805461074f90611a72565b6000546001600160a01b03163314610c5c5760405162461bcd60e51b81526004016108b290611aac565b610c686009600a611bf8565b610c729082611c07565b60125550565b60006107df338461084385604051806060016040528060258152602001611de6602591393360009081526003602090815260408083206001600160a01b038d16845290915290205491906113a3565b60006107df338484611041565b6000546001600160a01b03163314610cfe5760405162461bcd60e51b81526004016108b290611aac565b60108054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610d4b90831515815260200190565b60405180910390a150565b6000546001600160a01b03163314610d805760405162461bcd60e51b81526004016108b290611aac565b50600b92909255600c55600d55565b6000546001600160a01b03163314610db95760405162461bcd60e51b81526004016108b290611aac565b600980546001600160a01b039384166001600160a01b031991821617909155600a8054929093169116179055565b6000546001600160a01b03163314610e115760405162461bcd60e51b81526004016108b290611aac565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b03163314610e5c5760405162461bcd60e51b81526004016108b290611aac565b6001600160a01b038116610ec15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108b2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610f7e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108b2565b6001600160a01b038216610fdf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108b2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166110675760405162461bcd60e51b81526004016108b290611c1e565b6001600160a01b03821661108d5760405162461bcd60e51b81526004016108b290611c63565b600081116110ef5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108b2565b6000546001600160a01b0384811691161480159061111657506001600160a01b0382163014155b801561112d57506001600160a01b03821661dead14155b801561114757506010546001600160a01b03838116911614155b156111e2576001600160a01b03821660009081526002602090815260408083205460089092529091205460ff168061118a57506012546111878383611ca6565b11155b6111e05760405162461bcd60e51b815260206004820152602160248201527f45524332303a2052656163686564206d61782077616c6c657420686f6c64696e6044820152606760f81b60648201526084016108b2565b505b30600090815260026020526040902054601154811080159081906112105750601054600160a01b900460ff16155b801561122a57506010546001600160a01b03868116911614155b801561123f5750601054600160a81b900460ff165b15611252576011549150611252826114ed565b6001600160a01b03851660009081526007602052604090205460019060ff168061129457506001600160a01b03851660009081526007602052604090205460ff165b156112ac576112a486868661165d565b50600061139b565b6010546001600160a01b03908116908716036113405760006112e460646112de600b548861176990919063ffffffff16565b90611775565b9050600061130260646112de600d548961176990919063ffffffff16565b905061131861131183836113cf565b8790611781565b955061132e883061132985856113cf565b61165d565b61133988888861165d565b505061139b565b6010546001600160a01b039081169086160361139057600061137260646112de600c548861176990919063ffffffff16565b9050600061130260646112de600e548961176990919063ffffffff16565b61139b86868661165d565b505050505050565b600081848411156113c75760405162461bcd60e51b81526004016108b291906118df565b505050900390565b60006113db8284611ca6565b9392505050565b6001600160a01b0382166114425760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108b2565b61147f81604051806060016040528060228152602001611d76602291396001600160a01b03851660009081526002602052604090205491906113a3565b6001600160a01b0383166000908152600260205260409020556004546114a59082611781565b6004556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6010805460ff60a01b1916600160a01b179055600c54600090611518906064906112de908590611769565b9050600061153660646112de600e548661176990919063ffffffff16565b905060006115448284611ca6565b9050831580611551575080155b1561155e5750505061164d565b60006115698561178d565b476000836115778784611c07565b6115819190611cb9565b90506000846115908785611c07565b61159a9190611cb9565b6009546040519192506001600160a01b0316908390600081818185875af1925050503d80600081146115e8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ed565b606091505b5050600a546040519195506001600160a01b0316908290600081818185875af1925050503d806000811461163d576040519150601f19603f3d011682016040523d82523d6000602084013e611642565b606091505b505050505050505050505b506010805460ff60a01b19169055565b6001600160a01b0383166116835760405162461bcd60e51b81526004016108b290611c1e565b6001600160a01b0382166116a95760405162461bcd60e51b81526004016108b290611c63565b6116e681604051806060016040528060268152602001611d98602691396001600160a01b03861660009081526002602052604090205491906113a3565b6001600160a01b03808516600090815260026020526040808220939093559084168152205461171590826113cf565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110349085815260200190565b60006113db8284611c07565b60006113db8284611cb9565b60006113db8284611cdb565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106117c2576117c2611cee565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561181b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183f9190611ae1565b8160018151811061185257611852611cee565b6001600160a01b039283166020918202929092010152600f546118789130911684610f1c565b600f5460405163791ac94760e01b81526001600160a01b039091169063791ac947906118b1908590600090869030904290600401611d04565b600060405180830381600087803b1580156118cb57600080fd5b505af115801561139b573d6000803e3d6000fd5b600060208083528351808285015260005b8181101561190c578581018301518582016040015282016118f0565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610aca57600080fd5b6000806040838503121561195557600080fd5b82356119608161192d565b946020939093013593505050565b60006020828403121561198057600080fd5b81356113db8161192d565b6000806000606084860312156119a057600080fd5b83356119ab8161192d565b925060208401356119bb8161192d565b929592945050506040919091013590565b6000602082840312156119de57600080fd5b5035919050565b6000602082840312156119f757600080fd5b813580151581146113db57600080fd5b60008060008060808587031215611a1d57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a4c57600080fd5b8235611a578161192d565b91506020830135611a678161192d565b809150509250929050565b600181811c90821680611a8657607f821691505b602082108103611aa657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611af357600080fd5b81516113db8161192d565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611b4f578160001904821115611b3557611b35611afe565b80851615611b4257918102915b93841c9390800290611b19565b509250929050565b600082611b66575060016107e3565b81611b73575060006107e3565b8160018114611b895760028114611b9357611baf565b60019150506107e3565b60ff841115611ba457611ba4611afe565b50506001821b6107e3565b5060208310610133831016604e8410600b8410161715611bd2575081810a6107e3565b611bdc8383611b14565b8060001904821115611bf057611bf0611afe565b029392505050565b60006113db60ff841683611b57565b80820281158282048414176107e3576107e3611afe565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808201808211156107e3576107e3611afe565b600082611cd657634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156107e3576107e3611afe565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d545784516001600160a01b031683529383019391830191600101611d2f565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ae01fd3e01b1c14abc0f4717612f2f831171fa85e0e07d5c71d2fbfa54d0cac264736f6c63430008130033

Deployed Bytecode Sourcemap

9236:8932:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4002:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5003:181;;;;;;;;;;-1:-1:-1;5003:181:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;5003:181:0;1023:187:1;9798:41:0;;;;;;;;;;-1:-1:-1;9798:41:0;;;;-1:-1:-1;;;;;9798:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;9798:41:0;1215:229:1;4358:116:0;;;;;;;;;;-1:-1:-1;4450:12:0;;4358:116;;;1595:25:1;;;1583:2;1568:18;4358:116:0;1449:177:1;12173:145:0;;;;;;;;;;-1:-1:-1;12173:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;12274:32:0;12246:4;12274:32;;;:23;:32;;;;;;;;;12173:145;5196:387;;;;;;;;;;-1:-1:-1;5196:387:0;;;;;:::i;:::-;;:::i;4246:100::-;;;;;;;;;;-1:-1:-1;4246:100:0;;4333:1;2486:36:1;;2474:2;2459:18;4246:100:0;2344:184:1;5595:230:0;;;;;;;;;;-1:-1:-1;5595:230:0;;;;;:::i;:::-;;:::i;12032:129::-;;;;;;;;;;-1:-1:-1;12032:129:0;;;;;:::i;:::-;;:::i;:::-;;13619:334;;;;;;;;;;-1:-1:-1;13619:334:0;;;;;:::i;:::-;;:::i;11752:117::-;;;;;;;;;;-1:-1:-1;11752:117:0;;;;;:::i;:::-;;:::i;12330:118::-;;;;;;;;;;-1:-1:-1;12330:118:0;;;;;:::i;:::-;;:::i;9850:28::-;;;;;;;;;;-1:-1:-1;9850:28:0;;;;-1:-1:-1;;;;;9850:28:0;;;9921:40;;;;;;;;;;-1:-1:-1;9921:40:0;;;;-1:-1:-1;;;9921:40:0;;;;;;12597:131;;;;;;;;;;-1:-1:-1;12597:131:0;;;;;:::i;:::-;-1:-1:-1;;;;;12690:26:0;12662:4;12690:26;;;:17;:26;;;;;;;;;12597:131;9972:38;;;;;;;;;;;;;;;;4486:135;;;;;;;;;;-1:-1:-1;4486:135:0;;;;;:::i;:::-;-1:-1:-1;;;;;4591:18:0;4560:7;4591:18;;;:9;:18;;;;;;;4486:135;2824:160;;;;;;;;;;;;;:::i;9455:30::-;;;;;;;;;;-1:-1:-1;9455:30:0;;;;-1:-1:-1;;;;;9455:30:0;;;9618:34;;;;;;;;;;;;;;;;11881:131;;;;;;;;;;-1:-1:-1;11881:131:0;;;;;:::i;:::-;;:::i;13458:149::-;;;;;;;;;;-1:-1:-1;13458:149:0;;;;;:::i;:::-;;:::i;2557:95::-;;;;;;;;;;-1:-1:-1;2603:7:0;2634:6;-1:-1:-1;;;;;2634:6:0;2557:95;;9496:24;;;;;;;;;;-1:-1:-1;9496:24:0;;;;-1:-1:-1;;;;;9496:24:0;;;9665:35;;;;;;;;;;;;;;;;4122:112;;;;;;;;;;;;;:::i;9714:28::-;;;;;;;;;;;;;;;;13291:153;;;;;;;;;;-1:-1:-1;13291:153:0;;;;;:::i;:::-;;:::i;9755:29::-;;;;;;;;;;;;;;;;5837:281;;;;;;;;;;-1:-1:-1;5837:281:0;;;;;:::i;:::-;;:::i;4633:187::-;;;;;;;;;;-1:-1:-1;4633:187:0;;;;;:::i;:::-;;:::i;10021:31::-;;;;;;;;;;;;;;;;13965:185;;;;;;;;;;-1:-1:-1;13965:185:0;;;;;:::i;:::-;;:::i;12740:368::-;;;;;;;;;;-1:-1:-1;12740:368:0;;;;;:::i;:::-;;:::i;13120:159::-;;;;;;;;;;-1:-1:-1;13120:159:0;;;;;:::i;:::-;;:::i;4832:::-;;;;;;;;;;-1:-1:-1;4832:159:0;;;;;:::i;:::-;-1:-1:-1;;;;;4952:18:0;;;4921:7;4952:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4832:159;12468:117;;;;;;;;;;-1:-1:-1;12468:117:0;;;;;:::i;:::-;;:::i;2996:260::-;;;;;;;;;;-1:-1:-1;2996:260:0;;;;;:::i;:::-;;:::i;4002:108::-;4056:13;4093:5;4086:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4002:108;:::o;5003:181::-;5086:4;5107:39;2017:10;5130:7;5139:6;5107:8;:39::i;:::-;-1:-1:-1;5168:4:0;5003:181;;;;;:::o;5196:387::-;5352:4;5373:36;5383:6;5391:9;5402:6;5373:9;:36::i;:::-;5424:121;5433:6;2017:10;5455:89;5493:6;5455:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5455:19:0;;;;;;:11;:19;;;;;;;;2017:10;5455:33;;;;;;;;;;:37;:89::i;:::-;5424:8;:121::i;:::-;-1:-1:-1;5567:4:0;5196:387;;;;;:::o;5595:230::-;2017:10;5683:4;5736:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5736:34:0;;;;;;;;;;5683:4;;5704:83;;5727:7;;5736:50;;5775:10;5736:38;:50::i;12032:129::-;2603:7;2634:6;-1:-1:-1;;;;;2634:6:0;2017:10;2716:23;2708:68;;;;-1:-1:-1;;;2708:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;12109:32:0::1;12144:5;12109:32:::0;;;:23:::1;:32;::::0;;;;:40;;-1:-1:-1;;12109:40:0::1;::::0;;12032:129::o;13619:334::-;2603:7;2634:6;-1:-1:-1;;;;;2634:6:0;2017:10;2716:23;2708:68;;;;-1:-1:-1;;;2708:68:0;;;;;;;:::i;:::-;13698:35:::1;13755:9;13698:67;;13814:16;-1:-1:-1::0;;;;;13814:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13796:56:0::1;;13861:4;13868:16;-1:-1:-1::0;;;;;13868:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13796:96;::::0;-1:-1:-1;;;;;;13796:96:0::1;::::0;;;;;;-1:-1:-1;;;;;5219:15:1;;;13796:96:0::1;::::0;::::1;5201:34:1::0;5271:15;;5251:18;;;5244:43;5136:18;;13796:96:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13780:13;:112:::0;;-1:-1:-1;;;;;13780:112:0;;::::1;-1:-1:-1::0;;;;;;13780:112:0;;::::1;;::::0;;;13907:15:::1;:34:::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;-1:-1:-1;13619:334:0:o;11752:117::-;2603:7;2634:6;-1:-1:-1;;;;;2634:6:0;2017:10;2716:23;2708:68;;;;-1:-1:-1;;;2708:68:0;;;;;;;:::i;:::-;11813:44:::1;11819:10;11840:16;4333:1:::0;11840:2:::1;:16;:::i;:::-;11831:25;::::0;:6;:25:::1;:::i;:::-;11813:5;:44::i;:::-;11752:117:::0;:::o;12330:118::-;2603:7;2634:6;-1:-1:-1;;;;;2634:6:0;2017:10;2716:23;2708:68;;;;-1:-1:-1;;;2708:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12403:26:0::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;12403:33:0::1;12432:4;12403:33;::::0;;12330:118::o;2824:160::-;2603:7;2634:6;-1:-1:-1;;;;;2634:6:0;2017:10;2716:23;2708:68;;;;-1:-1:-1;;;2708:68:0;;;;;;;:::i;:::-;2935:1:::1;2919:6:::0;;2898:40:::1;::::0;-1:-1:-1;;;;;2919:6:0;;::::1;::::0;2898:40:::1;::::0;2935:1;;2898:40:::1;2970:1;2953:19:::0;;-1:-1:-1;;;;;;2953:19:0::1;::::0;;2824:160::o;11881:131::-;2603:7;2634:6;-1:-1:-1;;;;;2634:6:0;2017:10;2716:23;2708:68;;;;-1:-1:-1;;;2708:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11961:32:0::1;;::::0;;;:23:::1;:32;::::0;;;;:39;;-1:-1:-1;;11961:39:0::1;11996:4;11961:39;::::0;;11881:131::o;13458:149::-;2603:7;2634:6;-1:-1:-1;;;;;2634:6:0;2017:10;2716:23;2708:68;;;;-1:-1:-1;;;2708:68:0;;;;;;;:::i;:::-;13579:16:::1;4333:1:::0;13579:2:::1;:16;:::i;:::-;13570:25;::::0;:6;:25:::1;:::i;:::-;13544:23;:51:::0;-1:-1:-1;13458:149:0:o;4122:112::-;4178:13;4215:7;4208:14;;;;;:::i;13291:153::-;2603:7;2634:6;-1:-1:-1;;;;;2634:6:0;2017:10;2716:23;2708:68;;;;-1:-1:-1;;;2708:68:0;;;;;;;:::i;:::-;13416:16:::1;4333:1:::0;13416:2:::1;:16;:::i;:::-;13396:36;::::0;:17;:36:::1;:::i;:::-;13377:16;:55:::0;-1:-1:-1;13291:153:0:o;5837:281::-;5930:4;5951:129;2017:10;5974:7;5983:96;6022:15;5983:96;;;;;;;;;;;;;;;;;2017:10;5983:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5983:34:0;;;;;;;;;;;;:38;:96::i;4633:187::-;4719:4;4740:42;2017:10;4764:9;4775:6;4740:9;:42::i;13965:185::-;2603:7;2634:6;-1:-1:-1;;;;;2634:6:0;2017:10;2716:23;2708:68;;;;-1:-1:-1;;;2708:68:0;;;;;;;:::i;:::-;14048:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;14048:32:0::1;-1:-1:-1::0;;;;14048:32:0;;::::1;;::::0;;14100:38:::1;::::0;::::1;::::0;::::1;::::0;14072:8;1188:14:1;1181:22;1163:41;;1151:2;1136:18;;1023:187;14100:38:0::1;;;;;;;;13965:185:::0;:::o;12740:368::-;2603:7;2634:6;-1:-1:-1;;;;;2634:6:0;2017:10;2716:23;2708:68;;;;-1:-1:-1;;;2708:68:0;;;;;;;:::i;:::-;-1:-1:-1;12953:15:0::1;:27:::0;;;;12995:16:::1;:29:::0;13039:9:::1;:20:::0;12740:368::o;13120:159::-;2603:7;2634:6;-1:-1:-1;;;;;2634:6:0;2017:10;2716:23;2708:68;;;;-1:-1:-1;;;2708:68:0;;;;;;;:::i;:::-;13208:15:::1;:28:::0;;-1:-1:-1;;;;;13208:28:0;;::::1;-1:-1:-1::0;;;;;;13208:28:0;;::::1;;::::0;;;13251:9:::1;:16:::0;;;;;::::1;::::0;::::1;;::::0;;13120:159::o;12468:117::-;2603:7;2634:6;-1:-1:-1;;;;;2634:6:0;2017:10;2716:23;2708:68;;;;-1:-1:-1;;;2708:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12539:26:0::1;12568:5;12539:26:::0;;;:17:::1;:26;::::0;;;;:34;;-1:-1:-1;;12539:34:0::1;::::0;;12468:117::o;2996:260::-;2603:7;2634:6;-1:-1:-1;;;;;2634:6:0;2017:10;2716:23;2708:68;;;;-1:-1:-1;;;2708:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3089:22:0;::::1;3081:73;;;::::0;-1:-1:-1;;;3081:73:0;;7188:2:1;3081:73:0::1;::::0;::::1;7170:21:1::0;7227:2;7207:18;;;7200:30;7266:34;7246:18;;;7239:62;-1:-1:-1;;;7317:18:1;;;7310:36;7363:19;;3081:73:0::1;6986:402:1::0;3081:73:0::1;3195:6;::::0;;3174:38:::1;::::0;-1:-1:-1;;;;;3174:38:0;;::::1;::::0;3195:6;::::1;::::0;3174:38:::1;::::0;::::1;3227:6;:17:::0;;-1:-1:-1;;;;;;3227:17:0::1;-1:-1:-1::0;;;;;3227:17:0;;;::::1;::::0;;;::::1;::::0;;2996:260::o;7627:416::-;-1:-1:-1;;;;;7783:19:0;;7775:68;;;;-1:-1:-1;;;7775:68:0;;7595:2:1;7775:68:0;;;7577:21:1;7634:2;7614:18;;;7607:30;7673:34;7653:18;;;7646:62;-1:-1:-1;;;7724:18:1;;;7717:34;7768:19;;7775:68:0;7393:400:1;7775:68:0;-1:-1:-1;;;;;7866:21:0;;7858:68;;;;-1:-1:-1;;;7858:68:0;;8000:2:1;7858:68:0;;;7982:21:1;8039:2;8019:18;;;8012:30;8078:34;8058:18;;;8051:62;-1:-1:-1;;;8129:18:1;;;8122:32;8171:19;;7858:68:0;7798:398:1;7858:68:0;-1:-1:-1;;;;;7943:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7999:32;;1595:25:1;;;7999:32:0;;1568:18:1;7999:32:0;;;;;;;;7627:416;;;:::o;14211:2398::-;-1:-1:-1;;;;;14363:18:0;;14355:68;;;;-1:-1:-1;;;14355:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14446:16:0;;14438:64;;;;-1:-1:-1;;;14438:64:0;;;;;;;:::i;:::-;14534:1;14525:6;:10;14517:64;;;;-1:-1:-1;;;14517:64:0;;9213:2:1;14517:64:0;;;9195:21:1;9252:2;9232:18;;;9225:30;9291:34;9271:18;;;9264:62;-1:-1:-1;;;9342:18:1;;;9335:39;9391:19;;14517:64:0;9011:405:1;14517:64:0;2603:7;2634:6;-1:-1:-1;;;;;14616:15:0;;;2634:6;;14616:15;;;;:51;;-1:-1:-1;;;;;;14648:19:0;;14662:4;14648:19;;14616:51;:86;;;;-1:-1:-1;;;;;;14684:18:0;;9563:42;14684:18;;14616:86;:122;;;;-1:-1:-1;14725:13:0;;-1:-1:-1;;;;;14719:19:0;;;14725:13;;14719:19;;14616:122;14598:408;;;-1:-1:-1;;;;;4591:18:0;;14778:22;4591:18;;;:9;:18;;;;;;;;;14847:23;:27;;;;;;;;;;:76;;-1:-1:-1;14906:16:0;;14879:23;14896:6;14879:14;:23;:::i;:::-;:43;;14847:76;14839:151;;;;-1:-1:-1;;;14839:151:0;;9753:2:1;14839:151:0;;;9735:21:1;9792:2;9772:18;;;9765:30;9831:34;9811:18;;;9804:62;-1:-1:-1;;;9882:18:1;;;9875:31;9923:19;;14839:151:0;9551:397:1;14839:151:0;14755:251;14598:408;15071:4;15022:28;4591:18;;;:9;:18;;;;;;15144:23;;15120:47;;;;;;;15204:57;;-1:-1:-1;15245:16:0;;-1:-1:-1;;;15245:16:0;;;;15244:17;15204:57;:99;;;;-1:-1:-1;15290:13:0;;-1:-1:-1;;;;;15282:21:0;;;15290:13;;15282:21;;15204:99;:141;;;;-1:-1:-1;15324:21:0;;-1:-1:-1;;;15324:21:0;;;;15204:141;15182:309;;;15403:23;;15380:46;;15445:30;15454:20;15445:8;:30::i;:::-;-1:-1:-1;;;;;15541:23:0;;15507:12;15541:23;;;:17;:23;;;;;;15522:4;;15541:23;;;:48;;-1:-1:-1;;;;;;15568:21:0;;;;;;:17;:21;;;;;;;;15541:48;15537:1061;;;15606:33;15622:4;15628:2;15632:6;15606:15;:33::i;:::-;-1:-1:-1;15664:5:0;15537:1061;;;15716:13;;-1:-1:-1;;;;;15716:13:0;;;15708:21;;;;15704:883;;15750:23;15776:36;15808:3;15776:27;15787:15;;15776:6;:10;;:27;;;;:::i;:::-;:31;;:36::i;:::-;15750:62;;15831:17;15851:30;15877:3;15851:21;15862:9;;15851:6;:10;;:21;;;;:::i;:30::-;15831:50;-1:-1:-1;15908:42:0;15919:30;:15;15831:50;15919:19;:30::i;:::-;15908:6;;:10;:42::i;:::-;15900:50;-1:-1:-1;15969:68:0;15985:4;15999;16006:30;:15;16026:9;16006:19;:30::i;:::-;15969:15;:68::i;:::-;16056:33;16072:4;16078:2;16082:6;16056:15;:33::i;:::-;15731:376;;15704:883;;;16123:13;;-1:-1:-1;;;;;16123:13:0;;;16117:19;;;;16113:474;;16157:23;16183:37;16216:3;16183:28;16194:16;;16183:6;:10;;:28;;;;:::i;:37::-;16157:63;;16239:17;16259:31;16286:3;16259:22;16270:10;;16259:6;:10;;:22;;;;:::i;16113:474::-;16538:33;16554:4;16560:2;16564:6;16538:15;:33::i;:::-;14340:2269;;;14211:2398;;;:::o;1410:226::-;1496:7;1565:12;1557:6;;;;1549:29;;;;-1:-1:-1;;;1549:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1604:5:0;;;1410:226::o;946:106::-;1004:7;1035:5;1039:1;1035;:5;:::i;:::-;1028:12;946:106;-1:-1:-1;;;946:106:0:o;7173:442::-;-1:-1:-1;;;;;7261:21:0;;7253:67;;;;-1:-1:-1;;;7253:67:0;;10155:2:1;7253:67:0;;;10137:21:1;10194:2;10174:18;;;10167:30;10233:34;10213:18;;;10206:62;-1:-1:-1;;;10284:18:1;;;10277:31;10325:19;;7253:67:0;9953:397:1;7253:67:0;7424:68;7447:6;7424:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7424:18:0;;;;;;:9;:18;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;7403:18:0;;;;;;:9;:18;;;;;:89;7522:12;;:24;;7539:6;7522:16;:24::i;:::-;7507:12;:39;7566:37;;1595:25:1;;;7592:1:0;;-1:-1:-1;;;;;7566:37:0;;;;;1583:2:1;1568:18;7566:37:0;;;;;;;7173:442;;:::o;16621:974::-;10393:16;:23;;-1:-1:-1;;;;10393:23:0;-1:-1:-1;;;10393:23:0;;;16763:16:::1;::::0;10393:23;;16743:46:::1;::::0;16785:3:::1;::::0;16743:37:::1;::::0;:15;;:19:::1;:37::i;:46::-;16717:72;;16808:17;16828:40;16864:3;16828:31;16848:10;;16828:15;:19;;:31;;;;:::i;:40::-;16808:60:::0;-1:-1:-1;16889:25:0::1;16918:27;16808:60:::0;16918:15;:27:::1;:::i;:::-;16889:56:::0;-1:-1:-1;16986:20:0;;;:46:::1;;-1:-1:-1::0;17010:22:0;;16986:46:::1;16983:60;;;17035:7;;;;;16983:60;17063:12;17112:33;17129:15;17112:16;:33::i;:::-;17204:21;17183:18;17304:17:::0;17272:28:::1;17285:15:::0;17204:21;17272:28:::1;:::i;:::-;:50;;;;:::i;:::-;17246:76:::0;-1:-1:-1;17341:17:0::1;17387::::0;17361:22:::1;17374:9:::0;17361:10;:22:::1;:::i;:::-;:44;;;;:::i;:::-;17455:15;::::0;17447:57:::1;::::0;17341:64;;-1:-1:-1;;;;;;17455:15:0::1;::::0;17484;;17447:57:::1;::::0;;;17484:15;17455;17447:57:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;17544:9:0::1;::::0;17536:45:::1;::::0;17434:70;;-1:-1:-1;;;;;;17544:9:0::1;::::0;17567;;17536:45:::1;::::0;;;17567:9;17544;17536:45:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;10431:1:0::1;-1:-1:-1::0;10447:16:0;:24;;-1:-1:-1;;;;10447:24:0;;;16621:974::o;6130:617::-;-1:-1:-1;;;;;6290:20:0;;6282:70;;;;-1:-1:-1;;;6282:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6375:23:0;;6367:71;;;;-1:-1:-1;;;6367:71:0;;;;;;;:::i;:::-;6539;6561:6;6539:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6539:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;6519:17:0;;;;;;;:9;:17;;;;;;:91;;;;6648:20;;;;;;;:32;;6673:6;6648:24;:32::i;:::-;-1:-1:-1;;;;;6625:20:0;;;;;;;:9;:20;;;;;;;:55;;;;6700:35;;;;;;;;;;6728:6;1595:25:1;;1583:2;1568:18;;1449:177;1178:106:0;1236:7;1267:5;1271:1;1267;:5;:::i;1294:106::-;1352:7;1383:5;1387:1;1383;:5;:::i;1062:106::-;1120:7;1151:5;1155:1;1151;:5;:::i;17614:547::-;17708:16;;;17722:1;17708:16;;;;;;;;17684:21;;17708:16;;;;;;;;;;-1:-1:-1;17708:16:0;17684:40;;17757:4;17739;17744:1;17739:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17739:23:0;;;:7;;;;;;;;;;:23;;;;17787:15;;:22;;;-1:-1:-1;;;17787:22:0;;;;:15;;;;;:20;;:22;;;;;17739:7;;17787:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17777:4;17782:1;17777:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17777:32:0;;;:7;;;;;;;;;:32;17856:15;;17824:62;;17841:4;;17856:15;17874:11;17824:8;:62::i;:::-;17901:15;;:248;;-1:-1:-1;;;17901:248:0;;-1:-1:-1;;;;;17901:15:0;;;;:66;;:248;;17986:11;;17901:15;;18064:4;;18095;;18119:15;;17901:248;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;1631:247::-;1690:6;1743:2;1731:9;1722:7;1718:23;1714:32;1711:52;;;1759:1;1756;1749:12;1711:52;1798:9;1785:23;1817:31;1842:5;1817:31;:::i;1883:456::-;1960:6;1968;1976;2029:2;2017:9;2008:7;2004:23;2000:32;1997:52;;;2045:1;2042;2035:12;1997:52;2084:9;2071:23;2103:31;2128:5;2103:31;:::i;:::-;2153:5;-1:-1:-1;2210:2:1;2195:18;;2182:32;2223:33;2182:32;2223:33;:::i;:::-;1883:456;;2275:7;;-1:-1:-1;;;2329:2:1;2314:18;;;;2301:32;;1883:456::o;2533:180::-;2592:6;2645:2;2633:9;2624:7;2620:23;2616:32;2613:52;;;2661:1;2658;2651:12;2613:52;-1:-1:-1;2684:23:1;;2533:180;-1:-1:-1;2533:180:1:o;2926:273::-;2982:6;3035:2;3023:9;3014:7;3010:23;3006:32;3003:52;;;3051:1;3048;3041:12;3003:52;3090:9;3077:23;3143:5;3136:13;3129:21;3122:5;3119:32;3109:60;;3165:1;3162;3155:12;3204:385;3290:6;3298;3306;3314;3367:3;3355:9;3346:7;3342:23;3338:33;3335:53;;;3384:1;3381;3374:12;3335:53;-1:-1:-1;;3407:23:1;;;3477:2;3462:18;;3449:32;;-1:-1:-1;3528:2:1;3513:18;;3500:32;;3579:2;3564:18;3551:32;;-1:-1:-1;3204:385:1;-1:-1:-1;3204:385:1:o;3594:388::-;3662:6;3670;3723:2;3711:9;3702:7;3698:23;3694:32;3691:52;;;3739:1;3736;3729:12;3691:52;3778:9;3765:23;3797:31;3822:5;3797:31;:::i;:::-;3847:5;-1:-1:-1;3904:2:1;3889:18;;3876:32;3917:33;3876:32;3917:33;:::i;:::-;3969:7;3959:17;;;3594:388;;;;;:::o;3987:380::-;4066:1;4062:12;;;;4109;;;4130:61;;4184:4;4176:6;4172:17;4162:27;;4130:61;4237:2;4229:6;4226:14;4206:18;4203:38;4200:161;;4283:10;4278:3;4274:20;4271:1;4264:31;4318:4;4315:1;4308:15;4346:4;4343:1;4336:15;4200:161;;3987:380;;;:::o;4372:356::-;4574:2;4556:21;;;4593:18;;;4586:30;4652:34;4647:2;4632:18;;4625:62;4719:2;4704:18;;4372:356::o;4733:251::-;4803:6;4856:2;4844:9;4835:7;4831:23;4827:32;4824:52;;;4872:1;4869;4862:12;4824:52;4904:9;4898:16;4923:31;4948:5;4923:31;:::i;5298:127::-;5359:10;5354:3;5350:20;5347:1;5340:31;5390:4;5387:1;5380:15;5414:4;5411:1;5404:15;5430:422;5519:1;5562:5;5519:1;5576:270;5597:7;5587:8;5584:21;5576:270;;;5656:4;5652:1;5648:6;5644:17;5638:4;5635:27;5632:53;;;5665:18;;:::i;:::-;5715:7;5705:8;5701:22;5698:55;;;5735:16;;;;5698:55;5814:22;;;;5774:15;;;;5576:270;;;5580:3;5430:422;;;;;:::o;5857:806::-;5906:5;5936:8;5926:80;;-1:-1:-1;5977:1:1;5991:5;;5926:80;6025:4;6015:76;;-1:-1:-1;6062:1:1;6076:5;;6015:76;6107:4;6125:1;6120:59;;;;6193:1;6188:130;;;;6100:218;;6120:59;6150:1;6141:10;;6164:5;;;6188:130;6225:3;6215:8;6212:17;6209:43;;;6232:18;;:::i;:::-;-1:-1:-1;;6288:1:1;6274:16;;6303:5;;6100:218;;6402:2;6392:8;6389:16;6383:3;6377:4;6374:13;6370:36;6364:2;6354:8;6351:16;6346:2;6340:4;6337:12;6333:35;6330:77;6327:159;;;-1:-1:-1;6439:19:1;;;6471:5;;6327:159;6518:34;6543:8;6537:4;6518:34;:::i;:::-;6588:6;6584:1;6580:6;6576:19;6567:7;6564:32;6561:58;;;6599:18;;:::i;:::-;6637:20;;5857:806;-1:-1:-1;;;5857:806:1:o;6668:140::-;6726:5;6755:47;6796:4;6786:8;6782:19;6776:4;6755:47;:::i;6813:168::-;6886:9;;;6917;;6934:15;;;6928:22;;6914:37;6904:71;;6955:18;;:::i;8201:401::-;8403:2;8385:21;;;8442:2;8422:18;;;8415:30;8481:34;8476:2;8461:18;;8454:62;-1:-1:-1;;;8547:2:1;8532:18;;8525:35;8592:3;8577:19;;8201:401::o;8607:399::-;8809:2;8791:21;;;8848:2;8828:18;;;8821:30;8887:34;8882:2;8867:18;;8860:62;-1:-1:-1;;;8953:2:1;8938:18;;8931:33;8996:3;8981:19;;8607:399::o;9421:125::-;9486:9;;;9507:10;;;9504:36;;;9520:18;;:::i;10355:217::-;10395:1;10421;10411:132;;10465:10;10460:3;10456:20;10453:1;10446:31;10500:4;10497:1;10490:15;10528:4;10525:1;10518:15;10411:132;-1:-1:-1;10557:9:1;;10355:217::o;10787:128::-;10854:9;;;10875:11;;;10872:37;;;10889:18;;:::i;11052:127::-;11113:10;11108:3;11104:20;11101:1;11094:31;11144:4;11141:1;11134:15;11168:4;11165:1;11158:15;11184:980;11446:4;11494:3;11483:9;11479:19;11525:6;11514:9;11507:25;11551:2;11589:6;11584:2;11573:9;11569:18;11562:34;11632:3;11627:2;11616:9;11612:18;11605:31;11656:6;11691;11685:13;11722:6;11714;11707:22;11760:3;11749:9;11745:19;11738:26;;11799:2;11791:6;11787:15;11773:29;;11820:1;11830:195;11844:6;11841:1;11838:13;11830:195;;;11909:13;;-1:-1:-1;;;;;11905:39:1;11893:52;;12000:15;;;;11965:12;;;;11941:1;11859:9;11830:195;;;-1:-1:-1;;;;;;;12081:32:1;;;;12076:2;12061:18;;12054:60;-1:-1:-1;;;12145:3:1;12130:19;12123:35;12042:3;11184:980;-1:-1:-1;;;11184:980:1:o

Swarm Source

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