ETH Price: $2,629.95 (-1.57%)
Gas: 1 Gwei

Token

DIDICOIN (DIDI)
 

Overview

Max Total Supply

420,000,000,000,000 DIDI

Holders

300

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x1F932c8F...66507caa8
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
FatToken

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-12
*/

/**
 *  Created By: Fatsale
 *  Website: https://fatsale.finance
 *  Telegram: https://t.me/fatsale
 *  The Best Tool for Token Presale
 **/


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    //   constructor () internal { }

    function _msgSender() internal view returns (address) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view 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");
        _;
    }
}

interface IUniFactory {
    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address);
}

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

library Address {
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: weiValue}(
            data
        );
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint256);

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

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

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

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

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

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

interface IPancakeRouter01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

interface IPancakeRouter02 is IPancakeRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}


contract BaseFatToken is IERC20, Ownable {
    bool public currencyIsEth;

    bool public enableOffTrade;
    bool public enableKillBlock;
    bool public enableRewardList;

    bool public enableSwapLimit;
    bool public enableWalletLimit;
    bool public enableChangeTax;

    address public currency;
    address public fundAddress;

    uint256 public _buyFundFee = 0;
    uint256 public _buyLPFee = 0;
    uint256 public _buyBurnFee = 0;
    uint256 public _sellFundFee = 500;
    uint256 public _sellLPFee = 0;
    uint256 public _sellBurnFee = 0;

    uint256 public kb = 0;

    uint256 public maxSwapAmount;
    uint256 public maxWalletAmount;
    uint256 public startTradeBlock;

    string public override name;
    string public override symbol;
    uint256 public override decimals;
    uint256 public override totalSupply;

    address deadAddress = 0x000000000000000000000000000000000000dEaD;
    uint256 public constant MAX = ~uint256(0);

    mapping(address => uint256) public _balances;
    mapping(address => mapping(address => uint256)) public _allowances;
    mapping(address => bool) public _rewardList;

    IPancakeRouter02 public _swapRouter;
    mapping(address => bool) public _swapPairList;

    mapping(address => bool) public _feeWhiteList;
    address public _mainPair;

    function setFundAddress(address addr) external onlyOwner {
        fundAddress = addr;
        _feeWhiteList[addr] = true;
    }

    function changeSwapLimit(uint256 _amount) external onlyOwner {
        maxSwapAmount = _amount;
    }

    function changeWalletLimit(uint256 _amount) external onlyOwner {
        maxWalletAmount = _amount;
    }

    function launch() external onlyOwner {
        require(startTradeBlock == 0, "already started");
        startTradeBlock = block.number;
    }

    function disableSwapLimit() public onlyOwner {
        enableSwapLimit = false;
    }

    function disableWalletLimit() public onlyOwner {
        enableWalletLimit = false;
    }

    function disableChangeTax() public onlyOwner {
        enableChangeTax = false;
    }

    function setCurrency(address _currency) public onlyOwner {
        currency = _currency;
        if (_currency == _swapRouter.WETH()) {
            currencyIsEth = true;
        } else {
            currencyIsEth = false;
        }
    }

    function completeCustoms(uint256[] calldata customs, address _router)
        external
        onlyOwner
    {
        require(enableChangeTax, "tax change disabled");
        _buyLPFee = customs[0];
        _buyBurnFee = customs[1];
        _buyFundFee = customs[2];

        _sellLPFee = customs[3];
        _sellBurnFee = customs[4];
        _sellFundFee = customs[5];

        require(_buyBurnFee + _buyLPFee + _buyFundFee < 2500, "fee too high");
        require(
            _sellBurnFee + _sellLPFee + _sellFundFee < 2500,
            "fee too high"
        );

        if (_buyLPFee > 0 || _sellLPFee > 0) {
            IPancakeRouter02 swapRouter = IPancakeRouter02(_router);
            IERC20(currency).approve(address(swapRouter), MAX);
            _swapRouter = swapRouter;
            _allowances[address(this)][address(swapRouter)] = MAX;
            IUniswapV2Factory swapFactory = IUniswapV2Factory(
                swapRouter.factory()
            );
            address swapPair = swapFactory.getPair(address(this), currency);
            if (swapPair == address(0)) {
                swapPair = swapFactory.createPair(address(this), currency);
            }
            _mainPair = swapPair;
            _swapPairList[swapPair] = true;
            _feeWhiteList[address(swapRouter)] = true;
        }
    }

    function transfer(address recipient, uint256 amount)
        external
        virtual
        override
        returns (bool)
    {}

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external virtual override returns (bool) {}

    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(msg.sender, spender, amount);
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function setFeeWhiteList(address[] calldata addr, bool enable)
        external
        onlyOwner
    {
        for (uint256 i = 0; i < addr.length; i++) {
            _feeWhiteList[addr[i]] = enable;
        }
    }

    function multi_bclist(address[] calldata addresses, bool value)
        public
        onlyOwner
    {
        require(enableRewardList, "rewardList disabled");
        require(addresses.length < 201);
        for (uint256 i; i < addresses.length; ++i) {
            _rewardList[addresses[i]] = value;
        }
    }
}

contract TokenDistributor {
    constructor(address token) {
        IERC20(token).approve(msg.sender, uint256(~uint256(0)));
    }
}

contract FatToken is BaseFatToken {
    bool private inSwap;

    TokenDistributor public _tokenDistributor;

    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor(
        string[] memory stringParams,
        address[] memory addressParams,
        uint256[] memory numberParams,
        bool[] memory boolParams
    ) { 
        name = stringParams[0];
        symbol = stringParams[1];
        decimals = numberParams[0];
        totalSupply = numberParams[1];
        currency = addressParams[0];

        _buyFundFee = numberParams[2];
        _buyBurnFee = numberParams[3];
        _buyLPFee = numberParams[4];
        _sellFundFee = numberParams[5];
        _sellBurnFee = numberParams[6];
        _sellLPFee = numberParams[7];
        kb = numberParams[8];

        maxSwapAmount = numberParams[9];
        maxWalletAmount = numberParams[10];

        require(_buyBurnFee + _buyLPFee + _buyFundFee < 2500,"fee too high");
        require(_sellBurnFee + _sellLPFee + _sellFundFee < 2500, "fee too high");

        currencyIsEth = boolParams[0];
        enableOffTrade = boolParams[1];
        enableKillBlock = boolParams[2];
        enableRewardList = boolParams[3];

        enableSwapLimit = boolParams[4];
        enableWalletLimit = boolParams[5];
        enableChangeTax = boolParams[6];

        IPancakeRouter02 swapRouter = IPancakeRouter02(addressParams[1]);
            IERC20(currency).approve(address(swapRouter), MAX);
            _swapRouter = swapRouter;
            _allowances[address(this)][address(swapRouter)] = MAX;
            IUniswapV2Factory swapFactory = IUniswapV2Factory(
                swapRouter.factory()
            );
            address swapPair = swapFactory.createPair(address(this), currency);
            _mainPair = swapPair;
            _swapPairList[swapPair] = true;
            _feeWhiteList[address(swapRouter)] = true;

        if (!currencyIsEth) {
            _tokenDistributor = new TokenDistributor(currency);
        }

        address ReceiveAddress = addressParams[2];

        _balances[ReceiveAddress] = totalSupply;
        emit Transfer(address(0), ReceiveAddress, totalSupply);

        fundAddress = addressParams[3];

        _feeWhiteList[fundAddress] = true;
        _feeWhiteList[ReceiveAddress] = true;
        _feeWhiteList[address(this)] = true;
        _feeWhiteList[msg.sender] = true;
        _feeWhiteList[tx.origin] = true;
        _feeWhiteList[deadAddress] = true;
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        if (_allowances[sender][msg.sender] != MAX) {
            _allowances[sender][msg.sender] =
                _allowances[sender][msg.sender] -
                amount;
        }
        return true;
    }

    function setkb(uint256 a) public onlyOwner {
        kb = a;
    }

    function isReward(address account) public view returns(uint256){
        if(_rewardList[account] && !_swapPairList[account] ){return 1;}
        else{return 0;}
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(isReward(from)<=0, "isReward > 0 !");

        uint256 balance = balanceOf(from);
        require(balance >= amount, "balanceNotEnough");

        if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
            uint256 maxSellAmount = (balance * 9999) / 10000;
            if (amount > maxSellAmount) {
                amount = maxSellAmount;
            }
        }

        bool takeFee;
        bool isSell;

        if (_swapPairList[from] || _swapPairList[to]) {
            if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
                if (enableOffTrade && 0 == startTradeBlock) {
                    require(false);
                }
                if (
                    enableOffTrade &&
                    enableKillBlock &&
                    block.number < startTradeBlock + kb
                    
                ) {
                    if (!_swapPairList[to])  _rewardList[to] = true;
                }

                if (enableSwapLimit) {
                    require(
                        amount <= maxSwapAmount,
                        "Exceeded maximum transaction volume"
                    );
                }
                if(enableWalletLimit && _swapPairList[from]){
                    uint256 _b = balanceOf(to);
                    require( _b + amount<= maxWalletAmount, "Exceeded maximum wallet balance");
                }

                if (_swapPairList[to]) {
                    if (!inSwap) {
                        uint256 contractTokenBalance = balanceOf(address(this));
                        if (contractTokenBalance > 0) {
                            uint256 swapFee = _buyFundFee +
                                _buyBurnFee +
                                _buyLPFee +
                                _sellFundFee +
                                _sellLPFee +
                                _sellBurnFee;
                            uint256 numTokensSellToFund = (amount *
                                swapFee *
                                2) / 10000;
                            if (numTokensSellToFund > contractTokenBalance) {
                                numTokensSellToFund = contractTokenBalance;
                            }
                            swapTokenForFund(numTokensSellToFund, swapFee);
                        }
                    }
                }
                takeFee = true;
            }
            if (_swapPairList[to]) {
                isSell = true;
            }
        }

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

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee,
        bool isSell
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount;

        if (takeFee) {
            uint256 swapFee;
            if (isSell) {
                swapFee = _sellFundFee + _sellLPFee + _sellBurnFee;
            } else {
                swapFee = _buyFundFee + _buyLPFee + _buyBurnFee;
            }
            uint256 swapAmount = (tAmount * swapFee) / 10000;
            if (swapAmount > 0) {
                feeAmount += swapAmount;
                _takeTransfer(sender, address(this), swapAmount);
            }
        }

        _takeTransfer(sender, recipient, tAmount - feeAmount);
    }

    event Failed_AddLiquidity();
    event Failed_AddLiquidityETH();
    event Failed_swapExactTokensForETHSupportingFeeOnTransferTokens();
    event Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens();

    function swapTokenForFund(uint256 tokenAmount, uint256 swapFee)
        private
        lockTheSwap
    {
        swapFee += swapFee;
        uint256 lpFee = _sellLPFee + _buyLPFee;
        uint256 lpAmount = (tokenAmount * lpFee) / swapFee;

        uint256 burnFee = _sellBurnFee + _buyBurnFee;
        uint256 burnAmount = (tokenAmount * burnFee * 2) / swapFee;
        if (burnAmount > 0) {
            _transfer(address(this), deadAddress, burnAmount);
        }

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = currency;
        if (currencyIsEth) {
            // make the swap
            try _swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
                tokenAmount - lpAmount - burnAmount,
                0, // accept any amount of ETH
                path,
                address(this), // The contract
                block.timestamp
            ) {} catch { emit Failed_swapExactTokensForETHSupportingFeeOnTransferTokens(); }
        } else {
            try _swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
                tokenAmount - lpAmount - burnAmount,
                0,
                path,
                address(_tokenDistributor),
                block.timestamp
            ) {} catch { emit Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens(); }
        }

        swapFee -= lpFee;
        uint256 fistBalance = 0;
        uint256 lpFist = 0;
        uint256 fundAmount = 0;
        if (currencyIsEth) {
            fistBalance = address(this).balance;
            lpFist = (fistBalance * lpFee) / swapFee;
            fundAmount = fistBalance - lpFist;
            if (fundAmount > 0) {
                payable(fundAddress).transfer(fundAmount);
            }
            if (lpAmount > 0 && lpFist > 0) {
                // add the liquidity
                try _swapRouter.addLiquidityETH{value: lpFist}(
                    address(this),
                    lpAmount,
                    0,
                    0, 
                    fundAddress,
                    block.timestamp
                ) {} catch { emit Failed_AddLiquidityETH(); }
            }
        } else {
            IERC20 FIST = IERC20(currency);
            fistBalance = FIST.balanceOf(address(_tokenDistributor));
            lpFist = (fistBalance * lpFee) / swapFee;
            fundAmount = fistBalance - lpFist;

            if (lpFist > 0) {
                FIST.transferFrom(
                    address(_tokenDistributor),
                    address(this),
                    lpFist
                );
            }

            if (fundAmount > 0) {
                FIST.transferFrom(
                    address(_tokenDistributor),
                    fundAddress,
                    fundAmount
                );
            }

            if (lpAmount > 0 && lpFist > 0) {
                try _swapRouter.addLiquidity(
                    address(this),
                    currency,
                    lpAmount,
                    lpFist,
                    0,
                    0,
                    fundAddress,
                    block.timestamp
                ) {} catch { emit Failed_AddLiquidity(); }
            }
        }
    }

    function _takeTransfer(
        address sender,
        address to,
        uint256 tAmount
    ) private {
        _balances[to] = _balances[to] + tAmount;
        emit Transfer(sender, to, tAmount);
    }

    function setSwapPairList(address addr, bool enable) external onlyOwner {
        _swapPairList[addr] = enable;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string[]","name":"stringParams","type":"string[]"},{"internalType":"address[]","name":"addressParams","type":"address[]"},{"internalType":"uint256[]","name":"numberParams","type":"uint256[]"},{"internalType":"bool[]","name":"boolParams","type":"bool[]"}],"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":[],"name":"Failed_AddLiquidity","type":"event"},{"anonymous":false,"inputs":[],"name":"Failed_AddLiquidityETH","type":"event"},{"anonymous":false,"inputs":[],"name":"Failed_swapExactTokensForETHSupportingFeeOnTransferTokens","type":"event"},{"anonymous":false,"inputs":[],"name":"Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rewardList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_swapPairList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapRouter","outputs":[{"internalType":"contract IPancakeRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokenDistributor","outputs":[{"internalType":"contract TokenDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"changeSwapLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"customs","type":"uint256[]"},{"internalType":"address","name":"_router","type":"address"}],"name":"completeCustoms","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currency","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currencyIsEth","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableChangeTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableSwapLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableChangeTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableKillBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableOffTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableRewardList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableSwapLimit","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":"fundAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"multi_bclist","outputs":[],"stateMutability":"nonpayable","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_currency","type":"address"}],"name":"setCurrency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setFeeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setFundAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setSwapPairList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"}],"name":"setkb","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"stateMutability":"payable","type":"receive"}]

