ETH Price: $3,488.78 (-0.07%)

Token

frog (frog)
 

Overview

Max Total Supply

1,000,000,000 frog

Holders

450

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 frog

Value
$0.00
0x5cc509c7932f960f73bcbda817aaa52887aa8100
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:
frog

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*

Website  : https://frogcoin.online/
Telegram : https://t.me/Frog_eth721

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.22;

//GAS OPTIMIZED ERROR MESSAGES
error ERC20InvalidSender(address sender);
error ERC20InvalidReceiver(address receiver);
error ERC20InvalidApprover(address approver);
error ERC20InvalidSpender(address spender);
error ERC20TransferFailed();
error ERC20ZeroTransfer();
error PaymentFailed();


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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, 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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

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

interface IDexSwapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract frog is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private _name = "frog";
    string private _symbol = "frog";
    uint8 private _decimals = 9; 

    uint256 public buyTax;
    uint256 public sellTax;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWlAddress;

    uint256 private _totalSupply = 1_000_000_000 * 10**_decimals;

    uint256 public _maxTxAmount =  _totalSupply.mul(1).div(100);     
    uint256 public _walletMax = _totalSupply.mul(1).div(100);        

    uint256 public swapThreshold = _totalSupply.mul(1).div(100);

    address public marketingWallet;

    bool public swapEnabled = true;
    bool public swapbylimit = true;
    bool public EnableTxLimit = true;
    bool public EnableWalletLimit = true;

    IDexSwapRouter public dexRouter;
    address public dexPair;

    bool public tradingEnable; 
    bool public transferSniperProtection;

    bool inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    constructor() {

        marketingWallet = msg.sender;

        IDexSwapRouter _dexRouter = IDexSwapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        dexPair = IDexSwapFactory(_dexRouter.factory())
            .createPair(address(this), _dexRouter.WETH());

        dexRouter = _dexRouter;
        
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[address(0xdead)] = true;
        isWalletLimitExempt[address(dexPair)] = true;

        isWlAddress[address(msg.sender)] = true;
        isWlAddress[address(this)] = true;
        
        isTxLimitExempt[address(0xdead)] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(dexPair)] = true;

        buyTax = 30;
        sellTax = 30;
        transferSniperProtection = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    // BoredFrogsERC-721

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

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

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

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

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

    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 _approve(address owner, address spender, uint256 amount) private {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }

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

     //to recieve ETH from Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, 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: Exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        if (sender == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (recipient == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        if(amount == 0) {
            revert ERC20ZeroTransfer();
        }
    
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        else {

            if (!isWlAddress[sender] && !isWlAddress[recipient]) {
                if(!tradingEnable) {
                    revert ERC20TransferFailed();
                }
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (
                overMinimumTokenBalance && 
                !inSwap && 
                !isMarketPair[sender] && 
                swapEnabled &&
                !isExcludedFromFee[sender] &&
                !isExcludedFromFee[recipient]
                ) {
                swapBack(contractTokenBalance);
            }

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTxLimit) {
                require(amount <= _maxTxAmount, "Exceeds maxTxAmount");
            } 
            
            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldNotTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            if(EnableWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Exceeds Wallet");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;

        }

    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function shouldNotTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }


    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(isMarketPair[sender]) { 
                feeAmount = amount.mul(buyTax).div(100);
            } 
            else if(isMarketPair[recipient]) { 
                feeAmount = amount.mul(sellTax).div(100);
            }
            else if (transferSniperProtection) {
                feeAmount = amount.mul(99).div(100);
            }

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }


    function swapBack(uint contractBalance) internal swapping {

        if(swapbylimit) contractBalance = swapThreshold;

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractBalance);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        if(amountReceived > 0)
            payable(marketingWallet).transfer(amountReceived);

    }

    function enableTrading() external onlyOwner {
        require(!tradingEnable, "Trade Enabled!");

        tradingEnable = true;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        _approve(address(this), address(dexRouter), tokenAmount);

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function rescueFunds() external { 
        require(msg.sender == marketingWallet,"Unauthorized");
        (bool os,) = payable(marketingWallet).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    function rescueTokens(address _token,uint _amount) external {
        require(msg.sender == marketingWallet,"Unauthorized");
        (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)',  marketingWallet, _amount));
        require(success, 'Token payment failed');
    }

    function setBuyFee(uint _buySide, uint _sellSide) external onlyOwner {    
        buyTax = _buySide;
        sellTax = _sellSide;
    }

    function removeLimits() external onlyOwner {
        EnableTxLimit = false;
        EnableWalletLimit =  false;
    }

    function transferProtection(bool _status) external onlyOwner {
        transferSniperProtection = _status;
    }

    function updateSetting(address[] calldata _adr, bool _status) external onlyOwner {
        for(uint i = 0; i < _adr.length; i++){
            isWlAddress[_adr[i]] = _status;
        }
    }

    function excludeFromFee(address _adr,bool _status) external onlyOwner {
        isExcludedFromFee[_adr] = _status;
    }

    function excludeWalletLimit(address _adr,bool _status) external onlyOwner {
        isWalletLimitExempt[_adr] = _status;
    }

    function excludeTxLimit(address _adr,bool _status) external onlyOwner {
        isTxLimitExempt[_adr] = _status;
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        _walletMax = newLimit;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        _maxTxAmount = newLimit;
    }
    
    function setMarketingWallet(address _newWallet) external onlyOwner {
        marketingWallet = _newWallet;
    }

    function setSwapBackSettings(uint _threshold, bool _enabled, bool _limited)
        external
        onlyOwner
    {
        swapEnabled = _enabled;
        swapbylimit = _limited;
        swapThreshold = _threshold;
    }

    // BoredFrogsERC-721

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"ERC20TransferFailed","type":"error"},{"inputs":[],"name":"ERC20ZeroTransfer","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","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":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWlAddress","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buySide","type":"uint256"},{"internalType":"uint256","name":"_sellSide","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"},{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_limited","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapbylimit","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":[],"name":"tradingEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"transferProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferSniperProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_adr","type":"address[]"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateSetting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600460809081526366726f6760e01b60a05260019062000025908262000614565b5060408051808201909152600481526366726f6760e01b602082015260029062000050908262000614565b506003805460ff191660099081179091556200006e90600a620007ed565b6200007e90633b9aca00620007fd565b600d8190556200009f906064906200009890600162000411565b90620004a4565b600e55600d54620000ba906064906200009890600162000411565b600f55600d54620000d5906064906200009890600162000411565b6010556011805463ffffffff60a01b1916630101010160a01b179055348015620000fd575f80fd5b506200010933620004ed565b601180546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a0155916004808201926020929091908290030181865afa1580156200016d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000193919062000817565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000205919062000817565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000250573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000276919062000817565b601380546001600160a01b03199081166001600160a01b0393841617825560128054909116848416179055305f818152600860209081526040808320805460ff199081166001908117909255338086528386208054831684179055600a8552838620805483168417905586865283862080548316841790557f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb80548316841790558754891686528386208054831684179055808652600c855283862080548316841790558686528386208054831684179055600b85527f44433eeeda1d04bdae79f62169cdb2ab0a6af287fa15706d3fafdbac5fac34158054831684179055808652838620805483168417905595855282852080548216831790558654909716845260098352818420805490971617909555601e60048190556005558354600160a81b60ff60a81b1990911617909355600d54828252600684528482208190559351938452909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620008ad565b5f825f036200042257505f6200049e565b5f6200042f8385620007fd565b9050826200043e85836200083f565b146200049b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6200049b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200053c60201b60201c565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f81836200055f5760405162461bcd60e51b81526004016200049291906200085f565b505f6200056d84866200083f565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200059f57607f821691505b602082108103620005be57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200060f57805f5260205f20601f840160051c81016020851015620005eb5750805b601f840160051c820191505b818110156200060c575f8155600101620005f7565b50505b505050565b81516001600160401b0381111562000630576200063062000576565b62000648816200064184546200058a565b84620005c4565b602080601f8311600181146200067e575f8415620006665750858301515b5f19600386901b1c1916600185901b178555620006d8565b5f85815260208120601f198616915b82811015620006ae578886015182559484019460019091019084016200068d565b5085821015620006cc57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200073457815f1904821115620007185762000718620006e0565b808516156200072657918102915b93841c9390800290620006f9565b509250929050565b5f826200074c575060016200049e565b816200075a57505f6200049e565b81600181146200077357600281146200077e576200079e565b60019150506200049e565b60ff841115620007925762000792620006e0565b50506001821b6200049e565b5060208310610133831016604e8410600b8410161715620007c3575081810a6200049e565b620007cf8383620006f4565b805f1904821115620007e557620007e5620006e0565b029392505050565b5f6200049b60ff8416836200073c565b80820281158282048414176200049e576200049e620006e0565b5f6020828403121562000828575f80fd5b81516001600160a01b03811681146200049b575f80fd5b5f826200085a57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602080835283518060208501525f5b818110156200088d578581018301518582016040015282016200086f565b505f604082860101526040601f19601f8301168501019250505092915050565b61205a80620008bb5f395ff3fe60806040526004361061026d575f3560e01c8063751039fc1161014a578063ae85ade6116100be578063e6b2603b11610078578063e6b2603b1461078f578063e9fd3394146107a3578063ea1ce5a8146107c3578063f242ab41146107e3578063f2fde38b14610802578063fb0ecfa414610821575f80fd5b8063ae85ade6146106ab578063b94b0aef146106ca578063c867d60b146106e9578063cc1776d314610717578063dd62ed3e1461072c578063df8408fe14610770575f80fd5b80638b42507f1161010f5780638b42507f146105ef5780638da5cb5b1461061d57806395d89b411461063957806395fc8fdf1461064d5780639a2129431461066c578063a9059cbb1461068c575f80fd5b8063751039fc1461057e57806375f0a874146105925780637d1db4a5146105b1578063807c2d9c146105c65780638a8c523c146105db575f80fd5b80635342acb4116101e15780635e42358c116101a65780635e42358c146104b8578063651a8987146104d85780636ddd1713146104f757806370a0823114610517578063715018a61461054b578063728d41c91461055f575f80fd5b80635342acb4146103ff578063573761981461042d5780635c85974f1461044c5780635d098b381461046b5780635da0a4671461048a575f80fd5b806318160ddd1161023257806318160ddd14610347578063230358521461035b57806323b872dd1461037c578063313ce5671461039b5780633ecad271146103bc5780634f7041a5146103ea575f80fd5b80630445b6671461027857806306fdde03146102a05780630758d924146102c1578063095ea7b3146102f85780631693e8d414610327575f80fd5b3661027457005b5f80fd5b348015610283575f80fd5b5061028d60105481565b6040519081526020015b60405180910390f35b3480156102ab575f80fd5b506102b4610840565b6040516102979190611c1b565b3480156102cc575f80fd5b506012546102e0906001600160a01b031681565b6040516001600160a01b039091168152602001610297565b348015610303575f80fd5b50610317610312366004611c61565b6108d0565b6040519015158152602001610297565b348015610332575f80fd5b5060135461031790600160a01b900460ff1681565b348015610352575f80fd5b50600d5461028d565b348015610366575f80fd5b5061037a610375366004611c9f565b6108e6565b005b348015610387575f80fd5b50610317610396366004611cb8565b610936565b3480156103a6575f80fd5b5060035460405160ff9091168152602001610297565b3480156103c7575f80fd5b506103176103d6366004611cf6565b60096020525f908152604090205460ff1681565b3480156103f5575f80fd5b5061028d60045481565b34801561040a575f80fd5b50610317610419366004611cf6565b60086020525f908152604090205460ff1681565b348015610438575f80fd5b5061037a610447366004611c61565b6109dd565b348015610457575f80fd5b5061037a610466366004611d11565b610b0b565b348015610476575f80fd5b5061037a610485366004611cf6565b610b39565b348015610495575f80fd5b506103176104a4366004611cf6565b600c6020525f908152604090205460ff1681565b3480156104c3575f80fd5b5060115461031790600160b01b900460ff1681565b3480156104e3575f80fd5b5061037a6104f2366004611d28565b610b84565b348015610502575f80fd5b5060115461031790600160a01b900460ff1681565b348015610522575f80fd5b5061028d610531366004611cf6565b6001600160a01b03165f9081526006602052604090205490565b348015610556575f80fd5b5061037a610bd7565b34801561056a575f80fd5b5061037a610579366004611d11565b610c0b565b348015610589575f80fd5b5061037a610c39565b34801561059d575f80fd5b506011546102e0906001600160a01b031681565b3480156105bc575f80fd5b5061028d600e5481565b3480156105d1575f80fd5b5061028d600f5481565b3480156105e6575f80fd5b5061037a610c72565b3480156105fa575f80fd5b50610317610609366004611cf6565b600b6020525f908152604090205460ff1681565b348015610628575f80fd5b505f546001600160a01b03166102e0565b348015610644575f80fd5b506102b4610cfb565b348015610658575f80fd5b5061037a610667366004611d5b565b610d0a565b348015610677575f80fd5b5060115461031790600160b81b900460ff1681565b348015610697575f80fd5b506103176106a6366004611c61565b610d9d565b3480156106b6575f80fd5b5061037a6106c5366004611d28565b610da9565b3480156106d5575f80fd5b5061037a6106e4366004611dd8565b610dfc565b3480156106f4575f80fd5b50610317610703366004611cf6565b600a6020525f908152604090205460ff1681565b348015610722575f80fd5b5061028d60055481565b348015610737575f80fd5b5061028d610746366004611e08565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b34801561077b575f80fd5b5061037a61078a366004611d28565b610e5c565b34801561079a575f80fd5b5061037a610eaf565b3480156107ae575f80fd5b5060115461031790600160a81b900460ff1681565b3480156107ce575f80fd5b5060135461031790600160a81b900460ff1681565b3480156107ee575f80fd5b506013546102e0906001600160a01b031681565b34801561080d575f80fd5b5061037a61081c366004611cf6565b610f92565b34801561082c575f80fd5b5061037a61083b366004611e3f565b611029565b60606001805461084f90611e5f565b80601f016020809104026020016040519081016040528092919081815260200182805461087b90611e5f565b80156108c65780601f1061089d576101008083540402835291602001916108c6565b820191905f5260205f20905b8154815290600101906020018083116108a957829003601f168201915b5050505050905090565b5f6108dc33848461105d565b5060015b92915050565b5f546001600160a01b031633146109185760405162461bcd60e51b815260040161090f90611e97565b60405180910390fd5b60138054911515600160a81b0260ff60a81b19909216919091179055565b5f61094284848461110f565b506109d284336109cd856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e6365000000000000000081525060075f8b6001600160a01b03166001600160a01b031681526020019081526020015f205f6109ad3390565b6001600160a01b0316815260208101919091526040015f2054919061152b565b61105d565b5060015b9392505050565b6011546001600160a01b03163314610a265760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b604482015260640161090f565b6011546040516001600160a01b039182166024820152604481018390525f9184169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b17905251610a809190611ecc565b5f604051808303815f865af19150503d805f8114610ab9576040519150601f19603f3d011682016040523d82523d5f602084013e610abe565b606091505b5050905080610b065760405162461bcd60e51b8152602060048201526014602482015273151bdad95b881c185e5b595b9d0819985a5b195960621b604482015260640161090f565b505050565b5f546001600160a01b03163314610b345760405162461bcd60e51b815260040161090f90611e97565b600e55565b5f546001600160a01b03163314610b625760405162461bcd60e51b815260040161090f90611e97565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610bad5760405162461bcd60e51b815260040161090f90611e97565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610c005760405162461bcd60e51b815260040161090f90611e97565b610c095f611563565b565b5f546001600160a01b03163314610c345760405162461bcd60e51b815260040161090f90611e97565b600f55565b5f546001600160a01b03163314610c625760405162461bcd60e51b815260040161090f90611e97565b6011805461ffff60b01b19169055565b5f546001600160a01b03163314610c9b5760405162461bcd60e51b815260040161090f90611e97565b601354600160a01b900460ff1615610ce65760405162461bcd60e51b815260206004820152600e60248201526d547261646520456e61626c65642160901b604482015260640161090f565b6013805460ff60a01b1916600160a01b179055565b60606002805461084f90611e5f565b5f546001600160a01b03163314610d335760405162461bcd60e51b815260040161090f90611e97565b5f5b82811015610d975781600c5f868685818110610d5357610d53611ee7565b9050602002016020810190610d689190611cf6565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610d35565b50505050565b5f6109d233848461110f565b5f546001600160a01b03163314610dd25760405162461bcd60e51b815260040161090f90611e97565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610e255760405162461bcd60e51b815260040161090f90611e97565b6011805461ffff60a01b1916600160a01b9315159390930260ff60a81b191692909217600160a81b91151591909102179055601055565b5f546001600160a01b03163314610e855760405162461bcd60e51b815260040161090f90611e97565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b6011546001600160a01b03163314610ef85760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b604482015260640161090f565b6011546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610f42576040519150601f19603f3d011682016040523d82523d5f602084013e610f47565b606091505b5050905080610f8f5760405162461bcd60e51b81526020600482015260146024820152735472616e73616374696f6e204661696c6564212160601b604482015260640161090f565b50565b5f546001600160a01b03163314610fbb5760405162461bcd60e51b815260040161090f90611e97565b6001600160a01b0381166110205760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161090f565b610f8f81611563565b5f546001600160a01b031633146110525760405162461bcd60e51b815260040161090f90611e97565b600491909155600555565b6001600160a01b0383166110865760405163e602df0560e01b81525f600482015260240161090f565b6001600160a01b0382166110af57604051634a1406b160e11b81525f600482015260240161090f565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b03841661113957604051634b637e8f60e11b81525f600482015260240161090f565b6001600160a01b0383166111625760405163ec442f0560e01b81525f600482015260240161090f565b815f03611182576040516367c8957760e01b815260040160405180910390fd5b601354600160b01b900460ff16156111a65761119f8484846115b2565b90506109d6565b6001600160a01b0384165f908152600c602052604090205460ff161580156111e657506001600160a01b0383165f908152600c602052604090205460ff16155b1561121557601354600160a01b900460ff1661121557604051633c9fd93960e21b815260040160405180910390fd5b305f90815260066020526040902054601054811080159081906112425750601354600160b01b900460ff16155b801561126657506001600160a01b0386165f9081526009602052604090205460ff16155b801561127b5750601154600160a01b900460ff165b801561129f57506001600160a01b0386165f9081526008602052604090205460ff16155b80156112c357506001600160a01b0385165f9081526008602052604090205460ff16155b156112d1576112d182611695565b6001600160a01b0386165f908152600b602052604090205460ff1615801561131157506001600160a01b0385165f908152600b602052604090205460ff16155b80156113265750601154600160b01b900460ff165b1561137357600e548411156113735760405162461bcd60e51b8152602060048201526013602482015272115e18d959591cc81b585e151e105b5bdd5b9d606a1b604482015260640161090f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f908152600690915291909120546113c491869061152b565b6001600160a01b0387165f908152600660205260408120919091556113e98787611727565b6113fd576113f88787876117c1565b6113ff565b845b601154909150600160b81b900460ff16801561143357506001600160a01b0386165f908152600a602052604090205460ff16155b156114a257600f546114638261145d896001600160a01b03165f9081526006602052604090205490565b906118eb565b11156114a25760405162461bcd60e51b815260206004820152600e60248201526d115e18d959591cc815d85b1b195d60921b604482015260640161090f565b6001600160a01b0386165f908152600660205260409020546114c490826118eb565b6001600160a01b038088165f8181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115179085815260200190565b60405180910390a3600193505050506109d6565b5f818484111561154e5760405162461bcd60e51b815260040161090f9190611c1b565b505f61155a8486611f0f565b95945050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260069091529182205461160291849061152b565b6001600160a01b038086165f90815260066020526040808220939093559085168152205461163090836118eb565b6001600160a01b038085165f8181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116839086815260200190565b60405180910390a35060019392505050565b6013805460ff60b01b1916600160b01b179055601154600160a81b900460ff16156116bf57506010545b476116c982611949565b5f6116d44783611ad2565b90508015611715576011546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611713573d5f803e3d5ffd5b505b50506013805460ff60b01b1916905550565b6001600160a01b0382165f9081526008602052604081205460ff168061176457506001600160a01b0382165f9081526008602052604090205460ff165b15611771575060016108e0565b6001600160a01b0383165f9081526009602052604090205460ff16806117ae57506001600160a01b0382165f9081526009602052604090205460ff165b156117ba57505f6108e0565b505f6108e0565b6001600160a01b0383165f90815260096020526040812054819060ff161561180a5761180360646117fd60045486611b1390919063ffffffff16565b90611b91565b9050611869565b6001600160a01b0384165f9081526009602052604090205460ff16156118445761180360646117fd60055486611b1390919063ffffffff16565b601354600160a81b900460ff16156118695761186660646117fd856063611b13565b90505b80156118e157305f9081526006602052604090205461188890826118eb565b305f81815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118d89085815260200190565b60405180910390a35b61155a8382611ad2565b5f806118f78385611f22565b9050838110156109d65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161090f565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061197c5761197c611ee7565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119f79190611f35565b81600181518110611a0a57611a0a611ee7565b6001600160a01b039283166020918202929092010152601254611a30913091168461105d565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a689085905f90869030904290600401611f93565b5f604051808303815f87803b158015611a7f575f80fd5b505af1158015611a91573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611ac6929190611fce565b60405180910390a15050565b5f6109d683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061152b565b5f825f03611b2257505f6108e0565b5f611b2d8385611fee565b905082611b3a8583612005565b146109d65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161090f565b5f6109d683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183611bed5760405162461bcd60e51b815260040161090f9190611c1b565b505f61155a8486612005565b5f5b83811015611c13578181015183820152602001611bfb565b50505f910152565b602081525f8251806020840152611c39816040850160208701611bf9565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610f8f575f80fd5b5f8060408385031215611c72575f80fd5b8235611c7d81611c4d565b946020939093013593505050565b80358015158114611c9a575f80fd5b919050565b5f60208284031215611caf575f80fd5b6109d682611c8b565b5f805f60608486031215611cca575f80fd5b8335611cd581611c4d565b92506020840135611ce581611c4d565b929592945050506040919091013590565b5f60208284031215611d06575f80fd5b81356109d681611c4d565b5f60208284031215611d21575f80fd5b5035919050565b5f8060408385031215611d39575f80fd5b8235611d4481611c4d565b9150611d5260208401611c8b565b90509250929050565b5f805f60408486031215611d6d575f80fd5b833567ffffffffffffffff80821115611d84575f80fd5b818601915086601f830112611d97575f80fd5b813581811115611da5575f80fd5b8760208260051b8501011115611db9575f80fd5b602092830195509350611dcf9186019050611c8b565b90509250925092565b5f805f60608486031215611dea575f80fd5b83359250611dfa60208501611c8b565b9150611dcf60408501611c8b565b5f8060408385031215611e19575f80fd5b8235611e2481611c4d565b91506020830135611e3481611c4d565b809150509250929050565b5f8060408385031215611e50575f80fd5b50508035926020909101359150565b600181811c90821680611e7357607f821691505b602082108103611e9157634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f8251611edd818460208701611bf9565b9190910192915050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156108e0576108e0611efb565b808201808211156108e0576108e0611efb565b5f60208284031215611f45575f80fd5b81516109d681611c4d565b5f815180845260208085019450602084015f5b83811015611f885781516001600160a01b031687529582019590820190600101611f63565b509495945050505050565b85815284602082015260a060408201525f611fb160a0830186611f50565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f611fe66040830184611f50565b949350505050565b80820281158282048414176108e0576108e0611efb565b5f8261201f57634e487b7160e01b5f52601260045260245ffd5b50049056fea264697066735822122019c9c1422d6f4f18a15962c551e35add6d766cba15871376ceed827363a9a75564736f6c63430008170033

Deployed Bytecode

0x60806040526004361061026d575f3560e01c8063751039fc1161014a578063ae85ade6116100be578063e6b2603b11610078578063e6b2603b1461078f578063e9fd3394146107a3578063ea1ce5a8146107c3578063f242ab41146107e3578063f2fde38b14610802578063fb0ecfa414610821575f80fd5b8063ae85ade6146106ab578063b94b0aef146106ca578063c867d60b146106e9578063cc1776d314610717578063dd62ed3e1461072c578063df8408fe14610770575f80fd5b80638b42507f1161010f5780638b42507f146105ef5780638da5cb5b1461061d57806395d89b411461063957806395fc8fdf1461064d5780639a2129431461066c578063a9059cbb1461068c575f80fd5b8063751039fc1461057e57806375f0a874146105925780637d1db4a5146105b1578063807c2d9c146105c65780638a8c523c146105db575f80fd5b80635342acb4116101e15780635e42358c116101a65780635e42358c146104b8578063651a8987146104d85780636ddd1713146104f757806370a0823114610517578063715018a61461054b578063728d41c91461055f575f80fd5b80635342acb4146103ff578063573761981461042d5780635c85974f1461044c5780635d098b381461046b5780635da0a4671461048a575f80fd5b806318160ddd1161023257806318160ddd14610347578063230358521461035b57806323b872dd1461037c578063313ce5671461039b5780633ecad271146103bc5780634f7041a5146103ea575f80fd5b80630445b6671461027857806306fdde03146102a05780630758d924146102c1578063095ea7b3146102f85780631693e8d414610327575f80fd5b3661027457005b5f80fd5b348015610283575f80fd5b5061028d60105481565b6040519081526020015b60405180910390f35b3480156102ab575f80fd5b506102b4610840565b6040516102979190611c1b565b3480156102cc575f80fd5b506012546102e0906001600160a01b031681565b6040516001600160a01b039091168152602001610297565b348015610303575f80fd5b50610317610312366004611c61565b6108d0565b6040519015158152602001610297565b348015610332575f80fd5b5060135461031790600160a01b900460ff1681565b348015610352575f80fd5b50600d5461028d565b348015610366575f80fd5b5061037a610375366004611c9f565b6108e6565b005b348015610387575f80fd5b50610317610396366004611cb8565b610936565b3480156103a6575f80fd5b5060035460405160ff9091168152602001610297565b3480156103c7575f80fd5b506103176103d6366004611cf6565b60096020525f908152604090205460ff1681565b3480156103f5575f80fd5b5061028d60045481565b34801561040a575f80fd5b50610317610419366004611cf6565b60086020525f908152604090205460ff1681565b348015610438575f80fd5b5061037a610447366004611c61565b6109dd565b348015610457575f80fd5b5061037a610466366004611d11565b610b0b565b348015610476575f80fd5b5061037a610485366004611cf6565b610b39565b348015610495575f80fd5b506103176104a4366004611cf6565b600c6020525f908152604090205460ff1681565b3480156104c3575f80fd5b5060115461031790600160b01b900460ff1681565b3480156104e3575f80fd5b5061037a6104f2366004611d28565b610b84565b348015610502575f80fd5b5060115461031790600160a01b900460ff1681565b348015610522575f80fd5b5061028d610531366004611cf6565b6001600160a01b03165f9081526006602052604090205490565b348015610556575f80fd5b5061037a610bd7565b34801561056a575f80fd5b5061037a610579366004611d11565b610c0b565b348015610589575f80fd5b5061037a610c39565b34801561059d575f80fd5b506011546102e0906001600160a01b031681565b3480156105bc575f80fd5b5061028d600e5481565b3480156105d1575f80fd5b5061028d600f5481565b3480156105e6575f80fd5b5061037a610c72565b3480156105fa575f80fd5b50610317610609366004611cf6565b600b6020525f908152604090205460ff1681565b348015610628575f80fd5b505f546001600160a01b03166102e0565b348015610644575f80fd5b506102b4610cfb565b348015610658575f80fd5b5061037a610667366004611d5b565b610d0a565b348015610677575f80fd5b5060115461031790600160b81b900460ff1681565b348015610697575f80fd5b506103176106a6366004611c61565b610d9d565b3480156106b6575f80fd5b5061037a6106c5366004611d28565b610da9565b3480156106d5575f80fd5b5061037a6106e4366004611dd8565b610dfc565b3480156106f4575f80fd5b50610317610703366004611cf6565b600a6020525f908152604090205460ff1681565b348015610722575f80fd5b5061028d60055481565b348015610737575f80fd5b5061028d610746366004611e08565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b34801561077b575f80fd5b5061037a61078a366004611d28565b610e5c565b34801561079a575f80fd5b5061037a610eaf565b3480156107ae575f80fd5b5060115461031790600160a81b900460ff1681565b3480156107ce575f80fd5b5060135461031790600160a81b900460ff1681565b3480156107ee575f80fd5b506013546102e0906001600160a01b031681565b34801561080d575f80fd5b5061037a61081c366004611cf6565b610f92565b34801561082c575f80fd5b5061037a61083b366004611e3f565b611029565b60606001805461084f90611e5f565b80601f016020809104026020016040519081016040528092919081815260200182805461087b90611e5f565b80156108c65780601f1061089d576101008083540402835291602001916108c6565b820191905f5260205f20905b8154815290600101906020018083116108a957829003601f168201915b5050505050905090565b5f6108dc33848461105d565b5060015b92915050565b5f546001600160a01b031633146109185760405162461bcd60e51b815260040161090f90611e97565b60405180910390fd5b60138054911515600160a81b0260ff60a81b19909216919091179055565b5f61094284848461110f565b506109d284336109cd856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e6365000000000000000081525060075f8b6001600160a01b03166001600160a01b031681526020019081526020015f205f6109ad3390565b6001600160a01b0316815260208101919091526040015f2054919061152b565b61105d565b5060015b9392505050565b6011546001600160a01b03163314610a265760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b604482015260640161090f565b6011546040516001600160a01b039182166024820152604481018390525f9184169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b17905251610a809190611ecc565b5f604051808303815f865af19150503d805f8114610ab9576040519150601f19603f3d011682016040523d82523d5f602084013e610abe565b606091505b5050905080610b065760405162461bcd60e51b8152602060048201526014602482015273151bdad95b881c185e5b595b9d0819985a5b195960621b604482015260640161090f565b505050565b5f546001600160a01b03163314610b345760405162461bcd60e51b815260040161090f90611e97565b600e55565b5f546001600160a01b03163314610b625760405162461bcd60e51b815260040161090f90611e97565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610bad5760405162461bcd60e51b815260040161090f90611e97565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610c005760405162461bcd60e51b815260040161090f90611e97565b610c095f611563565b565b5f546001600160a01b03163314610c345760405162461bcd60e51b815260040161090f90611e97565b600f55565b5f546001600160a01b03163314610c625760405162461bcd60e51b815260040161090f90611e97565b6011805461ffff60b01b19169055565b5f546001600160a01b03163314610c9b5760405162461bcd60e51b815260040161090f90611e97565b601354600160a01b900460ff1615610ce65760405162461bcd60e51b815260206004820152600e60248201526d547261646520456e61626c65642160901b604482015260640161090f565b6013805460ff60a01b1916600160a01b179055565b60606002805461084f90611e5f565b5f546001600160a01b03163314610d335760405162461bcd60e51b815260040161090f90611e97565b5f5b82811015610d975781600c5f868685818110610d5357610d53611ee7565b9050602002016020810190610d689190611cf6565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610d35565b50505050565b5f6109d233848461110f565b5f546001600160a01b03163314610dd25760405162461bcd60e51b815260040161090f90611e97565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610e255760405162461bcd60e51b815260040161090f90611e97565b6011805461ffff60a01b1916600160a01b9315159390930260ff60a81b191692909217600160a81b91151591909102179055601055565b5f546001600160a01b03163314610e855760405162461bcd60e51b815260040161090f90611e97565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b6011546001600160a01b03163314610ef85760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b604482015260640161090f565b6011546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610f42576040519150601f19603f3d011682016040523d82523d5f602084013e610f47565b606091505b5050905080610f8f5760405162461bcd60e51b81526020600482015260146024820152735472616e73616374696f6e204661696c6564212160601b604482015260640161090f565b50565b5f546001600160a01b03163314610fbb5760405162461bcd60e51b815260040161090f90611e97565b6001600160a01b0381166110205760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161090f565b610f8f81611563565b5f546001600160a01b031633146110525760405162461bcd60e51b815260040161090f90611e97565b600491909155600555565b6001600160a01b0383166110865760405163e602df0560e01b81525f600482015260240161090f565b6001600160a01b0382166110af57604051634a1406b160e11b81525f600482015260240161090f565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b03841661113957604051634b637e8f60e11b81525f600482015260240161090f565b6001600160a01b0383166111625760405163ec442f0560e01b81525f600482015260240161090f565b815f03611182576040516367c8957760e01b815260040160405180910390fd5b601354600160b01b900460ff16156111a65761119f8484846115b2565b90506109d6565b6001600160a01b0384165f908152600c602052604090205460ff161580156111e657506001600160a01b0383165f908152600c602052604090205460ff16155b1561121557601354600160a01b900460ff1661121557604051633c9fd93960e21b815260040160405180910390fd5b305f90815260066020526040902054601054811080159081906112425750601354600160b01b900460ff16155b801561126657506001600160a01b0386165f9081526009602052604090205460ff16155b801561127b5750601154600160a01b900460ff165b801561129f57506001600160a01b0386165f9081526008602052604090205460ff16155b80156112c357506001600160a01b0385165f9081526008602052604090205460ff16155b156112d1576112d182611695565b6001600160a01b0386165f908152600b602052604090205460ff1615801561131157506001600160a01b0385165f908152600b602052604090205460ff16155b80156113265750601154600160b01b900460ff165b1561137357600e548411156113735760405162461bcd60e51b8152602060048201526013602482015272115e18d959591cc81b585e151e105b5bdd5b9d606a1b604482015260640161090f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f908152600690915291909120546113c491869061152b565b6001600160a01b0387165f908152600660205260408120919091556113e98787611727565b6113fd576113f88787876117c1565b6113ff565b845b601154909150600160b81b900460ff16801561143357506001600160a01b0386165f908152600a602052604090205460ff16155b156114a257600f546114638261145d896001600160a01b03165f9081526006602052604090205490565b906118eb565b11156114a25760405162461bcd60e51b815260206004820152600e60248201526d115e18d959591cc815d85b1b195d60921b604482015260640161090f565b6001600160a01b0386165f908152600660205260409020546114c490826118eb565b6001600160a01b038088165f8181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115179085815260200190565b60405180910390a3600193505050506109d6565b5f818484111561154e5760405162461bcd60e51b815260040161090f9190611c1b565b505f61155a8486611f0f565b95945050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260069091529182205461160291849061152b565b6001600160a01b038086165f90815260066020526040808220939093559085168152205461163090836118eb565b6001600160a01b038085165f8181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116839086815260200190565b60405180910390a35060019392505050565b6013805460ff60b01b1916600160b01b179055601154600160a81b900460ff16156116bf57506010545b476116c982611949565b5f6116d44783611ad2565b90508015611715576011546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611713573d5f803e3d5ffd5b505b50506013805460ff60b01b1916905550565b6001600160a01b0382165f9081526008602052604081205460ff168061176457506001600160a01b0382165f9081526008602052604090205460ff165b15611771575060016108e0565b6001600160a01b0383165f9081526009602052604090205460ff16806117ae57506001600160a01b0382165f9081526009602052604090205460ff165b156117ba57505f6108e0565b505f6108e0565b6001600160a01b0383165f90815260096020526040812054819060ff161561180a5761180360646117fd60045486611b1390919063ffffffff16565b90611b91565b9050611869565b6001600160a01b0384165f9081526009602052604090205460ff16156118445761180360646117fd60055486611b1390919063ffffffff16565b601354600160a81b900460ff16156118695761186660646117fd856063611b13565b90505b80156118e157305f9081526006602052604090205461188890826118eb565b305f81815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118d89085815260200190565b60405180910390a35b61155a8382611ad2565b5f806118f78385611f22565b9050838110156109d65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161090f565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061197c5761197c611ee7565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119f79190611f35565b81600181518110611a0a57611a0a611ee7565b6001600160a01b039283166020918202929092010152601254611a30913091168461105d565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a689085905f90869030904290600401611f93565b5f604051808303815f87803b158015611a7f575f80fd5b505af1158015611a91573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611ac6929190611fce565b60405180910390a15050565b5f6109d683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061152b565b5f825f03611b2257505f6108e0565b5f611b2d8385611fee565b905082611b3a8583612005565b146109d65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161090f565b5f6109d683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183611bed5760405162461bcd60e51b815260040161090f9190611c1b565b505f61155a8486612005565b5f5b83811015611c13578181015183820152602001611bfb565b50505f910152565b602081525f8251806020840152611c39816040850160208701611bf9565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610f8f575f80fd5b5f8060408385031215611c72575f80fd5b8235611c7d81611c4d565b946020939093013593505050565b80358015158114611c9a575f80fd5b919050565b5f60208284031215611caf575f80fd5b6109d682611c8b565b5f805f60608486031215611cca575f80fd5b8335611cd581611c4d565b92506020840135611ce581611c4d565b929592945050506040919091013590565b5f60208284031215611d06575f80fd5b81356109d681611c4d565b5f60208284031215611d21575f80fd5b5035919050565b5f8060408385031215611d39575f80fd5b8235611d4481611c4d565b9150611d5260208401611c8b565b90509250929050565b5f805f60408486031215611d6d575f80fd5b833567ffffffffffffffff80821115611d84575f80fd5b818601915086601f830112611d97575f80fd5b813581811115611da5575f80fd5b8760208260051b8501011115611db9575f80fd5b602092830195509350611dcf9186019050611c8b565b90509250925092565b5f805f60608486031215611dea575f80fd5b83359250611dfa60208501611c8b565b9150611dcf60408501611c8b565b5f8060408385031215611e19575f80fd5b8235611e2481611c4d565b91506020830135611e3481611c4d565b809150509250929050565b5f8060408385031215611e50575f80fd5b50508035926020909101359150565b600181811c90821680611e7357607f821691505b602082108103611e9157634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f8251611edd818460208701611bf9565b9190910192915050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156108e0576108e0611efb565b808201808211156108e0576108e0611efb565b5f60208284031215611f45575f80fd5b81516109d681611c4d565b5f815180845260208085019450602084015f5b83811015611f885781516001600160a01b031687529582019590820190600101611f63565b509495945050505050565b85815284602082015260a060408201525f611fb160a0830186611f50565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f611fe66040830184611f50565b949350505050565b80820281158282048414176108e0576108e0611efb565b5f8261201f57634e487b7160e01b5f52601260045260245ffd5b50049056fea264697066735822122019c9c1422d6f4f18a15962c551e35add6d766cba15871376ceed827363a9a75564736f6c63430008170033

Deployed Bytecode Sourcemap

4671:11362:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5543:59;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5543:59:0;;;;;;;;7360:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5808:31::-;;;;;;;;;;-1:-1:-1;5808:31:0;;;;-1:-1:-1;;;;;5808:31:0;;;;;;-1:-1:-1;;;;;1038:32:1;;;1020:51;;1008:2;993:18;5808:31:0;852:225:1;8027:161:0;;;;;;;;;;-1:-1:-1;8027:161:0;;;;;:::i;:::-;;:::i;:::-;;;1703:14:1;;1696:22;1678:41;;1666:2;1651:18;8027:161:0;1538:187:1;5877:25:0;;;;;;;;;;-1:-1:-1;5877:25:0;;;;-1:-1:-1;;;5877:25:0;;;;;;7637:100;;;;;;;;;;-1:-1:-1;7717:12:0;;7637:100;;14705:114;;;;;;;;;;-1:-1:-1;14705:114:0;;;;;:::i;:::-;;:::i;:::-;;8846:297;;;;;;;;;;-1:-1:-1;8846:297:0;;;;;:::i;:::-;;:::i;7546:83::-;;;;;;;;;;-1:-1:-1;7612:9:0;;7546:83;;7612:9;;;;2683:36:1;;2671:2;2656:18;7546:83:0;2541:184:1;5111:45:0;;;;;;;;;;-1:-1:-1;5111:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4868:21;;;;;;;;;;;;;;;;5054:50;;;;;;;;;;-1:-1:-1;5054:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14108:314;;;;;;;;;;-1:-1:-1;14108:314:0;;;;;:::i;:::-;;:::i;15536:101::-;;;;;;;;;;-1:-1:-1;15536:101:0;;;;;:::i;:::-;;:::i;15649:114::-;;;;;;;;;;-1:-1:-1;15649:114:0;;;;;:::i;:::-;;:::i;5277:44::-;;;;;;;;;;-1:-1:-1;5277:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5724:32;;;;;;;;;;-1:-1:-1;5724:32:0;;;;-1:-1:-1;;;5724:32:0;;;;;;15158:128;;;;;;;;;;-1:-1:-1;15158:128:0;;;;;:::i;:::-;;:::i;5650:30::-;;;;;;;;;;-1:-1:-1;5650:30:0;;;;-1:-1:-1;;;5650:30:0;;;;;;7745:123;;;;;;;;;;-1:-1:-1;7745:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;7837:18:0;7811:7;7837:18;;;:9;:18;;;;;;;7745:123;2117:94;;;;;;;;;;;;;:::i;15422:106::-;;;;;;;;;;-1:-1:-1;15422:106:0;;;;;:::i;:::-;;:::i;14577:120::-;;;;;;;;;;;;;:::i;5611:30::-;;;;;;;;;;-1:-1:-1;5611:30:0;;;;-1:-1:-1;;;;;5611:30:0;;;5399:59;;;;;;;;;;;;;;;;5470:56;;;;;;;;;;;;;;;;13062:137;;;;;;;;;;;;;:::i;5222:48::-;;;;;;;;;;-1:-1:-1;5222:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;1808:87;;;;;;;;;;-1:-1:-1;1854:7:0;1881:6;-1:-1:-1;;;;;1881:6:0;1808:87;;7451;;;;;;;;;;;;;:::i;14827:193::-;;;;;;;;;;-1:-1:-1;14827:193:0;;;;;:::i;:::-;;:::i;5763:36::-;;;;;;;;;;-1:-1:-1;5763:36:0;;;;-1:-1:-1;;;5763:36:0;;;;;;8671:167;;;;;;;;;;-1:-1:-1;8671:167:0;;;;;:::i;:::-;;:::i;15294:120::-;;;;;;;;;;-1:-1:-1;15294:120:0;;;;;:::i;:::-;;:::i;15771:229::-;;;;;;;;;;-1:-1:-1;15771:229:0;;;;;:::i;:::-;;:::i;5163:52::-;;;;;;;;;;-1:-1:-1;5163:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4896:22;;;;;;;;;;;;;;;;7876:143;;;;;;;;;;-1:-1:-1;7876:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7984:18:0;;;7957:7;7984:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7876:143;15028:122;;;;;;;;;;-1:-1:-1;15028:122:0;;;;;:::i;:::-;;:::i;13863:237::-;;;;;;;;;;;;;:::i;5687:30::-;;;;;;;;;;-1:-1:-1;5687:30:0;;;;-1:-1:-1;;;5687:30:0;;;;;;5910:36;;;;;;;;;;-1:-1:-1;5910:36:0;;;;-1:-1:-1;;;5910:36:0;;;;;;5846:22;;;;;;;;;;-1:-1:-1;5846:22:0;;;;-1:-1:-1;;;;;5846:22:0;;;2219:229;;;;;;;;;;-1:-1:-1;2219:229:0;;;;;:::i;:::-;;:::i;14430:139::-;;;;;;;;;;-1:-1:-1;14430:139:0;;;;;:::i;:::-;;:::i;7360:83::-;7397:13;7430:5;7423:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7360:83;:::o;8027:161::-;8102:4;8119:39;564:10;8142:7;8151:6;8119:8;:39::i;:::-;-1:-1:-1;8176:4:0;8027:161;;;;;:::o;14705:114::-;1854:7;1881:6;-1:-1:-1;;;;;1881:6:0;564:10;2029:23;2021:68;;;;-1:-1:-1;;;2021:68:0;;;;;;;:::i;:::-;;;;;;;;;14777:24:::1;:34:::0;;;::::1;;-1:-1:-1::0;;;14777:34:0::1;-1:-1:-1::0;;;;14777:34:0;;::::1;::::0;;;::::1;::::0;;14705:114::o;8846:297::-;8944:4;8961:36;8971:6;8979:9;8990:6;8961:9;:36::i;:::-;-1:-1:-1;9008:105:0;9017:6;564:10;9039:73;9077:6;9039:73;;;;;;;;;;;;;;;;;:11;:19;9051:6;-1:-1:-1;;;;;9039:19:0;-1:-1:-1;;;;;9039:19:0;;;;;;;;;;;;:33;9059:12;564:10;;484:98;9059:12;-1:-1:-1;;;;;9039:33:0;;;;;;;;;;;;-1:-1:-1;9039:33:0;;;:73;:37;:73::i;:::-;9008:8;:105::i;:::-;-1:-1:-1;9131:4:0;8846:297;;;;;;:::o;14108:314::-;14201:15;;-1:-1:-1;;;;;14201:15:0;14187:10;:29;14179:53;;;;-1:-1:-1;;;14179:53:0;;6304:2:1;14179:53:0;;;6286:21:1;6343:2;6323:18;;;6316:30;-1:-1:-1;;;6362:18:1;;;6355:42;6414:18;;14179:53:0;6102:336:1;14179:53:0;14337:15;;14283:79;;-1:-1:-1;;;;;14337:15:0;;;14283:79;;;6617:51:1;6684:18;;;6677:34;;;14244:12:0;;14262:20;;;6590:18:1;;14283:79:0;;;-1:-1:-1;;14283:79:0;;;;;;;;;;;;;;-1:-1:-1;;;;;14283:79:0;-1:-1:-1;;;14283:79:0;;;14262:101;;;14283:79;14262:101;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14243:120;;;14382:7;14374:40;;;;-1:-1:-1;;;14374:40:0;;7216:2:1;14374:40:0;;;7198:21:1;7255:2;7235:18;;;7228:30;-1:-1:-1;;;7274:18:1;;;7267:50;7334:18;;14374:40:0;7014:344:1;14374:40:0;14168:254;14108:314;;:::o;15536:101::-;1854:7;1881:6;-1:-1:-1;;;;;1881:6:0;564:10;2029:23;2021:68;;;;-1:-1:-1;;;2021:68:0;;;;;;;:::i;:::-;15606:12:::1;:23:::0;15536:101::o;15649:114::-;1854:7;1881:6;-1:-1:-1;;;;;1881:6:0;564:10;2029:23;2021:68;;;;-1:-1:-1;;;2021:68:0;;;;;;;:::i;:::-;15727:15:::1;:28:::0;;-1:-1:-1;;;;;;15727:28:0::1;-1:-1:-1::0;;;;;15727:28:0;;;::::1;::::0;;;::::1;::::0;;15649:114::o;15158:128::-;1854:7;1881:6;-1:-1:-1;;;;;1881:6:0;564:10;2029:23;2021:68;;;;-1:-1:-1;;;2021:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15243:25:0;;;::::1;;::::0;;;:19:::1;:25;::::0;;;;:35;;-1:-1:-1;;15243:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15158:128::o;2117:94::-;1854:7;1881:6;-1:-1:-1;;;;;1881:6:0;564:10;2029:23;2021:68;;;;-1:-1:-1;;;2021:68:0;;;;;;;:::i;:::-;2182:21:::1;2200:1;2182:9;:21::i;:::-;2117:94::o:0;15422:106::-;1854:7;1881:6;-1:-1:-1;;;;;1881:6:0;564:10;2029:23;2021:68;;;;-1:-1:-1;;;2021:68:0;;;;;;;:::i;:::-;15499:10:::1;:21:::0;15422:106::o;14577:120::-;1854:7;1881:6;-1:-1:-1;;;;;1881:6:0;564:10;2029:23;2021:68;;;;-1:-1:-1;;;2021:68:0;;;;;;;:::i;:::-;14631:13:::1;:21:::0;;-1:-1:-1;;;;14663:26:0;;;14577:120::o;13062:137::-;1854:7;1881:6;-1:-1:-1;;;;;1881:6:0;564:10;2029:23;2021:68;;;;-1:-1:-1;;;2021:68:0;;;;;;;:::i;:::-;13126:13:::1;::::0;-1:-1:-1;;;13126:13:0;::::1;;;13125:14;13117:41;;;::::0;-1:-1:-1;;;13117:41:0;;7565:2:1;13117:41:0::1;::::0;::::1;7547:21:1::0;7604:2;7584:18;;;7577:30;-1:-1:-1;;;7623:18:1;;;7616:44;7677:18;;13117:41:0::1;7363:338:1::0;13117:41:0::1;13171:13;:20:::0;;-1:-1:-1;;;;13171:20:0::1;-1:-1:-1::0;;;13171:20:0::1;::::0;;13062:137::o;7451:87::-;7490:13;7523:7;7516:14;;;;;:::i;14827:193::-;1854:7;1881:6;-1:-1:-1;;;;;1881:6:0;564:10;2029:23;2021:68;;;;-1:-1:-1;;;2021:68:0;;;;;;;:::i;:::-;14923:6:::1;14919:94;14935:15:::0;;::::1;14919:94;;;14994:7;14971:11;:20;14983:4;;14988:1;14983:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14971:20:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14971:20:0;:30;;-1:-1:-1;;14971:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;14952:3:0::1;14919:94;;;;14827:193:::0;;;:::o;8671:167::-;8749:4;8766:42;564:10;8790:9;8801:6;8766:9;:42::i;15294:120::-;1854:7;1881:6;-1:-1:-1;;;;;1881:6:0;564:10;2029:23;2021:68;;;;-1:-1:-1;;;2021:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15375:21:0;;;::::1;;::::0;;;:15:::1;:21;::::0;;;;:31;;-1:-1:-1;;15375:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15294:120::o;15771:229::-;1854:7;1881:6;-1:-1:-1;;;;;1881:6:0;564:10;2029:23;2021:68;;;;-1:-1:-1;;;2021:68:0;;;;;;;:::i;:::-;15900:11:::1;:22:::0;;-1:-1:-1;;;;15933:22:0;-1:-1:-1;;;15900:22:0;::::1;;::::0;;;::::1;-1:-1:-1::0;;;;15933:22:0;;;;;-1:-1:-1;;;15933:22:0;::::1;;::::0;;;::::1;;::::0;;15966:13:::1;:26:::0;15771:229::o;15028:122::-;1854:7;1881:6;-1:-1:-1;;;;;1881:6:0;564:10;2029:23;2021:68;;;;-1:-1:-1;;;2021:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15109:23:0;;;::::1;;::::0;;;:17:::1;:23;::::0;;;;:33;;-1:-1:-1;;15109:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15028:122::o;13863:237::-;13929:15;;-1:-1:-1;;;;;13929:15:0;13915:10;:29;13907:53;;;;-1:-1:-1;;;13907:53:0;;6304:2:1;13907:53:0;;;6286:21:1;6343:2;6323:18;;;6316:30;-1:-1:-1;;;6362:18:1;;;6355:42;6414:18;;13907:53:0;6102:336:1;13907:53:0;13992:15;;13984:63;;13972:7;;-1:-1:-1;;;;;13992:15:0;;14021:21;;13972:7;13984:63;13972:7;13984:63;14021:21;13992:15;13984:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13971:76;;;14066:2;14058:34;;;;-1:-1:-1;;;14058:34:0;;8250:2:1;14058:34:0;;;8232:21:1;8289:2;8269:18;;;8262:30;-1:-1:-1;;;8308:18:1;;;8301:50;8368:18;;14058:34:0;8048:344:1;14058:34:0;13895:205;13863:237::o;2219:229::-;1854:7;1881:6;-1:-1:-1;;;;;1881:6:0;564:10;2029:23;2021:68;;;;-1:-1:-1;;;2021:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2322:22:0;::::1;2300:110;;;::::0;-1:-1:-1;;;2300:110:0;;8599:2:1;2300:110:0::1;::::0;::::1;8581:21:1::0;8638:2;8618:18;;;8611:30;8677:34;8657:18;;;8650:62;-1:-1:-1;;;8728:18:1;;;8721:36;8774:19;;2300:110:0::1;8397:402:1::0;2300:110:0::1;2421:19;2431:8;2421:9;:19::i;14430:139::-:0;1854:7;1881:6;-1:-1:-1;;;;;1881:6:0;564:10;2029:23;2021:68;;;;-1:-1:-1;;;2021:68:0;;;;;;;:::i;:::-;14514:6:::1;:17:::0;;;;14542:7:::1;:19:::0;14430:139::o;8196:382::-;-1:-1:-1;;;;;8285:19:0;;8281:91;;8328:32;;-1:-1:-1;;;8328:32:0;;8357:1;8328:32;;;1020:51:1;993:18;;8328:32:0;852:225:1;8281:91:0;-1:-1:-1;;;;;8386:21:0;;8382:92;;8431:31;;-1:-1:-1;;;8431:31:0;;8459:1;8431:31;;;1020:51:1;993:18;;8431:31:0;852:225:1;8382:92:0;-1:-1:-1;;;;;8486:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8538:32;;160:25:1;;;8538:32:0;;133:18:1;8538:32:0;;;;;;;8196:382;;;:::o;9151:1971::-;9238:4;-1:-1:-1;;;;;9261:20:0;;9257:90;;9305:30;;-1:-1:-1;;;9305:30:0;;9332:1;9305:30;;;1020:51:1;993:18;;9305:30:0;852:225:1;9257:90:0;-1:-1:-1;;;;;9361:23:0;;9357:95;;9408:32;;-1:-1:-1;;;9408:32:0;;9437:1;9408:32;;;1020:51:1;993:18;;9408:32:0;852:225:1;9357:95:0;9465:6;9475:1;9465:11;9462:69;;9500:19;;-1:-1:-1;;;9500:19:0;;;;;;;;;;;9462:69;9551:6;;-1:-1:-1;;;9551:6:0;;;;9547:1566;;;9581:41;9596:6;9604:9;9615:6;9581:14;:41::i;:::-;9574:48;;;;9547:1566;-1:-1:-1;;;;;9671:19:0;;;;;;:11;:19;;;;;;;;9670:20;:47;;;;-1:-1:-1;;;;;;9695:22:0;;;;;;:11;:22;;;;;;;;9694:23;9670:47;9666:177;;;9742:13;;-1:-1:-1;;;9742:13:0;;;;9738:90;;9787:21;;-1:-1:-1;;;9787:21:0;;;;;;;;;;;9738:90;9908:4;9859:28;7837:18;;;:9;:18;;;;;;9984:13;;9960:37;;;;;;;10036:52;;-1:-1:-1;10082:6:0;;-1:-1:-1;;;10082:6:0;;;;10081:7;10036:52;:95;;;;-1:-1:-1;;;;;;10111:20:0;;;;;;:12;:20;;;;;;;;10110:21;10036:95;:128;;;;-1:-1:-1;10153:11:0;;-1:-1:-1;;;10153:11:0;;;;10036:128;:175;;;;-1:-1:-1;;;;;;10186:25:0;;;;;;:17;:25;;;;;;;;10185:26;10036:175;:225;;;;-1:-1:-1;;;;;;10233:28:0;;;;;;:17;:28;;;;;;;;10232:29;10036:225;10014:332;;;10300:30;10309:20;10300:8;:30::i;:::-;-1:-1:-1;;;;;10366:23:0;;;;;;:15;:23;;;;;;;;10365:24;:55;;;;-1:-1:-1;;;;;;10394:26:0;;;;;;:15;:26;;;;;;;;10393:27;10365:55;:72;;;;-1:-1:-1;10424:13:0;;-1:-1:-1;;;10424:13:0;;;;10365:72;10362:166;;;10476:12;;10466:6;:22;;10458:54;;;;-1:-1:-1;;;10458:54:0;;9006:2:1;10458:54:0;;;8988:21:1;9045:2;9025:18;;;9018:30;-1:-1:-1;;;9064:18:1;;;9057:49;9123:18;;10458:54:0;8804:343:1;10458:54:0;10577:53;;;;;;;;;;;-1:-1:-1;;;10577:53:0;;;;;;;;-1:-1:-1;;;;;10577:17:0;;-1:-1:-1;10577:17:0;;;:9;:17;;;;;;;;:53;;10599:6;;10577:21;:53::i;:::-;-1:-1:-1;;;;;10557:17:0;;;;;;:9;:17;;;;;:73;;;;10669:34;10567:6;10693:9;10669:16;:34::i;:::-;:80;;10715:34;10723:6;10731:9;10742:6;10715:7;:34::i;:::-;10669:80;;;10706:6;10669:80;10769:17;;10647:102;;-1:-1:-1;;;;10769:17:0;;;;:52;;;;-1:-1:-1;;;;;;10791:30:0;;;;;;:19;:30;;;;;;;;10790:31;10769:52;10766:169;;;10891:10;;10850:37;10875:11;10850:20;10860:9;-1:-1:-1;;;;;7837:18:0;7811:7;7837:18;;;:9;:18;;;;;;;7745:123;10850:20;:24;;:37::i;:::-;:51;;10842:77;;;;-1:-1:-1;;;10842:77:0;;9354:2:1;10842:77:0;;;9336:21:1;9393:2;9373:18;;;9366:30;-1:-1:-1;;;9412:18:1;;;9405:44;9466:18;;10842:77:0;9152:338:1;10842:77:0;-1:-1:-1;;;;;10974:20:0;;;;;;:9;:20;;;;;;:37;;10999:11;10974:24;:37::i;:::-;-1:-1:-1;;;;;10951:20:0;;;;;;;:9;:20;;;;;;;:60;;;;11033:40;;;;;;;;;;11061:11;160:25:1;;148:2;133:18;;14:177;11033:40:0;;;;;;;;11095:4;11088:11;;;;;;;2995:192;3081:7;3117:12;3109:6;;;;3101:29;;;;-1:-1:-1;;;3101:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3141:9:0;3153:5;3157:1;3153;:5;:::i;:::-;3141:17;2995:192;-1:-1:-1;;;;;2995:192:0:o;2456:173::-;2512:16;2531:6;;-1:-1:-1;;;;;2548:17:0;;;-1:-1:-1;;;;;;2548:17:0;;;;;;2581:40;;2531:6;;;;;;;2581:40;;2512:16;2581:40;2501:128;2456:173;:::o;11130:330::-;11260:53;;;;;;;;;;;-1:-1:-1;;;11260:53:0;;;;;;;;-1:-1:-1;;;;;11260:17:0;;11223:4;11260:17;;;:9;:17;;;;;;;:53;;11282:6;;11260:21;:53::i;:::-;-1:-1:-1;;;;;11240:17:0;;;;;;;:9;:17;;;;;;:73;;;;11347:20;;;;;;;:32;;11372:6;11347:24;:32::i;:::-;-1:-1:-1;;;;;11324:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11395:35;;;;;;;;;;11423:6;160:25:1;;148:2;133:18;;14:177;11395:35:0;;;;;;;;-1:-1:-1;11448:4:0;11130:330;;;;;:::o;12648:406::-;6006:6;:13;;-1:-1:-1;;;;6006:13:0;-1:-1:-1;;;6006:13:0;;;12722:11:::1;::::0;-1:-1:-1;;;12722:11:0;::::1;6006:13:::0;12722:11:::1;12719:47;;;-1:-1:-1::0;12753:13:0::1;::::0;12719:47:::1;12804:21;12836:33;12853:15:::0;12836:16:::1;:33::i;:::-;12880:22;12905:41;:21;12931:14:::0;12905:25:::1;:41::i;:::-;12880:66:::0;-1:-1:-1;12962:18:0;;12959:85:::1;;13003:15;::::0;12995:49:::1;::::0;-1:-1:-1;;;;;13003:15:0;;::::1;::::0;12995:49;::::1;;;::::0;13029:14;;13003:15:::1;12995:49:::0;13003:15;12995:49;13029:14;13003:15;12995:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12959:85;-1:-1:-1::0;;6042:6:0;:14;;-1:-1:-1;;;;6042:14:0;;;-1:-1:-1;12648:406:0:o;11472:369::-;-1:-1:-1;;;;;11576:25:0;;11556:4;11576:25;;;:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;11605:28:0;;;;;;:17;:28;;;;;;;;11576:57;11573:261;;;-1:-1:-1;11657:4:0;11650:11;;11573:261;-1:-1:-1;;;;;11692:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;11716:23:0;;;;;;:12;:23;;;;;;;;11692:47;11688:146;;;-1:-1:-1;11763:5:0;11756:12;;11688:146;-1:-1:-1;11817:5:0;11810:12;;11851:787;-1:-1:-1;;;;;12024:20:0;;11937:7;12024:20;;;:12;:20;;;;;;11937:7;;12024:20;;12021:343;;;12078:27;12101:3;12078:18;12089:6;;12078;:10;;:18;;;;:::i;:::-;:22;;:27::i;:::-;12066:39;;12021:343;;;-1:-1:-1;;;;;12144:23:0;;;;;;:12;:23;;;;;;;;12141:223;;;12201:28;12225:3;12201:19;12212:7;;12201:6;:10;;:19;;;;:::i;12141:223::-;12268:24;;-1:-1:-1;;;12268:24:0;;;;12264:100;;;12325:23;12344:3;12325:14;:6;12336:2;12325:10;:14::i;:23::-;12313:35;;12264:100;12383:13;;12380:185;;12462:4;12444:24;;;;:9;:24;;;;;;:39;;12473:9;12444:28;:39::i;:::-;12435:4;12417:24;;;;:9;:24;;;;;;;:66;;;;12507:42;;-1:-1:-1;;;;;12507:42:0;;;;;;;12539:9;160:25:1;;148:2;133:18;;14:177;12507:42:0;;;;;;;;12380:185;12588:21;:6;12599:9;12588:10;:21::i;2662:181::-;2720:7;;2752:5;2756:1;2752;:5;:::i;:::-;2740:17;;2781:1;2776;:6;;2768:46;;;;-1:-1:-1;;;2768:46:0;;10092:2:1;2768:46:0;;;10074:21:1;10131:2;10111:18;;;10104:30;10170:29;10150:18;;;10143:57;10217:18;;2768:46:0;9890:351:1;13207:648:0;13357:16;;;13371:1;13357:16;;;;;;;;13333:21;;13357:16;;;;;;;;;;-1:-1:-1;13357:16:0;13333:40;;13402:4;13384;13389:1;13384:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13384:23:0;;;:7;;;;;;;;;;:23;;;;13428:9;;:16;;;-1:-1:-1;;;13428:16:0;;;;:9;;;;;:14;;:16;;;;;13384:7;;13428:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13418:4;13423:1;13418:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13418:26:0;;;:7;;;;;;;;;:26;13489:9;;13457:56;;13474:4;;13489:9;13501:11;13457:8;:56::i;:::-;13552:9;;:234;;-1:-1:-1;;;13552:234:0;;-1:-1:-1;;;;;13552:9:0;;;;:60;;:234;;13627:11;;13552:9;;13697:4;;13724;;13760:15;;13552:234;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13812:35;13829:11;13842:4;13812:35;;;;;;;:::i;:::-;;;;;;;;13262:593;13207:648;:::o;2851:136::-;2909:7;2936:43;2940:1;2943;2936:43;;;;;;;;;;;;;;;;;:3;:43::i;3195:250::-;3253:7;3277:1;3282;3277:6;3273:47;;-1:-1:-1;3307:1:0;3300:8;;3273:47;3332:9;3344:5;3348:1;3344;:5;:::i;:::-;3332:17;-1:-1:-1;3377:1:0;3368:5;3372:1;3332:17;3368:5;:::i;:::-;:10;3360:56;;;;-1:-1:-1;;;3360:56:0;;12625:2:1;3360:56:0;;;12607:21:1;12664:2;12644:18;;;12637:30;12703:34;12683:18;;;12676:62;-1:-1:-1;;;12754:18:1;;;12747:31;12795:19;;3360:56:0;12423:397:1;3453:132:0;3511:7;3538:39;3542:1;3545;3538:39;;;;;;;;;;;;;;;;;3679:7;3714:12;3707:5;3699:28;;;;-1:-1:-1;;;3699:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3738:9:0;3750:5;3754:1;3750;:5;:::i;196:250:1:-;281:1;291:113;305:6;302:1;299:13;291:113;;;381:11;;;375:18;362:11;;;355:39;327:2;320:10;291:113;;;-1:-1:-1;;438:1:1;420:16;;413:27;196:250::o;451:396::-;600:2;589:9;582:21;563:4;632:6;626:13;675:6;670:2;659:9;655:18;648:34;691:79;763:6;758:2;747:9;743:18;738:2;730:6;726:15;691:79;:::i;:::-;831:2;810:15;-1:-1:-1;;806:29:1;791:45;;;;838:2;787:54;;451:396;-1:-1:-1;;451:396:1:o;1082:131::-;-1:-1:-1;;;;;1157:31:1;;1147:42;;1137:70;;1203:1;1200;1193:12;1218:315;1286:6;1294;1347:2;1335:9;1326:7;1322:23;1318:32;1315:52;;;1363:1;1360;1353:12;1315:52;1402:9;1389:23;1421:31;1446:5;1421:31;:::i;:::-;1471:5;1523:2;1508:18;;;;1495:32;;-1:-1:-1;;;1218:315:1:o;1730:160::-;1795:20;;1851:13;;1844:21;1834:32;;1824:60;;1880:1;1877;1870:12;1824:60;1730:160;;;:::o;1895:180::-;1951:6;2004:2;1992:9;1983:7;1979:23;1975:32;1972:52;;;2020:1;2017;2010:12;1972:52;2043:26;2059:9;2043:26;:::i;2080:456::-;2157:6;2165;2173;2226:2;2214:9;2205:7;2201:23;2197:32;2194:52;;;2242:1;2239;2232:12;2194:52;2281:9;2268:23;2300:31;2325:5;2300:31;:::i;:::-;2350:5;-1:-1:-1;2407:2:1;2392:18;;2379:32;2420:33;2379:32;2420:33;:::i;:::-;2080:456;;2472:7;;-1:-1:-1;;;2526:2:1;2511:18;;;;2498:32;;2080:456::o;2730:247::-;2789:6;2842:2;2830:9;2821:7;2817:23;2813:32;2810:52;;;2858:1;2855;2848:12;2810:52;2897:9;2884:23;2916:31;2941:5;2916:31;:::i;2982:180::-;3041:6;3094:2;3082:9;3073:7;3069:23;3065:32;3062:52;;;3110:1;3107;3100:12;3062:52;-1:-1:-1;3133:23:1;;2982:180;-1:-1:-1;2982:180:1:o;3167:315::-;3232:6;3240;3293:2;3281:9;3272:7;3268:23;3264:32;3261:52;;;3309:1;3306;3299:12;3261:52;3348:9;3335:23;3367:31;3392:5;3367:31;:::i;:::-;3417:5;-1:-1:-1;3441:35:1;3472:2;3457:18;;3441:35;:::i;:::-;3431:45;;3167:315;;;;;:::o;3695:689::-;3787:6;3795;3803;3856:2;3844:9;3835:7;3831:23;3827:32;3824:52;;;3872:1;3869;3862:12;3824:52;3912:9;3899:23;3941:18;3982:2;3974:6;3971:14;3968:34;;;3998:1;3995;3988:12;3968:34;4036:6;4025:9;4021:22;4011:32;;4081:7;4074:4;4070:2;4066:13;4062:27;4052:55;;4103:1;4100;4093:12;4052:55;4143:2;4130:16;4169:2;4161:6;4158:14;4155:34;;;4185:1;4182;4175:12;4155:34;4240:7;4233:4;4223:6;4220:1;4216:14;4212:2;4208:23;4204:34;4201:47;4198:67;;;4261:1;4258;4251:12;4198:67;4292:4;4284:13;;;;-1:-1:-1;4316:6:1;-1:-1:-1;4341:37:1;;4357:20;;;-1:-1:-1;4341:37:1;:::i;:::-;4331:47;;3695:689;;;;;:::o;4389:316::-;4460:6;4468;4476;4529:2;4517:9;4508:7;4504:23;4500:32;4497:52;;;4545:1;4542;4535:12;4497:52;4581:9;4568:23;4558:33;;4610:35;4641:2;4630:9;4626:18;4610:35;:::i;:::-;4600:45;;4664:35;4695:2;4684:9;4680:18;4664:35;:::i;4710:388::-;4778:6;4786;4839:2;4827:9;4818:7;4814:23;4810:32;4807:52;;;4855:1;4852;4845:12;4807:52;4894:9;4881:23;4913:31;4938:5;4913:31;:::i;:::-;4963:5;-1:-1:-1;5020:2:1;5005:18;;4992:32;5033:33;4992:32;5033:33;:::i;:::-;5085:7;5075:17;;;4710:388;;;;;:::o;5103:248::-;5171:6;5179;5232:2;5220:9;5211:7;5207:23;5203:32;5200:52;;;5248:1;5245;5238:12;5200:52;-1:-1:-1;;5271:23:1;;;5341:2;5326:18;;;5313:32;;-1:-1:-1;5103:248:1:o;5356:380::-;5435:1;5431:12;;;;5478;;;5499:61;;5553:4;5545:6;5541:17;5531:27;;5499:61;5606:2;5598:6;5595:14;5575:18;5572:38;5569:161;;5652:10;5647:3;5643:20;5640:1;5633:31;5687:4;5684:1;5677:15;5715:4;5712:1;5705:15;5569:161;;5356:380;;;:::o;5741:356::-;5943:2;5925:21;;;5962:18;;;5955:30;6021:34;6016:2;6001:18;;5994:62;6088:2;6073:18;;5741:356::o;6722:287::-;6851:3;6889:6;6883:13;6905:66;6964:6;6959:3;6952:4;6944:6;6940:17;6905:66;:::i;:::-;6987:16;;;;;6722:287;-1:-1:-1;;6722:287:1:o;7706:127::-;7767:10;7762:3;7758:20;7755:1;7748:31;7798:4;7795:1;7788:15;7822:4;7819:1;7812:15;9495:127;9556:10;9551:3;9547:20;9544:1;9537:31;9587:4;9584:1;9577:15;9611:4;9608:1;9601:15;9627:128;9694:9;;;9715:11;;;9712:37;;;9729:18;;:::i;9760:125::-;9825:9;;;9846:10;;;9843:36;;;9859:18;;:::i;10378:251::-;10448:6;10501:2;10489:9;10480:7;10476:23;10472:32;10469:52;;;10517:1;10514;10507:12;10469:52;10549:9;10543:16;10568:31;10593:5;10568:31;:::i;10634:465::-;10687:3;10725:5;10719:12;10752:6;10747:3;10740:19;10778:4;10807;10802:3;10798:14;10791:21;;10846:4;10839:5;10835:16;10869:1;10879:195;10893:6;10890:1;10887:13;10879:195;;;10958:13;;-1:-1:-1;;;;;10954:39:1;10942:52;;11014:12;;;;11049:15;;;;10990:1;10908:9;10879:195;;;-1:-1:-1;11090:3:1;;10634:465;-1:-1:-1;;;;;10634:465:1:o;11104:582::-;11403:6;11392:9;11385:25;11446:6;11441:2;11430:9;11426:18;11419:34;11489:3;11484:2;11473:9;11469:18;11462:31;11366:4;11510:57;11562:3;11551:9;11547:19;11539:6;11510:57;:::i;:::-;-1:-1:-1;;;;;11603:32:1;;;;11598:2;11583:18;;11576:60;-1:-1:-1;11667:3:1;11652:19;11645:35;11502:65;11104:582;-1:-1:-1;;;11104:582:1:o;11691:332::-;11898:6;11887:9;11880:25;11941:2;11936;11925:9;11921:18;11914:30;11861:4;11961:56;12013:2;12002:9;11998:18;11990:6;11961:56;:::i;:::-;11953:64;11691:332;-1:-1:-1;;;;11691:332:1:o;12028:168::-;12101:9;;;12132;;12149:15;;;12143:22;;12129:37;12119:71;;12170:18;;:::i;12201:217::-;12241:1;12267;12257:132;;12311:10;12306:3;12302:20;12299:1;12292:31;12346:4;12343:1;12336:15;12374:4;12371:1;12364:15;12257:132;-1:-1:-1;12403:9:1;;12201:217::o

Swarm Source

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