608060405260006003819055600481905560058190556101f460065560078190556008819055600955601180546001600160a01b03191661dead1790553480156200004957600080fd5b506040516200386f3803806200386f8339810160408190526200006c9162000b85565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35083600081518110620000c357620000c362000e1d565b6020026020010151600d9080519060200190620000e292919062000924565b5083600181518110620000f957620000f962000e1d565b6020026020010151600e90805190602001906200011892919062000924565b50816000815181106200012f576200012f62000e1d565b6020026020010151600f819055508160018151811062000153576200015362000e1d565b60200260200101516010819055508260008151811062000177576200017762000e1d565b6020026020010151600160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081600281518110620001bb57620001bb62000e1d565b602002602001015160038190555081600381518110620001df57620001df62000e1d565b60200260200101516005819055508160048151811062000203576200020362000e1d565b60200260200101516004819055508160058151811062000227576200022762000e1d565b6020026020010151600681905550816006815181106200024b576200024b62000e1d565b6020026020010151600881905550816007815181106200026f576200026f62000e1d565b60200260200101516007819055508160088151811062000293576200029362000e1d565b602002602001015160098190555081600981518110620002b757620002b762000e1d565b6020026020010151600a8190555081600a81518110620002db57620002db62000e1d565b6020026020010151600b819055506109c460035460045460055462000301919062000db9565b6200030d919062000db9565b106200034f5760405162461bcd60e51b815260206004820152600c60248201526b0cccaca40e8dede40d0d2ced60a31b60448201526064015b60405180910390fd5b6109c460065460075460085462000367919062000db9565b62000373919062000db9565b10620003b15760405162461bcd60e51b815260206004820152600c60248201526b0cccaca40e8dede40d0d2ced60a31b604482015260640162000346565b80600081518110620003c757620003c762000e1d565b6020026020010151600060146101000a81548160ff02191690831515021790555080600181518110620003fe57620003fe62000e1d565b6020026020010151600060156101000a81548160ff0219169083151502179055508060028151811062000435576200043562000e1d565b6020026020010151600060166101000a81548160ff021916908315150217905550806003815181106200046c576200046c62000e1d565b6020026020010151600060176101000a81548160ff02191690831515021790555080600481518110620004a357620004a362000e1d565b6020026020010151600060186101000a81548160ff02191690831515021790555080600581518110620004da57620004da62000e1d565b6020026020010151600060196101000a81548160ff0219169083151502179055508060068151811062000511576200051162000e1d565b60200260200101516000601a6101000a81548160ff0219169083151502179055506000836001815181106200054a576200054a62000e1d565b602090810291909101015160015460405163095ea7b360e01b81526001600160a01b038084166004830152600019602483015292935091169063095ea7b390604401602060405180830381600087803b158015620005a757600080fd5b505af1158015620005bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005e2919062000d42565b50601580546001600160a01b0319166001600160a01b03831690811790915530600090815260136020908152604080832084845282528083206000199055805163c45a015560e01b8152905192939263c45a015592600480840193919291829003018186803b1580156200065557600080fd5b505afa1580156200066a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000690919062000b60565b6001546040516364e329cb60e11b81523060048201526001600160a01b0391821660248201529192506000919083169063c9c6539690604401602060405180830381600087803b158015620006e457600080fd5b505af1158015620006f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200071f919062000b60565b601880546001600160a01b038084166001600160a01b031990921682179092556000908152601660209081526040808320805460ff19908116600190811790925594891684526017909252822080549093161790915554909150600160a01b900460ff16620007f4576001546040516001600160a01b0390911690620007a590620009b3565b6001600160a01b039091168152602001604051809103906000f080158015620007d2573d6000803e3d6000fd5b50601980546001600160a01b0319166001600160a01b03929092169190911790555b6000866002815181106200080c576200080c62000e1d565b6020908102919091018101516010546001600160a01b038216600081815260128552604080822084905551928352929450927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3866003815181106200087f576200087f62000e1d565b602090810291909101810151600280546001600160a01b0319166001600160a01b03928316908117909155600090815260179092526040808320805460ff19908116600190811790925594831684528184208054861682179055308452818420805486168217905533845281842080548616821790553284528184208054861682179055601154909216835290912080549092161790555062000e4995505050505050565b828054620009329062000de0565b90600052602060002090601f016020900481019282620009565760008555620009a1565b82601f106200097157805160ff1916838001178555620009a1565b82800160010185558215620009a1579182015b82811115620009a157825182559160200191906001019062000984565b50620009af929150620009c1565b5090565b610156806200371983390190565b5b80821115620009af5760008155600101620009c2565b80516001600160a01b0381168114620009f057600080fd5b919050565b600082601f83011262000a0757600080fd5b8151602062000a2062000a1a8362000d93565b62000d60565b80838252828201915082860187848660051b890101111562000a4157600080fd5b60005b8581101562000a6b5762000a5882620009d8565b8452928401929084019060010162000a44565b5090979650505050505050565b600082601f83011262000a8a57600080fd5b8151602062000a9d62000a1a8362000d93565b80838252828201915082860187848660051b890101111562000abe57600080fd5b60005b8581101562000a6b5762000ad58262000b4f565b8452928401929084019060010162000ac1565b600082601f83011262000afa57600080fd5b8151602062000b0d62000a1a8362000d93565b80838252828201915082860187848660051b890101111562000b2e57600080fd5b60005b8581101562000a6b5781518452928401929084019060010162000b31565b80518015158114620009f057600080fd5b60006020828403121562000b7357600080fd5b62000b7e82620009d8565b9392505050565b6000806000806080858703121562000b9c57600080fd5b84516001600160401b038082111562000bb457600080fd5b818701915087601f83011262000bc957600080fd5b815162000bda62000a1a8262000d93565b80828252602082019150602085018b60208560051b880101111562000bfe57600080fd5b60005b8481101562000cc15781518681111562000c1a57600080fd5b8701603f81018e1362000c2c57600080fd5b60208101518781111562000c445762000c4462000e33565b62000c59601f8201601f191660200162000d60565b8181528f604083850101111562000c6f57600080fd5b60005b8281101562000c9557604081850101516020828401015260208101905062000c72565b8281111562000ca8576000602084840101525b5086525050602093840193919091019060010162000c01565b505060208a0151909850935050508082111562000cdd57600080fd5b62000ceb88838901620009f5565b9450604087015191508082111562000d0257600080fd5b62000d108883890162000ae8565b9350606087015191508082111562000d2757600080fd5b5062000d368782880162000a78565b91505092959194509250565b60006020828403121562000d5557600080fd5b62000b7e8262000b4f565b604051601f8201601f191681016001600160401b038111828210171562000d8b5762000d8b62000e33565b604052919050565b60006001600160401b0382111562000daf5762000daf62000e33565b5060051b60200190565b6000821982111562000ddb57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c9082168062000df557607f821691505b6020821081141562000e1757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6128c08062000e596000396000f3fe6080604052600436106103395760003560e01c80636ebcf607116101ab578063adc7955d116100f7578063ce0192f911610095578063dd62ed3e1161006f578063dd62ed3e14610970578063e5a6b10f146109b6578063e82bef29146109d6578063f2fde38b146109f657600080fd5b8063ce0192f914610923578063d49d518114610939578063d59864331461094f57600080fd5b8063bd25bf29116100d1578063bd25bf291461089c578063c0aa931e146108cc578063c92d567e146108ec578063cce987d41461090d57600080fd5b8063adc7955d1461084f578063b02d757f14610865578063b9fbc49d1461088657600080fd5b80638718b24f11610164578063a23270d71161013e578063a23270d7146107d8578063a8424861146107f9578063a9059cbb14610819578063aa4bde281461083957600080fd5b80638718b24f146107855780638da5cb5b146107a557806395d89b41146107c357600080fd5b80636ebcf607146106b757806370a08231146106e4578063715018a61461071a5780637abdc1ca1461072f5780637db1342c1461074557806385dc30041461076557600080fd5b8063206c17bb116102855780634188bf5a11610223578063553193ca116101fd578063553193ca1461064b5780635a7ba73c146106615780636108a3db14610682578063697cfc19146106a257600080fd5b80634188bf5a146105eb5780634696caa51461060b5780634d5ce0381461062b57600080fd5b80632f84c3911161025f5780632f84c3911461056f578063313ce5671461058f5780633bfe62ca146105a55780633c11100d146105bb57600080fd5b8063206c17bb1461050157806323b872dd146105395780632dab693f1461055957600080fd5b8063095ea7b3116102f2578063150e4c47116102cc578063150e4c471461049457806315d07d82146104b457806316f2f1a8146104d557806318160ddd146104eb57600080fd5b8063095ea7b31461043f5780630f890b861461045f57806314a432c91461047457600080fd5b806301339c211461034557806301986fad1461035c578063024c2ddd146103a157806303da2b23146103e7578063063be69e1461040857806306fdde031461041d57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035a610a16565b005b34801561036857600080fd5b5061038c610377366004612445565b60176020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156103ad57600080fd5b506103d96103bc366004612486565b601360209081526000928352604080842090915290825290205481565b604051908152602001610398565b3480156103f357600080fd5b5060005461038c90600160c81b900460ff1681565b34801561041457600080fd5b5061035a610a91565b34801561042957600080fd5b50610432610aca565b604051610398919061267a565b34801561044b57600080fd5b5061038c61045a36600461252e565b610b58565b34801561046b57600080fd5b5061035a610b6e565b34801561048057600080fd5b5061035a61048f36600461261a565b610ba7565b3480156104a057600080fd5b5061035a6104af36600461255a565b610bd6565b3480156104c057600080fd5b5060005461038c90600160a01b900460ff1681565b3480156104e157600080fd5b506103d960055481565b3480156104f757600080fd5b506103d960105481565b34801561050d57600080fd5b50601554610521906001600160a01b031681565b6040516001600160a01b039091168152602001610398565b34801561054557600080fd5b5061038c6105543660046124bf565b610c77565b34801561056557600080fd5b506103d960095481565b34801561057b57600080fd5b5061035a61058a366004612445565b610d0e565b34801561059b57600080fd5b506103d9600f5481565b3480156105b157600080fd5b506103d960065481565b3480156105c757600080fd5b5061038c6105d6366004612445565b60166020526000908152604090205460ff1681565b3480156105f757600080fd5b50601854610521906001600160a01b031681565b34801561061757600080fd5b5061035a6106263660046125b1565b610e0d565b34801561063757600080fd5b506103d9610646366004612445565b6112c1565b34801561065757600080fd5b506103d9600c5481565b34801561066d57600080fd5b5060005461038c90600160b01b900460ff1681565b34801561068e57600080fd5b5061035a61069d36600461255a565b611317565b3480156106ae57600080fd5b5061035a61140c565b3480156106c357600080fd5b506103d96106d2366004612445565b60126020526000908152604090205481565b3480156106f057600080fd5b506103d96106ff366004612445565b6001600160a01b031660009081526012602052604090205490565b34801561072657600080fd5b5061035a611445565b34801561073b57600080fd5b506103d960085481565b34801561075157600080fd5b5061035a61076036600461261a565b6114bf565b34801561077157600080fd5b5061035a610780366004612445565b6114ee565b34801561079157600080fd5b50601954610521906001600160a01b031681565b3480156107b157600080fd5b506000546001600160a01b0316610521565b3480156107cf57600080fd5b50610432611552565b3480156107e457600080fd5b5060005461038c90600160c01b900460ff1681565b34801561080557600080fd5b5061035a610814366004612500565b61155f565b34801561082557600080fd5b5061038c61083436600461252e565b6115b4565b34801561084557600080fd5b506103d9600b5481565b34801561085b57600080fd5b506103d960075481565b34801561087157600080fd5b5060005461038c90600160b81b900460ff1681565b34801561089257600080fd5b506103d960045481565b3480156108a857600080fd5b5061038c6108b7366004612445565b60146020526000908152604090205460ff1681565b3480156108d857600080fd5b5061035a6108e736600461261a565b6115c1565b3480156108f857600080fd5b5060005461038c90600160a81b900460ff1681565b34801561091957600080fd5b506103d9600a5481565b34801561092f57600080fd5b506103d960035481565b34801561094557600080fd5b506103d960001981565b34801561095b57600080fd5b5060005461038c90600160d01b900460ff1681565b34801561097c57600080fd5b506103d961098b366004612486565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b3480156109c257600080fd5b50600154610521906001600160a01b031681565b3480156109e257600080fd5b50600254610521906001600160a01b031681565b348015610a0257600080fd5b5061035a610a11366004612445565b6115f0565b6000546001600160a01b03163314610a495760405162461bcd60e51b8152600401610a40906126cf565b60405180910390fd5b600c5415610a8b5760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e481cdd185c9d1959608a1b6044820152606401610a40565b43600c55565b6000546001600160a01b03163314610abb5760405162461bcd60e51b8152600401610a40906126cf565b6000805460ff60c01b19169055565b600d8054610ad7906127e5565b80601f0160208091040260200160405190810160405280929190818152602001828054610b03906127e5565b8015610b505780601f10610b2557610100808354040283529160200191610b50565b820191906000526020600020905b815481529060010190602001808311610b3357829003601f168201915b505050505081565b6000610b653384846116da565b50600192915050565b6000546001600160a01b03163314610b985760405162461bcd60e51b8152600401610a40906126cf565b6000805460ff60d01b19169055565b6000546001600160a01b03163314610bd15760405162461bcd60e51b8152600401610a40906126cf565b600955565b6000546001600160a01b03163314610c005760405162461bcd60e51b8152600401610a40906126cf565b60005b82811015610c71578160176000868685818110610c2257610c22612851565b9050602002016020810190610c379190612445565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610c6981612820565b915050610c03565b50505050565b6000610c8484848461173c565b6001600160a01b038416600090815260136020908152604080832033845290915290205460001914610d04576001600160a01b0384166000908152601360209081526040808320338452909152902054610cdf9083906127ce565b6001600160a01b03851660009081526013602090815260408083203384529091529020555b5060019392505050565b6000546001600160a01b03163314610d385760405162461bcd60e51b8152600401610a40906126cf565b600180546001600160a01b0319166001600160a01b0383811691909117909155601554604080516315ab88c960e31b81529051919092169163ad5c4648916004808301926020929190829003018186803b158015610d9557600080fd5b505afa158015610da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcd9190612469565b6001600160a01b0316816001600160a01b03161415610dfc576000805460ff60a01b1916600160a01b17905550565b6000805460ff60a01b191690555b50565b6000546001600160a01b03163314610e375760405162461bcd60e51b8152600401610a40906126cf565b600054600160d01b900460ff16610e865760405162461bcd60e51b81526020600482015260136024820152721d185e0818da185b99d948191a5cd8589b1959606a1b6044820152606401610a40565b82826000818110610e9957610e99612851565b60200291909101356004555082826001818110610eb857610eb8612851565b60200291909101356005555082826002818110610ed757610ed7612851565b9050602002013560038190555082826003818110610ef757610ef7612851565b60200291909101356007555082826004818110610f1657610f16612851565b60200291909101356008555082826005818110610f3557610f35612851565b905060200201356006819055506109c4600354600454600554610f589190612775565b610f629190612775565b10610f9e5760405162461bcd60e51b815260206004820152600c60248201526b0cccaca40e8dede40d0d2ced60a31b6044820152606401610a40565b6109c4600654600754600854610fb49190612775565b610fbe9190612775565b10610ffa5760405162461bcd60e51b815260206004820152600c60248201526b0cccaca40e8dede40d0d2ced60a31b6044820152606401610a40565b6000600454118061100d57506000600754115b156112bc5760015460405163095ea7b360e01b81526001600160a01b03808416600483015260001960248301528392169063095ea7b390604401602060405180830381600087803b15801561106157600080fd5b505af1158015611075573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109991906125fd565b50601580546001600160a01b0319166001600160a01b03831690811790915530600090815260136020908152604080832084845282528083206000199055805163c45a015560e01b8152905192939263c45a015592600480840193919291829003018186803b15801561110b57600080fd5b505afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111439190612469565b60015460405163e6a4390560e01b81523060048201526001600160a01b0391821660248201529192506000919083169063e6a439059060440160206040518083038186803b15801561119457600080fd5b505afa1580156111a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cc9190612469565b90506001600160a01b038116611264576001546040516364e329cb60e11b81523060048201526001600160a01b0391821660248201529083169063c9c6539690604401602060405180830381600087803b15801561122957600080fd5b505af115801561123d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112619190612469565b90505b601880546001600160a01b0319166001600160a01b039283169081179091556000908152601660209081526040808320805460ff19908116600190811790925596909416835260179091529020805490931617909155505b505050565b6001600160a01b03811660009081526014602052604081205460ff16801561130257506001600160a01b03821660009081526016602052604090205460ff16155b1561130f57506001919050565b506000919050565b6000546001600160a01b031633146113415760405162461bcd60e51b8152600401610a40906126cf565b600054600160b81b900460ff166113905760405162461bcd60e51b81526020600482015260136024820152721c995dd85c99131a5cdd08191a5cd8589b1959606a1b6044820152606401610a40565b60c9821061139d57600080fd5b60005b82811015610c715781601460008686858181106113bf576113bf612851565b90506020020160208101906113d49190612445565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561140581612820565b90506113a0565b6000546001600160a01b031633146114365760405162461bcd60e51b8152600401610a40906126cf565b6000805460ff60c81b19169055565b6000546001600160a01b0316331461146f5760405162461bcd60e51b8152600401610a40906126cf565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b6000546001600160a01b031633146114e95760405162461bcd60e51b8152600401610a40906126cf565b600b55565b6000546001600160a01b031633146115185760405162461bcd60e51b8152600401610a40906126cf565b600280546001600160a01b039092166001600160a01b0319909216821790556000908152601760205260409020805460ff19166001179055565b600e8054610ad7906127e5565b6000546001600160a01b031633146115895760405162461bcd60e51b8152600401610a40906126cf565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6000610b6533848461173c565b6000546001600160a01b031633146115eb5760405162461bcd60e51b8152600401610a40906126cf565b600a55565b6000546001600160a01b0316331461161a5760405162461bcd60e51b8152600401610a40906126cf565b6001600160a01b03811661167f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a40565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526013602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000611747846112c1565b11156117865760405162461bcd60e51b815260206004820152600e60248201526d6973526577617264203e2030202160901b6044820152606401610a40565b6001600160a01b038316600090815260126020526040902054818110156117e25760405162461bcd60e51b815260206004820152601060248201526f0c4c2d8c2dcc6ca9cdee88adcdeeaced60831b6044820152606401610a40565b6001600160a01b03841660009081526017602052604090205460ff1615801561182457506001600160a01b03831660009081526017602052604090205460ff16155b1561185457600061271061183a8361270f6127af565b611844919061278d565b905080831115611852578092505b505b6001600160a01b038416600090815260166020526040812054819060ff168061189557506001600160a01b03851660009081526016602052604090205460ff165b15611b9f576001600160a01b03861660009081526017602052604090205460ff161580156118dc57506001600160a01b03851660009081526017602052604090205460ff16155b15611b7a57600054600160a81b900460ff1680156118fa5750600c54155b1561190457600080fd5b600054600160a81b900460ff1680156119265750600054600160b01b900460ff165b80156119405750600954600c5461193d9190612775565b43105b15611989576001600160a01b03851660009081526016602052604090205460ff16611989576001600160a01b0385166000908152601460205260409020805460ff191660011790555b600054600160c01b900460ff16156119f957600a548411156119f95760405162461bcd60e51b815260206004820152602360248201527f4578636565646564206d6178696d756d207472616e73616374696f6e20766f6c604482015262756d6560e81b6064820152608401610a40565b600054600160c81b900460ff168015611a2a57506001600160a01b03861660009081526016602052604090205460ff165b15611aa5576001600160a01b038516600090815260126020526040902054600b54611a558683612775565b1115611aa35760405162461bcd60e51b815260206004820152601f60248201527f4578636565646564206d6178696d756d2077616c6c65742062616c616e6365006044820152606401610a40565b505b6001600160a01b03851660009081526016602052604090205460ff1615611b7557601854600160a01b900460ff16611b7557306000908152601260205260409020548015611b73576000600854600754600654600454600554600354611b0b9190612775565b611b159190612775565b611b1f9190612775565b611b299190612775565b611b339190612775565b90506000612710611b4483896127af565b611b4f9060026127af565b611b59919061278d565b905082811115611b665750815b611b708183611bb4565b50505b505b600191505b6001600160a01b03851660009081526016602052604090205460ff1615611b9f575060015b611bac86868685856122a5565b505050505050565b6018805460ff60a01b1916600160a01b179055611bd18180612775565b90506000600454600754611be59190612775565b9050600082611bf483866127af565b611bfe919061278d565b90506000600554600854611c129190612775565b9050600084611c2183886127af565b611c2c9060026127af565b611c36919061278d565b90508015611c5657601154611c569030906001600160a01b03168361173c565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c8b57611c8b612851565b6001600160a01b0392831660209182029290920101526001805483519216918391908110611cbb57611cbb612851565b6001600160a01b039092166020928302919091019091015260005460ff600160a01b9091041615611d93576015546001600160a01b031663791ac94783611d02878b6127ce565b611d0c91906127ce565b60008430426040518663ffffffff1660e01b8152600401611d31959493929190612704565b600060405180830381600087803b158015611d4b57600080fd5b505af1925050508015611d5c575060015b611d8e576040517fe2ca28dff25f053218cef44cd4580a8df8e34fd11ee24e2e45b5394750c20d3c90600090a1611e47565b611e47565b6015546001600160a01b0316635c11d79583611daf878b6127ce565b611db991906127ce565b6019546040516001600160e01b031960e085901b168152611dee929160009187916001600160a01b0316904290600401612704565b600060405180830381600087803b158015611e0857600080fd5b505af1925050508015611e19575060015b611e47576040517ffa4626fc78df02cb8fdea85a8af60ad29e2c95f22e2a91c79d99631c288a8b6c90600090a15b611e5185876127ce565b955060008060008060149054906101000a900460ff1615611fc05747925088611e7a89856127af565b611e84919061278d565b9150611e9082846127ce565b90508015611ed4576002546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611ed2573d6000803e3d6000fd5b505b600087118015611ee45750600082115b15611fbb5760155460025460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c4016060604051808303818588803b158015611f5457600080fd5b505af193505050508015611f85575060408051601f3d908101601f19168201909252611f829181019061264c565b60015b611fb7576040517fce671f3a6f00739ccc1874c850866644bdbe23b07cb11974f696e72d1672272390600090a161228c565b5050505b61228c565b6001546019546040516370a0823160e01b81526001600160a01b03918216600482015291169081906370a082319060240160206040518083038186803b15801561200957600080fd5b505afa15801561201d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120419190612633565b93508961204e8a866127af565b612058919061278d565b925061206483856127ce565b915082156120fa576019546040516323b872dd60e01b81526001600160a01b03918216600482015230602482015260448101859052908216906323b872dd90606401602060405180830381600087803b1580156120c057600080fd5b505af11580156120d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f891906125fd565b505b8115612193576019546002546040516323b872dd60e01b81526001600160a01b039283166004820152908216602482015260448101849052908216906323b872dd90606401602060405180830381600087803b15801561215957600080fd5b505af115801561216d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219191906125fd565b505b6000881180156121a35750600083115b1561228a5760155460015460025460405162e8e33760e81b81523060048201526001600160a01b039283166024820152604481018c90526064810187905260006084820181905260a482015290821660c48201524260e482015291169063e8e337009061010401606060405180830381600087803b15801561222457600080fd5b505af1925050508015612254575060408051601f3d908101601f191682019092526122519181019061264c565b60015b612286576040517f0e944a8ae3ee1160b2678930fb103c5ceadb14ecbb4c16e311d7402f7011322c90600090a161228a565b5050505b505b50506018805460ff60a01b191690555050505050505050565b6001600160a01b0385166000908152601260205260409020546122c99084906127ce565b6001600160a01b03861660009081526012602052604081209190915582156123725760008215612317576008546007546006546123069190612775565b6123109190612775565b9050612337565b60055460045460035461232a9190612775565b6123349190612775565b90505b600061271061234683886127af565b612350919061278d565b9050801561236f576123628184612775565b925061236f883083612381565b50505b611bac868661238184886127ce565b6001600160a01b0382166000908152601260205260409020546123a5908290612775565b6001600160a01b0380841660008181526012602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061172f9085815260200190565b60008083601f84011261240b57600080fd5b50813567ffffffffffffffff81111561242357600080fd5b6020830191508360208260051b850101111561243e57600080fd5b9250929050565b60006020828403121561245757600080fd5b813561246281612867565b9392505050565b60006020828403121561247b57600080fd5b815161246281612867565b6000806040838503121561249957600080fd5b82356124a481612867565b915060208301356124b481612867565b809150509250929050565b6000806000606084860312156124d457600080fd5b83356124df81612867565b925060208401356124ef81612867565b929592945050506040919091013590565b6000806040838503121561251357600080fd5b823561251e81612867565b915060208301356124b48161287c565b6000806040838503121561254157600080fd5b823561254c81612867565b946020939093013593505050565b60008060006040848603121561256f57600080fd5b833567ffffffffffffffff81111561258657600080fd5b612592868287016123f9565b90945092505060208401356125a68161287c565b809150509250925092565b6000806000604084860312156125c657600080fd5b833567ffffffffffffffff8111156125dd57600080fd5b6125e9868287016123f9565b90945092505060208401356125a681612867565b60006020828403121561260f57600080fd5b81516124628161287c565b60006020828403121561262c57600080fd5b5035919050565b60006020828403121561264557600080fd5b5051919050565b60008060006060848603121561266157600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156126a75785810183015185820160400152820161268b565b818111156126b9576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127545784516001600160a01b03168352938301939183019160010161272f565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156127885761278861283b565b500190565b6000826127aa57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156127c9576127c961283b565b500290565b6000828210156127e0576127e061283b565b500390565b600181811c908216806127f957607f821691505b6020821081141561281a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156128345761283461283b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610e0a57600080fd5b8015158114610e0a57600080fdfea2646970667358221220846f4b97b9d46f90680c7295534ce4bd5f28332101371a7de91ed8a0471c62a164736f6c63430008070033608060405234801561001057600080fd5b5060405161015638038061015683398101604081905261002f916100b7565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b390604401602060405180830381600087803b15801561007857600080fd5b505af115801561008c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b091906100e7565b5050610109565b6000602082840312156100c957600080fd5b81516001600160a01b03811681146100e057600080fd5b9392505050565b6000602082840312156100f957600080fd5b815180151581146100e057600080fd5b603f806101176000396000f3fe6080604052600080fdfea2646970667358221220402c288639ab1a0f73aaa827d5ace1751a961ff277da857c54078cda9a7c47a164736f6c63430008070033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000036161610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000364646400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000048af96a94fd8e5ad45a48803b281df13deaa07da00000000000000000000000048af96a94fd8e5ad45a48803b281df13deaa07da000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000006046f37e5945c0000000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000c8000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

Deployed Bytecode

0x6080604052600436106103395760003560e01c80636ebcf607116101ab578063adc7955d116100f7578063ce0192f911610095578063dd62ed3e1161006f578063dd62ed3e14610970578063e5a6b10f146109b6578063e82bef29146109d6578063f2fde38b146109f657600080fd5b8063ce0192f914610923578063d49d518114610939578063d59864331461094f57600080fd5b8063bd25bf29116100d1578063bd25bf291461089c578063c0aa931e146108cc578063c92d567e146108ec578063cce987d41461090d57600080fd5b8063adc7955d1461084f578063b02d757f14610865578063b9fbc49d1461088657600080fd5b80638718b24f11610164578063a23270d71161013e578063a23270d7146107d8578063a8424861146107f9578063a9059cbb14610819578063aa4bde281461083957600080fd5b80638718b24f146107855780638da5cb5b146107a557806395d89b41146107c357600080fd5b80636ebcf607146106b757806370a08231146106e4578063715018a61461071a5780637abdc1ca1461072f5780637db1342c1461074557806385dc30041461076557600080fd5b8063206c17bb116102855780634188bf5a11610223578063553193ca116101fd578063553193ca1461064b5780635a7ba73c146106615780636108a3db14610682578063697cfc19146106a257600080fd5b80634188bf5a146105eb5780634696caa51461060b5780634d5ce0381461062b57600080fd5b80632f84c3911161025f5780632f84c3911461056f578063313ce5671461058f5780633bfe62ca146105a55780633c11100d146105bb57600080fd5b8063206c17bb1461050157806323b872dd146105395780632dab693f1461055957600080fd5b8063095ea7b3116102f2578063150e4c47116102cc578063150e4c471461049457806315d07d82146104b457806316f2f1a8146104d557806318160ddd146104eb57600080fd5b8063095ea7b31461043f5780630f890b861461045f57806314a432c91461047457600080fd5b806301339c211461034557806301986fad1461035c578063024c2ddd146103a157806303da2b23146103e7578063063be69e1461040857806306fdde031461041d57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035a610a16565b005b34801561036857600080fd5b5061038c610377366004612445565b60176020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156103ad57600080fd5b506103d96103bc366004612486565b601360209081526000928352604080842090915290825290205481565b604051908152602001610398565b3480156103f357600080fd5b5060005461038c90600160c81b900460ff1681565b34801561041457600080fd5b5061035a610a91565b34801561042957600080fd5b50610432610aca565b604051610398919061267a565b34801561044b57600080fd5b5061038c61045a36600461252e565b610b58565b34801561046b57600080fd5b5061035a610b6e565b34801561048057600080fd5b5061035a61048f36600461261a565b610ba7565b3480156104a057600080fd5b5061035a6104af36600461255a565b610bd6565b3480156104c057600080fd5b5060005461038c90600160a01b900460ff1681565b3480156104e157600080fd5b506103d960055481565b3480156104f757600080fd5b506103d960105481565b34801561050d57600080fd5b50601554610521906001600160a01b031681565b6040516001600160a01b039091168152602001610398565b34801561054557600080fd5b5061038c6105543660046124bf565b610c77565b34801561056557600080fd5b506103d960095481565b34801561057b57600080fd5b5061035a61058a366004612445565b610d0e565b34801561059b57600080fd5b506103d9600f5481565b3480156105b157600080fd5b506103d960065481565b3480156105c757600080fd5b5061038c6105d6366004612445565b60166020526000908152604090205460ff1681565b3480156105f757600080fd5b50601854610521906001600160a01b031681565b34801561061757600080fd5b5061035a6106263660046125b1565b610e0d565b34801561063757600080fd5b506103d9610646366004612445565b6112c1565b34801561065757600080fd5b506103d9600c5481565b34801561066d57600080fd5b5060005461038c90600160b01b900460ff1681565b34801561068e57600080fd5b5061035a61069d36600461255a565b611317565b3480156106ae57600080fd5b5061035a61140c565b3480156106c357600080fd5b506103d96106d2366004612445565b60126020526000908152604090205481565b3480156106f057600080fd5b506103d96106ff366004612445565b6001600160a01b031660009081526012602052604090205490565b34801561072657600080fd5b5061035a611445565b34801561073b57600080fd5b506103d960085481565b34801561075157600080fd5b5061035a61076036600461261a565b6114bf565b34801561077157600080fd5b5061035a610780366004612445565b6114ee565b34801561079157600080fd5b50601954610521906001600160a01b031681565b3480156107b157600080fd5b506000546001600160a01b0316610521565b3480156107cf57600080fd5b50610432611552565b3480156107e457600080fd5b5060005461038c90600160c01b900460ff1681565b34801561080557600080fd5b5061035a610814366004612500565b61155f565b34801561082557600080fd5b5061038c61083436600461252e565b6115b4565b34801561084557600080fd5b506103d9600b5481565b34801561085b57600080fd5b506103d960075481565b34801561087157600080fd5b5060005461038c90600160b81b900460ff1681565b34801561089257600080fd5b506103d960045481565b3480156108a857600080fd5b5061038c6108b7366004612445565b60146020526000908152604090205460ff1681565b3480156108d857600080fd5b5061035a6108e736600461261a565b6115c1565b3480156108f857600080fd5b5060005461038c90600160a81b900460ff1681565b34801561091957600080fd5b506103d9600a5481565b34801561092f57600080fd5b506103d960035481565b34801561094557600080fd5b506103d960001981565b34801561095b57600080fd5b5060005461038c90600160d01b900460ff1681565b34801561097c57600080fd5b506103d961098b366004612486565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b3480156109c257600080fd5b50600154610521906001600160a01b031681565b3480156109e257600080fd5b50600254610521906001600160a01b031681565b348015610a0257600080fd5b5061035a610a11366004612445565b6115f0565b6000546001600160a01b03163314610a495760405162461bcd60e51b8152600401610a40906126cf565b60405180910390fd5b600c5415610a8b5760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e481cdd185c9d1959608a1b6044820152606401610a40565b43600c55565b6000546001600160a01b03163314610abb5760405162461bcd60e51b8152600401610a40906126cf565b6000805460ff60c01b19169055565b600d8054610ad7906127e5565b80601f0160208091040260200160405190810160405280929190818152602001828054610b03906127e5565b8015610b505780601f10610b2557610100808354040283529160200191610b50565b820191906000526020600020905b815481529060010190602001808311610b3357829003601f168201915b505050505081565b6000610b653384846116da565b50600192915050565b6000546001600160a01b03163314610b985760405162461bcd60e51b8152600401610a40906126cf565b6000805460ff60d01b19169055565b6000546001600160a01b03163314610bd15760405162461bcd60e51b8152600401610a40906126cf565b600955565b6000546001600160a01b03163314610c005760405162461bcd60e51b8152600401610a40906126cf565b60005b82811015610c71578160176000868685818110610c2257610c22612851565b9050602002016020810190610c379190612445565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610c6981612820565b915050610c03565b50505050565b6000610c8484848461173c565b6001600160a01b038416600090815260136020908152604080832033845290915290205460001914610d04576001600160a01b0384166000908152601360209081526040808320338452909152902054610cdf9083906127ce565b6001600160a01b03851660009081526013602090815260408083203384529091529020555b5060019392505050565b6000546001600160a01b03163314610d385760405162461bcd60e51b8152600401610a40906126cf565b600180546001600160a01b0319166001600160a01b0383811691909117909155601554604080516315ab88c960e31b81529051919092169163ad5c4648916004808301926020929190829003018186803b158015610d9557600080fd5b505afa158015610da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcd9190612469565b6001600160a01b0316816001600160a01b03161415610dfc576000805460ff60a01b1916600160a01b17905550565b6000805460ff60a01b191690555b50565b6000546001600160a01b03163314610e375760405162461bcd60e51b8152600401610a40906126cf565b600054600160d01b900460ff16610e865760405162461bcd60e51b81526020600482015260136024820152721d185e0818da185b99d948191a5cd8589b1959606a1b6044820152606401610a40565b82826000818110610e9957610e99612851565b60200291909101356004555082826001818110610eb857610eb8612851565b60200291909101356005555082826002818110610ed757610ed7612851565b9050602002013560038190555082826003818110610ef757610ef7612851565b60200291909101356007555082826004818110610f1657610f16612851565b60200291909101356008555082826005818110610f3557610f35612851565b905060200201356006819055506109c4600354600454600554610f589190612775565b610f629190612775565b10610f9e5760405162461bcd60e51b815260206004820152600c60248201526b0cccaca40e8dede40d0d2ced60a31b6044820152606401610a40565b6109c4600654600754600854610fb49190612775565b610fbe9190612775565b10610ffa5760405162461bcd60e51b815260206004820152600c60248201526b0cccaca40e8dede40d0d2ced60a31b6044820152606401610a40565b6000600454118061100d57506000600754115b156112bc5760015460405163095ea7b360e01b81526001600160a01b03808416600483015260001960248301528392169063095ea7b390604401602060405180830381600087803b15801561106157600080fd5b505af1158015611075573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109991906125fd565b50601580546001600160a01b0319166001600160a01b03831690811790915530600090815260136020908152604080832084845282528083206000199055805163c45a015560e01b8152905192939263c45a015592600480840193919291829003018186803b15801561110b57600080fd5b505afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111439190612469565b60015460405163e6a4390560e01b81523060048201526001600160a01b0391821660248201529192506000919083169063e6a439059060440160206040518083038186803b15801561119457600080fd5b505afa1580156111a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cc9190612469565b90506001600160a01b038116611264576001546040516364e329cb60e11b81523060048201526001600160a01b0391821660248201529083169063c9c6539690604401602060405180830381600087803b15801561122957600080fd5b505af115801561123d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112619190612469565b90505b601880546001600160a01b0319166001600160a01b039283169081179091556000908152601660209081526040808320805460ff19908116600190811790925596909416835260179091529020805490931617909155505b505050565b6001600160a01b03811660009081526014602052604081205460ff16801561130257506001600160a01b03821660009081526016602052604090205460ff16155b1561130f57506001919050565b506000919050565b6000546001600160a01b031633146113415760405162461bcd60e51b8152600401610a40906126cf565b600054600160b81b900460ff166113905760405162461bcd60e51b81526020600482015260136024820152721c995dd85c99131a5cdd08191a5cd8589b1959606a1b6044820152606401610a40565b60c9821061139d57600080fd5b60005b82811015610c715781601460008686858181106113bf576113bf612851565b90506020020160208101906113d49190612445565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561140581612820565b90506113a0565b6000546001600160a01b031633146114365760405162461bcd60e51b8152600401610a40906126cf565b6000805460ff60c81b19169055565b6000546001600160a01b0316331461146f5760405162461bcd60e51b8152600401610a40906126cf565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b6000546001600160a01b031633146114e95760405162461bcd60e51b8152600401610a40906126cf565b600b55565b6000546001600160a01b031633146115185760405162461bcd60e51b8152600401610a40906126cf565b600280546001600160a01b039092166001600160a01b0319909216821790556000908152601760205260409020805460ff19166001179055565b600e8054610ad7906127e5565b6000546001600160a01b031633146115895760405162461bcd60e51b8152600401610a40906126cf565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6000610b6533848461173c565b6000546001600160a01b031633146115eb5760405162461bcd60e51b8152600401610a40906126cf565b600a55565b6000546001600160a01b0316331461161a5760405162461bcd60e51b8152600401610a40906126cf565b6001600160a01b03811661167f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a40565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526013602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000611747846112c1565b11156117865760405162461bcd60e51b815260206004820152600e60248201526d6973526577617264203e2030202160901b6044820152606401610a40565b6001600160a01b038316600090815260126020526040902054818110156117e25760405162461bcd60e51b815260206004820152601060248201526f0c4c2d8c2dcc6ca9cdee88adcdeeaced60831b6044820152606401610a40565b6001600160a01b03841660009081526017602052604090205460ff1615801561182457506001600160a01b03831660009081526017602052604090205460ff16155b1561185457600061271061183a8361270f6127af565b611844919061278d565b905080831115611852578092505b505b6001600160a01b038416600090815260166020526040812054819060ff168061189557506001600160a01b03851660009081526016602052604090205460ff165b15611b9f576001600160a01b03861660009081526017602052604090205460ff161580156118dc57506001600160a01b03851660009081526017602052604090205460ff16155b15611b7a57600054600160a81b900460ff1680156118fa5750600c54155b1561190457600080fd5b600054600160a81b900460ff1680156119265750600054600160b01b900460ff165b80156119405750600954600c5461193d9190612775565b43105b15611989576001600160a01b03851660009081526016602052604090205460ff16611989576001600160a01b0385166000908152601460205260409020805460ff191660011790555b600054600160c01b900460ff16156119f957600a548411156119f95760405162461bcd60e51b815260206004820152602360248201527f4578636565646564206d6178696d756d207472616e73616374696f6e20766f6c604482015262756d6560e81b6064820152608401610a40565b600054600160c81b900460ff168015611a2a57506001600160a01b03861660009081526016602052604090205460ff165b15611aa5576001600160a01b038516600090815260126020526040902054600b54611a558683612775565b1115611aa35760405162461bcd60e51b815260206004820152601f60248201527f4578636565646564206d6178696d756d2077616c6c65742062616c616e6365006044820152606401610a40565b505b6001600160a01b03851660009081526016602052604090205460ff1615611b7557601854600160a01b900460ff16611b7557306000908152601260205260409020548015611b73576000600854600754600654600454600554600354611b0b9190612775565b611b159190612775565b611b1f9190612775565b611b299190612775565b611b339190612775565b90506000612710611b4483896127af565b611b4f9060026127af565b611b59919061278d565b905082811115611b665750815b611b708183611bb4565b50505b505b600191505b6001600160a01b03851660009081526016602052604090205460ff1615611b9f575060015b611bac86868685856122a5565b505050505050565b6018805460ff60a01b1916600160a01b179055611bd18180612775565b90506000600454600754611be59190612775565b9050600082611bf483866127af565b611bfe919061278d565b90506000600554600854611c129190612775565b9050600084611c2183886127af565b611c2c9060026127af565b611c36919061278d565b90508015611c5657601154611c569030906001600160a01b03168361173c565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c8b57611c8b612851565b6001600160a01b0392831660209182029290920101526001805483519216918391908110611cbb57611cbb612851565b6001600160a01b039092166020928302919091019091015260005460ff600160a01b9091041615611d93576015546001600160a01b031663791ac94783611d02878b6127ce565b611d0c91906127ce565b60008430426040518663ffffffff1660e01b8152600401611d31959493929190612704565b600060405180830381600087803b158015611d4b57600080fd5b505af1925050508015611d5c575060015b611d8e576040517fe2ca28dff25f053218cef44cd4580a8df8e34fd11ee24e2e45b5394750c20d3c90600090a1611e47565b611e47565b6015546001600160a01b0316635c11d79583611daf878b6127ce565b611db991906127ce565b6019546040516001600160e01b031960e085901b168152611dee929160009187916001600160a01b0316904290600401612704565b600060405180830381600087803b158015611e0857600080fd5b505af1925050508015611e19575060015b611e47576040517ffa4626fc78df02cb8fdea85a8af60ad29e2c95f22e2a91c79d99631c288a8b6c90600090a15b611e5185876127ce565b955060008060008060149054906101000a900460ff1615611fc05747925088611e7a89856127af565b611e84919061278d565b9150611e9082846127ce565b90508015611ed4576002546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611ed2573d6000803e3d6000fd5b505b600087118015611ee45750600082115b15611fbb5760155460025460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c4016060604051808303818588803b158015611f5457600080fd5b505af193505050508015611f85575060408051601f3d908101601f19168201909252611f829181019061264c565b60015b611fb7576040517fce671f3a6f00739ccc1874c850866644bdbe23b07cb11974f696e72d1672272390600090a161228c565b5050505b61228c565b6001546019546040516370a0823160e01b81526001600160a01b03918216600482015291169081906370a082319060240160206040518083038186803b15801561200957600080fd5b505afa15801561201d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120419190612633565b93508961204e8a866127af565b612058919061278d565b925061206483856127ce565b915082156120fa576019546040516323b872dd60e01b81526001600160a01b03918216600482015230602482015260448101859052908216906323b872dd90606401602060405180830381600087803b1580156120c057600080fd5b505af11580156120d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f891906125fd565b505b8115612193576019546002546040516323b872dd60e01b81526001600160a01b039283166004820152908216602482015260448101849052908216906323b872dd90606401602060405180830381600087803b15801561215957600080fd5b505af115801561216d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219191906125fd565b505b6000881180156121a35750600083115b1561228a5760155460015460025460405162e8e33760e81b81523060048201526001600160a01b039283166024820152604481018c90526064810187905260006084820181905260a482015290821660c48201524260e482015291169063e8e337009061010401606060405180830381600087803b15801561222457600080fd5b505af1925050508015612254575060408051601f3d908101601f191682019092526122519181019061264c565b60015b612286576040517f0e944a8ae3ee1160b2678930fb103c5ceadb14ecbb4c16e311d7402f7011322c90600090a161228a565b5050505b505b50506018805460ff60a01b191690555050505050505050565b6001600160a01b0385166000908152601260205260409020546122c99084906127ce565b6001600160a01b03861660009081526012602052604081209190915582156123725760008215612317576008546007546006546123069190612775565b6123109190612775565b9050612337565b60055460045460035461232a9190612775565b6123349190612775565b90505b600061271061234683886127af565b612350919061278d565b9050801561236f576123628184612775565b925061236f883083612381565b50505b611bac868661238184886127ce565b6001600160a01b0382166000908152601260205260409020546123a5908290612775565b6001600160a01b0380841660008181526012602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061172f9085815260200190565b60008083601f84011261240b57600080fd5b50813567ffffffffffffffff81111561242357600080fd5b6020830191508360208260051b850101111561243e57600080fd5b9250929050565b60006020828403121561245757600080fd5b813561246281612867565b9392505050565b60006020828403121561247b57600080fd5b815161246281612867565b6000806040838503121561249957600080fd5b82356124a481612867565b915060208301356124b481612867565b809150509250929050565b6000806000606084860312156124d457600080fd5b83356124df81612867565b925060208401356124ef81612867565b929592945050506040919091013590565b6000806040838503121561251357600080fd5b823561251e81612867565b915060208301356124b48161287c565b6000806040838503121561254157600080fd5b823561254c81612867565b946020939093013593505050565b60008060006040848603121561256f57600080fd5b833567ffffffffffffffff81111561258657600080fd5b612592868287016123f9565b90945092505060208401356125a68161287c565b809150509250925092565b6000806000604084860312156125c657600080fd5b833567ffffffffffffffff8111156125dd57600080fd5b6125e9868287016123f9565b90945092505060208401356125a681612867565b60006020828403121561260f57600080fd5b81516124628161287c565b60006020828403121561262c57600080fd5b5035919050565b60006020828403121561264557600080fd5b5051919050565b60008060006060848603121561266157600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156126a75785810183015185820160400152820161268b565b818111156126b9576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127545784516001600160a01b03168352938301939183019160010161272f565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156127885761278861283b565b500190565b6000826127aa57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156127c9576127c961283b565b500290565b6000828210156127e0576127e061283b565b500390565b600181811c908216806127f957607f821691505b6020821081141561281a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156128345761283461283b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610e0a57600080fd5b8015158114610e0a57600080fdfea2646970667358221220846f4b97b9d46f90680c7295534ce4bd5f28332101371a7de91ed8a0471c62a164736f6c63430008070033

Deployed Bytecode Sourcemap

17071:11007:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13263:145;;;;;;;;;;;;;:::i;:::-;;12813:45;;;;;;;;;;-1:-1:-1;12813:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7256:14:1;;7249:22;7231:41;;7219:2;7204:18;12813:45:0;;;;;;;;12592:66;;;;;;;;;;-1:-1:-1;12592:66:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;12097:25:1;;;12085:2;12070:18;12592:66:0;11951:177:1;11764:29:0;;;;;;;;;;-1:-1:-1;11764:29:0;;;;-1:-1:-1;;;11764:29:0;;;;;;13416:87;;;;;;;;;;;;;:::i;12267:27::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;15948:191::-;;;;;;;;;;-1:-1:-1;15948:191:0;;;;;:::i;:::-;;:::i;13610:87::-;;;;;;;;;;;;;:::i;20279:68::-;;;;;;;;;;-1:-1:-1;20279:68:0;;;;;:::i;:::-;;:::i;16366:223::-;;;;;;;;;;-1:-1:-1;16366:223:0;;;;;:::i;:::-;;:::i;11592:25::-;;;;;;;;;;-1:-1:-1;11592:25:0;;;;-1:-1:-1;;;11592:25:0;;;;;;11973:30;;;;;;;;;;;;;;;;12376:35;;;;;;;;;;;;;;;;12717;;;;;;;;;;-1:-1:-1;12717:35:0;;;;-1:-1:-1;;;;;12717:35:0;;;;;;-1:-1:-1;;;;;4702:32:1;;;4684:51;;4672:2;4657:18;12717:35:0;4538:203:1;19867:404:0;;;;;;;;;;-1:-1:-1;19867:404:0;;;;;:::i;:::-;;:::i;12126:21::-;;;;;;;;;;;;;;;;13705:244;;;;;;;;;;-1:-1:-1;13705:244:0;;;;;:::i;:::-;;:::i;12337:32::-;;;;;;;;;;;;;;;;12010:33;;;;;;;;;;;;;;;;12759:45;;;;;;;;;;-1:-1:-1;12759:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12865:24;;;;;;;;;;-1:-1:-1;12865:24:0;;;;-1:-1:-1;;;;;12865:24:0;;;13957:1361;;;;;;;;;;-1:-1:-1;13957:1361:0;;;;;:::i;:::-;;:::i;20355:169::-;;;;;;;;;;-1:-1:-1;20355:169:0;;;;;:::i;:::-;;:::i;12228:30::-;;;;;;;;;;;;;;;;11659:27;;;;;;;;;;-1:-1:-1;11659:27:0;;;;-1:-1:-1;;;11659:27:0;;;;;;16597:326;;;;;;;;;;-1:-1:-1;16597:326:0;;;;;:::i;:::-;;:::i;13511:91::-;;;;;;;;;;;;;:::i;12541:44::-;;;;;;;;;;-1:-1:-1;12541:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;15629:119;;;;;;;;;;-1:-1:-1;15629:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;15722:18:0;15695:7;15722:18;;;:9;:18;;;;;;;15629:119;1556:241;;;;;;;;;;;;;:::i;12086:31::-;;;;;;;;;;;;;;;;13148:107;;;;;;;;;;-1:-1:-1;13148:107:0;;;;;:::i;:::-;;:::i;12898:131::-;;;;;;;;;;-1:-1:-1;12898:131:0;;;;;:::i;:::-;;:::i;17140:41::-;;;;;;;;;;-1:-1:-1;17140:41:0;;;;-1:-1:-1;;;;;17140:41:0;;;2306:79;;;;;;;;;;-1:-1:-1;2344:7:0;2371:6;-1:-1:-1;;;;;2371:6:0;2306:79;;12301:29;;;;;;;;;;;;;:::i;11730:27::-;;;;;;;;;;-1:-1:-1;11730:27:0;;;;-1:-1:-1;;;11730:27:0;;;;;;27920:118;;;;;;;;;;-1:-1:-1;27920:118:0;;;;;:::i;:::-;;:::i;19662:197::-;;;;;;;;;;-1:-1:-1;19662:197:0;;;;;:::i;:::-;;:::i;12191:30::-;;;;;;;;;;;;;;;;12050:29;;;;;;;;;;;;;;;;11693:28;;;;;;;;;;-1:-1:-1;11693:28:0;;;;-1:-1:-1;;;11693:28:0;;;;;;11938;;;;;;;;;;;;;;;;12665:43;;;;;;;;;;-1:-1:-1;12665:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13037:103;;;;;;;;;;-1:-1:-1;13037:103:0;;;;;:::i;:::-;;:::i;11626:26::-;;;;;;;;;;-1:-1:-1;11626:26:0;;;;-1:-1:-1;;;11626:26:0;;;;;;12156:28;;;;;;;;;;;;;;;;11901:30;;;;;;;;;;;;;;;;12491:41;;;;;;;;;;-1:-1:-1;12491:41:0;-1:-1:-1;;12491:41:0;;11800:27;;;;;;;;;;-1:-1:-1;11800:27:0;;;;-1:-1:-1;;;11800:27:0;;;;;;15756:184;;;;;;;;;;-1:-1:-1;15756:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;15905:18:0;;;15873:7;15905:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15756:184;11836:23;;;;;;;;;;-1:-1:-1;11836:23:0;;;;-1:-1:-1;;;;;11836:23:0;;;11866:26;;;;;;;;;;-1:-1:-1;11866:26:0;;;;-1:-1:-1;;;;;11866:26:0;;;1952:273;;;;;;;;;;-1:-1:-1;1952:273:0;;;;;:::i;:::-;;:::i;13263:145::-;2518:6;;-1:-1:-1;;;;;2518:6:0;511:10;2518:22;2510:67;;;;-1:-1:-1;;;2510:67:0;;;;;;;:::i;:::-;;;;;;;;;13319:15:::1;::::0;:20;13311:48:::1;;;::::0;-1:-1:-1;;;13311:48:0;;9319:2:1;13311:48:0::1;::::0;::::1;9301:21:1::0;9358:2;9338:18;;;9331:30;-1:-1:-1;;;9377:18:1;;;9370:45;9432:18;;13311:48:0::1;9117:339:1::0;13311:48:0::1;13388:12;13370:15;:30:::0;13263:145::o;13416:87::-;2518:6;;-1:-1:-1;;;;;2518:6:0;511:10;2518:22;2510:67;;;;-1:-1:-1;;;2510:67:0;;;;;;;:::i;:::-;13490:5:::1;13472:23:::0;;-1:-1:-1;;;;13472:23:0::1;::::0;;13416:87::o;12267:27::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15948:191::-;16050:4;16072:37;16081:10;16093:7;16102:6;16072:8;:37::i;:::-;-1:-1:-1;16127:4:0;15948:191;;;;:::o;13610:87::-;2518:6;;-1:-1:-1;;;;;2518:6:0;511:10;2518:22;2510:67;;;;-1:-1:-1;;;2510:67:0;;;;;;;:::i;:::-;13684:5:::1;13666:23:::0;;-1:-1:-1;;;;13666:23:0::1;::::0;;13610:87::o;20279:68::-;2518:6;;-1:-1:-1;;;;;2518:6:0;511:10;2518:22;2510:67;;;;-1:-1:-1;;;2510:67:0;;;;;;;:::i;:::-;20333:2:::1;:6:::0;20279:68::o;16366:223::-;2518:6;;-1:-1:-1;;;;;2518:6:0;511:10;2518:22;2510:67;;;;-1:-1:-1;;;2510:67:0;;;;;;;:::i;:::-;16487:9:::1;16482:100;16502:15:::0;;::::1;16482:100;;;16564:6;16539:13;:22;16553:4;;16558:1;16553:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16539:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16539:22:0;:31;;-1:-1:-1;;16539:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16519:3;::::1;::::0;::::1;:::i;:::-;;;;16482:100;;;;16366:223:::0;;;:::o;19867:404::-;19999:4;20016:36;20026:6;20034:9;20045:6;20016:9;:36::i;:::-;-1:-1:-1;;;;;20067:19:0;;12530:1;20067:19;;;:11;:19;;;;;;;;20087:10;20067:31;;;;;;;;-1:-1:-1;;20067:38:0;20063:179;;-1:-1:-1;;;;;20173:19:0;;;;;;:11;:19;;;;;;;;20193:10;20173:31;;;;;;;;:57;;20224:6;;20173:57;:::i;:::-;-1:-1:-1;;;;;20122:19:0;;;;;;:11;:19;;;;;;;;20142:10;20122:31;;;;;;;:108;20063:179;-1:-1:-1;20259:4:0;19867:404;;;;;:::o;13705:244::-;2518:6;;-1:-1:-1;;;;;2518:6:0;511:10;2518:22;2510:67;;;;-1:-1:-1;;;2510:67:0;;;;;;;:::i;:::-;13773:8:::1;:20:::0;;-1:-1:-1;;;;;;13773:20:0::1;-1:-1:-1::0;;;;;13773:20:0;;::::1;::::0;;;::::1;::::0;;;13821:11:::1;::::0;:18:::1;::::0;;-1:-1:-1;;;13821:18:0;;;;:11;;;::::1;::::0;:16:::1;::::0;:18:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:11;:18;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13808:31:0::1;:9;-1:-1:-1::0;;;;;13808:31:0::1;;13804:138;;;13856:13;:20:::0;;-1:-1:-1;;;;13856:20:0::1;-1:-1:-1::0;;;13856:20:0::1;::::0;;13705:244;:::o;13804:138::-:1;13925:5;13909:21:::0;;-1:-1:-1;;;;13909:21:0::1;::::0;;13804:138:::1;13705:244:::0;:::o;13957:1361::-;2518:6;;-1:-1:-1;;;;;2518:6:0;511:10;2518:22;2510:67;;;;-1:-1:-1;;;2510:67:0;;;;;;;:::i;:::-;14088:15:::1;::::0;-1:-1:-1;;;14088:15:0;::::1;;;14080:47;;;::::0;-1:-1:-1;;;14080:47:0;;11457:2:1;14080:47:0::1;::::0;::::1;11439:21:1::0;11496:2;11476:18;;;11469:30;-1:-1:-1;;;11515:18:1;;;11508:49;11574:18;;14080:47:0::1;11255:343:1::0;14080:47:0::1;14150:7;;14158:1;14150:10;;;;;;;:::i;:::-;;;::::0;;;::::1;;14138:9;:22:::0;-1:-1:-1;14185:7:0;;14193:1:::1;14185:10:::0;;::::1;;;;;:::i;:::-;;;::::0;;;::::1;;14171:11;:24:::0;-1:-1:-1;14220:7:0;;14228:1:::1;14220:10:::0;;::::1;;;;;:::i;:::-;;;;;;;14206:11;:24;;;;14256:7;;14264:1;14256:10;;;;;;;:::i;:::-;;;::::0;;;::::1;;14243;:23:::0;-1:-1:-1;14292:7:0;;14300:1:::1;14292:10:::0;;::::1;;;;;:::i;:::-;;;::::0;;;::::1;;14277:12;:25:::0;-1:-1:-1;14328:7:0;;14336:1:::1;14328:10:::0;;::::1;;;;;:::i;:::-;;;;;;;14313:12;:25;;;;14399:4;14385:11;;14373:9;;14359:11;;:23;;;;:::i;:::-;:37;;;;:::i;:::-;:44;14351:69;;;::::0;-1:-1:-1;;;14351:69:0;;11116:2:1;14351:69:0::1;::::0;::::1;11098:21:1::0;11155:2;11135:18;;;11128:30;-1:-1:-1;;;11174:18:1;;;11167:42;11226:18;;14351:69:0::1;10914:336:1::0;14351:69:0::1;14496:4;14481:12;;14468:10;;14453:12;;:25;;;;:::i;:::-;:40;;;;:::i;:::-;:47;14431:109;;;::::0;-1:-1:-1;;;14431:109:0;;11116:2:1;14431:109:0::1;::::0;::::1;11098:21:1::0;11155:2;11135:18;;;11128:30;-1:-1:-1;;;11174:18:1;;;11167:42;11226:18;;14431:109:0::1;10914:336:1::0;14431:109:0::1;14569:1;14557:9;;:13;:31;;;;14587:1;14574:10;;:14;14557:31;14553:758;;;14682:8;::::0;14675:50:::1;::::0;-1:-1:-1;;;14675:50:0;;-1:-1:-1;;;;;6392:32:1;;;14675:50:0::1;::::0;::::1;6374:51:1::0;-1:-1:-1;;6441:18:1;;;6434:34;14652:7:0;;14682:8:::1;::::0;14675:24:::1;::::0;6347:18:1;;14675:50:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;14740:11:0::1;:24:::0;;-1:-1:-1;;;;;;14740:24:0::1;-1:-1:-1::0;;;;;14740:24:0;::::1;::::0;;::::1;::::0;;;14799:4:::1;-1:-1:-1::0;14779:26:0;;;:11:::1;:26;::::0;;;;;;;:47;;;;;;;;-1:-1:-1;;14779:53:0;;14915:20;;-1:-1:-1;;;14915:20:0;;;;-1:-1:-1;;14740:24:0;14915:18:::1;::::0;:20:::1;::::0;;::::1;::::0;14779:26;;14915:20;;;;;;14740:24;14915:20;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15019:8;::::0;14984:44:::1;::::0;-1:-1:-1;;;14984:44:0;;15012:4:::1;14984:44;::::0;::::1;4958:34:1::0;-1:-1:-1;;;;;15019:8:0;;::::1;5008:18:1::0;;;5001:43;14847:103:0;;-1:-1:-1;14965:16:0::1;::::0;14984:19;;::::1;::::0;::::1;::::0;4893:18:1;;14984:44:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14965:63:::0;-1:-1:-1;;;;;;15047:22:0;::::1;15043:121;;15139:8;::::0;15101:47:::1;::::0;-1:-1:-1;;;15101:47:0;;15132:4:::1;15101:47;::::0;::::1;4958:34:1::0;-1:-1:-1;;;;;15139:8:0;;::::1;5008:18:1::0;;;5001:43;15101:22:0;;::::1;::::0;::::1;::::0;4893:18:1;;15101:47:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15090:58;;15043:121;15178:9;:20:::0;;-1:-1:-1;;;;;;15178:20:0::1;-1:-1:-1::0;;;;;15178:20:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;15213:23:0;;;:13:::1;:23;::::0;;;;;;;:30;;-1:-1:-1;;15213:30:0;;::::1;-1:-1:-1::0;15213:30:0;;::::1;::::0;;;15258:34;;;::::1;::::0;;:13:::1;:34:::0;;;;;:41;;;;::::1;;::::0;;;-1:-1:-1;14553:758:0::1;13957:1361:::0;;;:::o;20355:169::-;-1:-1:-1;;;;;20432:20:0;;20410:7;20432:20;;;:11;:20;;;;;;;;:47;;;;-1:-1:-1;;;;;;20457:22:0;;;;;;:13;:22;;;;;;;;20456:23;20432:47;20429:88;;;-1:-1:-1;20489:1:0;;20355:169;-1:-1:-1;20355:169:0:o;20429:88::-;-1:-1:-1;20514:1:0;;20355:169;-1:-1:-1;20355:169:0:o;16597:326::-;2518:6;;-1:-1:-1;;;;;2518:6:0;511:10;2518:22;2510:67;;;;-1:-1:-1;;;2510:67:0;;;;;;;:::i;:::-;16720:16:::1;::::0;-1:-1:-1;;;16720:16:0;::::1;;;16712:48;;;::::0;-1:-1:-1;;;16712:48:0;;11805:2:1;16712:48:0::1;::::0;::::1;11787:21:1::0;11844:2;11824:18;;;11817:30;-1:-1:-1;;;11863:18:1;;;11856:49;11922:18;;16712:48:0::1;11603:343:1::0;16712:48:0::1;16798:3;16779:22:::0;::::1;16771:31;;;::::0;::::1;;16818:9;16813:103;16829:20:::0;;::::1;16813:103;;;16899:5;16871:11;:25;16883:9;;16893:1;16883:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16871:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16871:25:0;:33;;-1:-1:-1;;16871:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16851:3:::1;::::0;::::1;:::i;:::-;;;16813:103;;13511:91:::0;2518:6;;-1:-1:-1;;;;;2518:6:0;511:10;2518:22;2510:67;;;;-1:-1:-1;;;2510:67:0;;;;;;;:::i;:::-;13589:5:::1;13569:25:::0;;-1:-1:-1;;;;13569:25:0::1;::::0;;13511:91::o;1556:241::-;2518:6;;-1:-1:-1;;;;;2518:6:0;511:10;2518:22;2510:67;;;;-1:-1:-1;;;2510:67:0;;;;;;;:::i;:::-;1653:6:::1;::::0;;1618:109:::1;::::0;1674:42:::1;::::0;-1:-1:-1;;;;;1653:6:0;;::::1;::::0;1618:109:::1;::::0;::::1;1738:6;:51:::0;;-1:-1:-1;;;;;;1738:51:0::1;1747:42;1738:51;::::0;;1556:241::o;13148:107::-;2518:6;;-1:-1:-1;;;;;2518:6:0;511:10;2518:22;2510:67;;;;-1:-1:-1;;;2510:67:0;;;;;;;:::i;:::-;13222:15:::1;:25:::0;13148:107::o;12898:131::-;2518:6;;-1:-1:-1;;;;;2518:6:0;511:10;2518:22;2510:67;;;;-1:-1:-1;;;2510:67:0;;;;;;;:::i;:::-;12966:11:::1;:18:::0;;-1:-1:-1;;;;;12966:18:0;;::::1;-1:-1:-1::0;;;;;;12966:18:0;;::::1;::::0;::::1;::::0;;:11:::1;12995:19:::0;;;:13:::1;:19;::::0;;;;:26;;-1:-1:-1;;12995:26:0::1;12966:18:::0;12995:26:::1;::::0;;12898:131::o;12301:29::-;;;;;;;:::i;27920:118::-;2518:6;;-1:-1:-1;;;;;2518:6:0;511:10;2518:22;2510:67;;;;-1:-1:-1;;;2510:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28002:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;28002:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27920:118::o;19662:197::-;19767:4;19789:40;19799:10;19811:9;19822:6;19789:9;:40::i;13037:103::-;2518:6;;-1:-1:-1;;;;;2518:6:0;511:10;2518:22;2510:67;;;;-1:-1:-1;;;2510:67:0;;;;;;;:::i;:::-;13109:13:::1;:23:::0;13037:103::o;1952:273::-;2518:6;;-1:-1:-1;;;;;2518:6:0;511:10;2518:22;2510:67;;;;-1:-1:-1;;;2510:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2047:22:0;::::1;2025:110;;;::::0;-1:-1:-1;;;2025:110:0;;8912:2:1;2025:110:0::1;::::0;::::1;8894:21:1::0;8951:2;8931:18;;;8924:30;8990:34;8970:18;;;8963:62;-1:-1:-1;;;9041:18:1;;;9034:36;9087:19;;2025:110:0::1;8710:402:1::0;2025:110:0::1;2172:6;::::0;;2151:38:::1;::::0;-1:-1:-1;;;;;2151:38:0;;::::1;::::0;2172:6;::::1;::::0;2151:38:::1;::::0;::::1;2200:6;:17:::0;;-1:-1:-1;;;;;;2200:17:0::1;-1:-1:-1::0;;;;;2200:17:0;;;::::1;::::0;;;::::1;::::0;;1952:273::o;16147:211::-;-1:-1:-1;;;;;16266:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16318:32;;12097:25:1;;;16318:32:0;;12070:18:1;16318:32:0;;;;;;;;16147:211;;;:::o;20532:2746::-;20670:1;20654:14;20663:4;20654:8;:14::i;:::-;:17;;20646:44;;;;-1:-1:-1;;;20646:44:0;;10008:2:1;20646:44:0;;;9990:21:1;10047:2;10027:18;;;10020:30;-1:-1:-1;;;10066:18:1;;;10059:44;10120:18;;20646:44:0;9806:338:1;20646:44:0;-1:-1:-1;;;;;15722:18:0;;20703:15;15722:18;;;:9;:18;;;;;;20755:17;;;;20747:46;;;;-1:-1:-1;;;20747:46:0;;9663:2:1;20747:46:0;;;9645:21:1;9702:2;9682:18;;;9675:30;-1:-1:-1;;;9721:18:1;;;9714:46;9777:18;;20747:46:0;9461:340:1;20747:46:0;-1:-1:-1;;;;;20811:19:0;;;;;;:13;:19;;;;;;;;20810:20;:42;;;;-1:-1:-1;;;;;;20835:17:0;;;;;;:13;:17;;;;;;;;20834:18;20810:42;20806:222;;;20869:21;20912:5;20894:14;:7;20904:4;20894:14;:::i;:::-;20893:24;;;;:::i;:::-;20869:48;;20945:13;20936:6;:22;20932:85;;;20988:13;20979:22;;20932:85;20854:174;20806:222;-1:-1:-1;;;;;21091:19:0;;21040:12;21091:19;;;:13;:19;;;;;;21040:12;;21091:19;;;:40;;-1:-1:-1;;;;;;21114:17:0;;;;;;:13;:17;;;;;;;;21091:40;21087:2122;;;-1:-1:-1;;;;;21153:19:0;;;;;;:13;:19;;;;;;;;21152:20;:42;;;;-1:-1:-1;;;;;;21177:17:0;;;;;;:13;:17;;;;;;;;21176:18;21152:42;21148:1965;;;21219:14;;-1:-1:-1;;;21219:14:0;;;;:38;;;;-1:-1:-1;21242:15:0;;21237:20;21219:38;21215:101;;;21282:14;;;;21360;;-1:-1:-1;;;21360:14:0;;;;:54;;;;-1:-1:-1;21399:15:0;;-1:-1:-1;;;21399:15:0;;;;21360:54;:114;;;;;21472:2;;21454:15;;:20;;;;:::i;:::-;21439:12;:35;21360:114;21334:272;;;-1:-1:-1;;;;;21544:17:0;;;;;;:13;:17;;;;;;;;21539:47;;-1:-1:-1;;;;;21564:15:0;;;;;;:11;:15;;;;;:22;;-1:-1:-1;;21564:22:0;21582:4;21564:22;;;21539:47;21630:15;;-1:-1:-1;;;21630:15:0;;;;21626:208;;;21714:13;;21704:6;:23;;21670:144;;;;-1:-1:-1;;;21670:144:0;;10351:2:1;21670:144:0;;;10333:21:1;10390:2;10370:18;;;10363:30;10429:34;10409:18;;;10402:62;-1:-1:-1;;;10480:18:1;;;10473:33;10523:19;;21670:144:0;10149:399:1;21670:144:0;21855:17;;-1:-1:-1;;;21855:17:0;;;;:40;;;;-1:-1:-1;;;;;;21876:19:0;;;;;;:13;:19;;;;;;;;21855:40;21852:210;;;-1:-1:-1;;;;;15722:18:0;;21919:10;15722:18;;;:9;:18;;;;;;21991:15;;21977:11;21982:6;15722:18;21977:11;:::i;:::-;:29;;21968:74;;;;-1:-1:-1;;;21968:74:0;;8552:2:1;21968:74:0;;;8534:21:1;8591:2;8571:18;;;8564:30;8630:33;8610:18;;;8603:61;8681:18;;21968:74:0;8350:355:1;21968:74:0;21896:166;21852:210;-1:-1:-1;;;;;22086:17:0;;;;;;:13;:17;;;;;;;;22082:983;;;22133:6;;-1:-1:-1;;;22133:6:0;;;;22128:918;;22217:4;22168:28;15722:18;;;:9;:18;;;;;;22254:24;;22250:773;;22311:15;22562:12;;22516:10;;22468:12;;22423:9;;22376:11;;22329;;:58;;;;:::i;:::-;:103;;;;:::i;:::-;:151;;;;:::i;:::-;:197;;;;:::i;:::-;:245;;;;:::i;:::-;22311:263;-1:-1:-1;22605:27:0;22726:5;22636:49;22311:263;22636:6;:49;:::i;:::-;:86;;22721:1;22636:86;:::i;:::-;22635:96;;;;:::i;:::-;22605:126;;22788:20;22766:19;:42;22762:157;;;-1:-1:-1;22867:20:0;22762:157;22949:46;22966:19;22987:7;22949:16;:46::i;:::-;22280:743;;22250:773;22141:905;22128:918;23093:4;23083:14;;21148:1965;-1:-1:-1;;;;;23131:17:0;;;;;;:13;:17;;;;;;;;23127:71;;;-1:-1:-1;23178:4:0;23127:71;23221:49;23236:4;23242:2;23246:6;23254:7;23263:6;23221:14;:49::i;:::-;20635:2643;;;20532:2746;;;:::o;24325:3366::-;17224:6;:13;;-1:-1:-1;;;;17224:13:0;-1:-1:-1;;;17224:13:0;;;24443:18:::1;24454:7:::0;;24443:18:::1;:::i;:::-;;;24472:13;24501:9;;24488:10;;:22;;;;:::i;:::-;24472:38:::0;-1:-1:-1;24521:16:0::1;24564:7:::0;24541:19:::1;24472:38:::0;24541:11;:19:::1;:::i;:::-;24540:31;;;;:::i;:::-;24521:50;;24584:15;24617:11;;24602:12;;:26;;;;:::i;:::-;24584:44:::0;-1:-1:-1;24639:18:0::1;24690:7:::0;24661:21:::1;24584:44:::0;24661:11;:21:::1;:::i;:::-;:25;::::0;24685:1:::1;24661:25;:::i;:::-;24660:37;;;;:::i;:::-;24639:58:::0;-1:-1:-1;24712:14:0;;24708:96:::1;;24768:11;::::0;24743:49:::1;::::0;24761:4:::1;::::0;-1:-1:-1;;;;;24768:11:0::1;24781:10:::0;24743:9:::1;:49::i;:::-;24840:16;::::0;;24854:1:::1;24840:16:::0;;;;;::::1;::::0;;24816:21:::1;::::0;24840:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24840:16:0::1;24816:40;;24885:4;24867;24872:1;24867:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24867:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;24911:8:::1;::::0;;24901:7;;24911:8;::::1;::::0;24901:4;;24911:8;24901:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;24901:18:0;;::::1;:7;::::0;;::::1;::::0;;;;;;;:18;24934:13:::1;::::0;::::1;-1:-1:-1::0;;;24934:13:0;;::::1;;24930:816;;;24998:11;::::0;-1:-1:-1;;;;;24998:11:0::1;:62;25104:10:::0;25079:22:::1;25093:8:::0;25079:11;:22:::1;:::i;:::-;:35;;;;:::i;:::-;25133:1;25181:4;25212;25252:15;24998:284;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;24994:367;;25299:59;::::0;::::1;::::0;;;::::1;24930:816;;24994:367;24930:816;;;25397:11;::::0;-1:-1:-1;;;;;25397:11:0::1;:65;25506:10:::0;25481:22:::1;25495:8:::0;25481:11;:22:::1;:::i;:::-;:35;;;;:::i;:::-;25586:17;::::0;25397:256:::1;::::0;-1:-1:-1;;;;;;25397:256:0::1;::::0;;;;;;::::1;::::0;;25535:1:::1;::::0;25555:4;;-1:-1:-1;;;;;25586:17:0::1;::::0;25623:15:::1;::::0;25397:256:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;25393:342;;25670:62;::::0;::::1;::::0;;;::::1;25393:342;25758:16;25769:5:::0;25758:16;::::1;:::i;:::-;;;25785:19;25819:14:::0;25848:18:::1;25885:13:::0;::::1;;;;;;;;;;25881:1803;;;25929:21;::::0;-1:-1:-1;25998:7:0;25975:19:::1;25989:5:::0;25929:21;25975:19:::1;:::i;:::-;25974:31;;;;:::i;:::-;25965:40:::0;-1:-1:-1;26033:20:0::1;25965:40:::0;26033:11;:20:::1;:::i;:::-;26020:33:::0;-1:-1:-1;26072:14:0;;26068:96:::1;;26115:11;::::0;26107:41:::1;::::0;-1:-1:-1;;;;;26115:11:0;;::::1;::::0;26107:41;::::1;;;::::0;26137:10;;26115:11:::1;26107:41:::0;26115:11;26107:41;26137:10;26115:11;26107:41;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;26068:96;26193:1;26182:8;:12;:26;;;;;26207:1;26198:6;:10;26182:26;26178:401;;;26271:11;::::0;26452::::1;::::0;26271:249:::1;::::0;-1:-1:-1;;;26271:249:0;;26344:4:::1;26271:249;::::0;::::1;6820:34:1::0;6870:18;;;6863:34;;;26271:11:0::1;6913:18:1::0;;;6906:34;;;6956:18;;;6949:34;-1:-1:-1;;;;;26452:11:0;;::::1;6999:19:1::0;;;6992:44;26486:15:0::1;7052:19:1::0;;;7045:35;26271:11:0;::::1;::::0;:27:::1;::::0;26306:6;;6754:19:1;;26271:249:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;-1:-1:-1::0;26271:249:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;26271:249:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;26267:297;;26537:24;::::0;::::1;::::0;;;::::1;25881:1803;;26267:297;;;;;25881:1803;;;26632:8;::::0;26693:17:::1;::::0;26670:42:::1;::::0;-1:-1:-1;;;26670:42:0;;-1:-1:-1;;;;;26693:17:0;;::::1;26670:42;::::0;::::1;4684:51:1::0;26632:8:0;::::1;::::0;;;26670:14:::1;::::0;4657:18:1;;26670:42:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26656:56:::0;-1:-1:-1;26760:7:0;26737:19:::1;26751:5:::0;26656:56;26737:19:::1;:::i;:::-;26736:31;;;;:::i;:::-;26727:40:::0;-1:-1:-1;26795:20:0::1;26727:40:::0;26795:11;:20:::1;:::i;:::-;26782:33:::0;-1:-1:-1;26836:10:0;;26832:201:::1;;26915:17;::::0;26867:150:::1;::::0;-1:-1:-1;;;26867:150:0;;-1:-1:-1;;;;;26915:17:0;;::::1;26867:150;::::0;::::1;5295:34:1::0;26964:4:0::1;5345:18:1::0;;;5338:43;5397:18;;;5390:34;;;26867:17:0;;::::1;::::0;::::1;::::0;5230:18:1;;26867:150:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26832:201;27053:14:::0;;27049:207:::1;;27136:17;::::0;27177:11:::1;::::0;27088:152:::1;::::0;-1:-1:-1;;;27088:152:0;;-1:-1:-1;;;;;27136:17:0;;::::1;27088:152;::::0;::::1;5295:34:1::0;27177:11:0;;::::1;5345:18:1::0;;;5338:43;5397:18;;;5390:34;;;27088:17:0;;::::1;::::0;::::1;::::0;5230:18:1;;27088:152:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27049:207;27287:1;27276:8;:12;:26;;;;;27301:1;27292:6;:10;27276:26;27272:401;;;27327:11;::::0;;27410:8;27549:11:::1;::::0;27327:290:::1;::::0;-1:-1:-1;;;27327:290:0;;27382:4:::1;27327:290;::::0;::::1;5832:34:1::0;-1:-1:-1;;;;;27410:8:0;;::::1;5882:18:1::0;;;5875:43;5934:18;;;5927:34;;;5977:18;;;5970:34;;;27327:11:0::1;6020:19:1::0;;;6013:35;;;6064:19;;;6057:35;27549:11:0;;::::1;6108:19:1::0;;;6101:44;27583:15:0::1;6161:19:1::0;;;6154:35;27327:11:0;::::1;::::0;:24:::1;::::0;5766:19:1;;27327:290:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;27327:290:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;27327:290:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;27323:335;;27634:21;::::0;::::1;::::0;;;::::1;27323:335;;;;;;;26596:1088;25881:1803;-1:-1:-1::0;;17260:6:0;:14;;-1:-1:-1;;;;17260:14:0;;;-1:-1:-1;;;;;;;;24325:3366:0:o;23286:811::-;-1:-1:-1;;;;;23480:17:0;;;;;;:9;:17;;;;;;:27;;23500:7;;23480:27;:::i;:::-;-1:-1:-1;;;;;23460:17:0;;;;;;:9;:17;;;;;:47;;;;23548:476;;;;23576:15;23610:6;23606:185;;;23675:12;;23662:10;;23647:12;;:25;;;;:::i;:::-;:40;;;;:::i;:::-;23637:50;;23606:185;;;23764:11;;23752:9;;23738:11;;:23;;;;:::i;:::-;:37;;;;:::i;:::-;23728:47;;23606:185;23805:18;23848:5;23827:17;23837:7;23827;:17;:::i;:::-;23826:27;;;;:::i;:::-;23805:48;-1:-1:-1;23872:14:0;;23868:145;;23907:23;23920:10;23907:23;;:::i;:::-;;;23949:48;23963:6;23979:4;23986:10;23949:13;:48::i;:::-;23561:463;;23548:476;24036:53;24050:6;24058:9;24069:19;24079:9;24069:7;:19;:::i;:::-;-1:-1:-1;;;;;27836:13:0;;;;;;:9;:13;;;;;;:23;;27852:7;;27836:23;:::i;:::-;-1:-1:-1;;;;;27820:13:0;;;;;;;:9;:13;;;;;;;:39;;;;27875:29;;;;;;;;;;27896:7;12097:25:1;;12085:2;12070:18;;11951:177;14:367;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:247::-;445:6;498:2;486:9;477:7;473:23;469:32;466:52;;;514:1;511;504:12;466:52;553:9;540:23;572:31;597:5;572:31;:::i;:::-;622:5;386:247;-1:-1:-1;;;386:247:1:o;638:251::-;708:6;761:2;749:9;740:7;736:23;732:32;729:52;;;777:1;774;767:12;729:52;809:9;803:16;828:31;853:5;828:31;:::i;894:388::-;962:6;970;1023:2;1011:9;1002:7;998:23;994:32;991:52;;;1039:1;1036;1029:12;991:52;1078:9;1065:23;1097:31;1122:5;1097:31;:::i;:::-;1147:5;-1:-1:-1;1204:2:1;1189:18;;1176:32;1217:33;1176:32;1217:33;:::i;:::-;1269:7;1259:17;;;894:388;;;;;:::o;1287:456::-;1364:6;1372;1380;1433:2;1421:9;1412:7;1408:23;1404:32;1401:52;;;1449:1;1446;1439:12;1401:52;1488:9;1475:23;1507:31;1532:5;1507:31;:::i;:::-;1557:5;-1:-1:-1;1614:2:1;1599:18;;1586:32;1627:33;1586:32;1627:33;:::i;:::-;1287:456;;1679:7;;-1:-1:-1;;;1733:2:1;1718:18;;;;1705:32;;1287:456::o;1748:382::-;1813:6;1821;1874:2;1862:9;1853:7;1849:23;1845:32;1842:52;;;1890:1;1887;1880:12;1842:52;1929:9;1916:23;1948:31;1973:5;1948:31;:::i;:::-;1998:5;-1:-1:-1;2055:2:1;2040:18;;2027:32;2068:30;2027:32;2068:30;:::i;2135:315::-;2203:6;2211;2264:2;2252:9;2243:7;2239:23;2235:32;2232:52;;;2280:1;2277;2270:12;2232:52;2319:9;2306:23;2338:31;2363:5;2338:31;:::i;:::-;2388:5;2440:2;2425:18;;;;2412:32;;-1:-1:-1;;;2135:315:1:o;2455:566::-;2547:6;2555;2563;2616:2;2604:9;2595:7;2591:23;2587:32;2584:52;;;2632:1;2629;2622:12;2584:52;2672:9;2659:23;2705:18;2697:6;2694:30;2691:50;;;2737:1;2734;2727:12;2691:50;2776:70;2838:7;2829:6;2818:9;2814:22;2776:70;:::i;:::-;2865:8;;-1:-1:-1;2750:96:1;-1:-1:-1;;2950:2:1;2935:18;;2922:32;2963:28;2922:32;2963:28;:::i;:::-;3010:5;3000:15;;;2455:566;;;;;:::o;3026:572::-;3121:6;3129;3137;3190:2;3178:9;3169:7;3165:23;3161:32;3158:52;;;3206:1;3203;3196:12;3158:52;3246:9;3233:23;3279:18;3271:6;3268:30;3265:50;;;3311:1;3308;3301:12;3265:50;3350:70;3412:7;3403:6;3392:9;3388:22;3350:70;:::i;:::-;3439:8;;-1:-1:-1;3324:96:1;-1:-1:-1;;3524:2:1;3509:18;;3496:32;3537:31;3496:32;3537:31;:::i;3603:245::-;3670:6;3723:2;3711:9;3702:7;3698:23;3694:32;3691:52;;;3739:1;3736;3729:12;3691:52;3771:9;3765:16;3790:28;3812:5;3790:28;:::i;3853:180::-;3912:6;3965:2;3953:9;3944:7;3940:23;3936:32;3933:52;;;3981:1;3978;3971:12;3933:52;-1:-1:-1;4004:23:1;;3853:180;-1:-1:-1;3853:180:1:o;4038:184::-;4108:6;4161:2;4149:9;4140:7;4136:23;4132:32;4129:52;;;4177:1;4174;4167:12;4129:52;-1:-1:-1;4200:16:1;;4038:184;-1:-1:-1;4038:184:1:o;4227:306::-;4315:6;4323;4331;4384:2;4372:9;4363:7;4359:23;4355:32;4352:52;;;4400:1;4397;4390:12;4352:52;4429:9;4423:16;4413:26;;4479:2;4468:9;4464:18;4458:25;4448:35;;4523:2;4512:9;4508:18;4502:25;4492:35;;4227:306;;;;;:::o;7748:597::-;7860:4;7889:2;7918;7907:9;7900:21;7950:6;7944:13;7993:6;7988:2;7977:9;7973:18;7966:34;8018:1;8028:140;8042:6;8039:1;8036:13;8028:140;;;8137:14;;;8133:23;;8127:30;8103:17;;;8122:2;8099:26;8092:66;8057:10;;8028:140;;;8186:6;8183:1;8180:13;8177:91;;;8256:1;8251:2;8242:6;8231:9;8227:22;8223:31;8216:42;8177:91;-1:-1:-1;8329:2:1;8308:15;-1:-1:-1;;8304:29:1;8289:45;;;;8336:2;8285:54;;7748:597;-1:-1:-1;;;7748:597:1:o;10553:356::-;10755:2;10737:21;;;10774:18;;;10767:30;10833:34;10828:2;10813:18;;10806:62;10900:2;10885:18;;10553:356::o;12133:980::-;12395:4;12443:3;12432:9;12428:19;12474:6;12463:9;12456:25;12500:2;12538:6;12533:2;12522:9;12518:18;12511:34;12581:3;12576:2;12565:9;12561:18;12554:31;12605:6;12640;12634:13;12671:6;12663;12656:22;12709:3;12698:9;12694:19;12687:26;;12748:2;12740:6;12736:15;12722:29;;12769:1;12779:195;12793:6;12790:1;12787:13;12779:195;;;12858:13;;-1:-1:-1;;;;;12854:39:1;12842:52;;12949:15;;;;12914:12;;;;12890:1;12808:9;12779:195;;;-1:-1:-1;;;;;;;13030:32:1;;;;13025:2;13010:18;;13003:60;-1:-1:-1;;;13094:3:1;13079:19;13072:35;12991:3;12133:980;-1:-1:-1;;;12133:980:1:o;13118:128::-;13158:3;13189:1;13185:6;13182:1;13179:13;13176:39;;;13195:18;;:::i;:::-;-1:-1:-1;13231:9:1;;13118:128::o;13251:217::-;13291:1;13317;13307:132;;13361:10;13356:3;13352:20;13349:1;13342:31;13396:4;13393:1;13386:15;13424:4;13421:1;13414:15;13307:132;-1:-1:-1;13453:9:1;;13251:217::o;13473:168::-;13513:7;13579:1;13575;13571:6;13567:14;13564:1;13561:21;13556:1;13549:9;13542:17;13538:45;13535:71;;;13586:18;;:::i;:::-;-1:-1:-1;13626:9:1;;13473:168::o;13646:125::-;13686:4;13714:1;13711;13708:8;13705:34;;;13719:18;;:::i;:::-;-1:-1:-1;13756:9:1;;13646:125::o;13776:380::-;13855:1;13851:12;;;;13898;;;13919:61;;13973:4;13965:6;13961:17;13951:27;;13919:61;14026:2;14018:6;14015:14;13995:18;13992:38;13989:161;;;14072:10;14067:3;14063:20;14060:1;14053:31;14107:4;14104:1;14097:15;14135:4;14132:1;14125:15;13989:161;;13776:380;;;:::o;14161:135::-;14200:3;-1:-1:-1;;14221:17:1;;14218:43;;;14241:18;;:::i;:::-;-1:-1:-1;14288:1:1;14277:13;;14161:135::o;14301:127::-;14362:10;14357:3;14353:20;14350:1;14343:31;14393:4;14390:1;14383:15;14417:4;14414:1;14407:15;14433:127;14494:10;14489:3;14485:20;14482:1;14475:31;14525:4;14522:1;14515:15;14549:4;14546:1;14539:15;14697:131;-1:-1:-1;;;;;14772:31:1;;14762:42;;14752:70;;14818:1;14815;14808:12;14833:118;14919:5;14912:13;14905:21;14898:5;14895:32;14885:60;;14941:1;14938;14931:12

Swarm Source

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