ETH Price: $2,526.24 (-4.95%)

Token

FineMoon (FINEMOON)
 

Overview

Max Total Supply

1,000,000 FINEMOON

Holders

202

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
69-4-2-0.eth
Balance
4,506.264820716796179722 FINEMOON

Value
$0.00
0xb2dd36cdf01fe1c3c9a9fd69b487d3b1a5e04065
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
finemoon

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-15
*/

/*

Hold $FINEMOON and start earning your $FINE rewards!

Twitter: https://x.com/finemoon_token

Website: https://finemoonerc.com/

Telegram: https://t.me/finemoonentry

*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.21;

/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
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) {
        // Solidity only automatically asserts when dividing by 0
        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;
    }
}

/**
 * ERC20 standard interface.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

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


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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

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

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

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

interface IFineReflections {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
    function gibTokens(address shareholder) external;
}


contract FineReflections is IFineReflections {

    using SafeMath for uint256;
    address _token;

    address public FINE;

    IDEXRouter router;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 30 minutes;
    uint256 public minDistribution = 0 * (10 ** 9);

    uint256 public currentIndex;
    bool initialized;

    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor () {
        _token = msg.sender;
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        FINE = 0x75C97384cA209f915381755c582EC0E2cE88c1BA;
    }
    
    receive() external payable {
        deposit();
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {

        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() public payable override {

        uint256 balanceBefore = IERC20(FINE).balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(FINE);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = IERC20(FINE).balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }
    
    function process(uint256 gas) external override {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        while(gasUsed < gas && iterations < shareholderCount) {

            if(currentIndex >= shareholderCount){ currentIndex = 0; }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) public view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            IERC20(FINE).transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function gibTokens(address shareholder) external override onlyToken {
        distributeDividend(shareholder);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract finemoon is Context, IERC20, Ownable {
    using SafeMath for uint256;

    address public FINE = 0x75C97384cA209f915381755c582EC0E2cE88c1BA; //FINE CA

    string private constant _name = "FineMoon";
    string private constant _symbol = "FINEMOON";
    uint8 private constant _decimals = 18;
    
    uint256 private _totalSupply = 1000000 * (10 ** _decimals);

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

    address private WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    bool public antiBot = true;

    mapping (address => bool) private bots; 
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isDividendExempt;

    uint256 public launchedAt;
    address public lpWallet = DEAD;

    uint256 public buyFee = 85;
    uint256 public sellFee = 85;

    uint256 public toReflections = 50;
    uint256 public toLiquidity = 0;
    uint256 public toMarketing = 50;

    uint256 public allocationSum = 100;

    IDEXRouter public router;
    address public pair;
    address public factory;
    address private tokenOwner;
    address public devWallet = payable(0x9B6E51dB5A8d7E9a419d6586Ad76c48ADe688065);

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingOpen = false;
    
    FineReflections public fineReflections;
    uint256 public fineReflectionsGas = 0;

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    uint256 public maxTx = _totalSupply.div(50);
    uint256 public maxWallet = _totalSupply.div(50);
    uint256 public swapThreshold = _totalSupply.div(400);

    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            
        WETH = router.WETH();
        
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        fineReflections = new FineReflections();
        
        isFeeExempt[owner()] = true;
        isFeeExempt[devWallet] = true;            

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;    

        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[devWallet] = true;  


        _balances[owner()] = _totalSupply;
    
        emit Transfer(address(0), owner(), _totalSupply);
    }

    receive() external payable { }


    function setBots(address[] memory bots_) external onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    //once enabled, cannot be reversed
    function openTrading() external onlyOwner {
        launchedAt = block.number;
        tradingOpen = true;
    }      

    function changeTotalFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {

        buyFee = newBuyFee;
        sellFee = newSellFee;
    } 
    
    function changeFeeAllocation(uint256 newRewardFee, uint256 newLpFee, uint256 newMarketingFee) external onlyOwner {
        toReflections = newRewardFee;
        toLiquidity = newLpFee;
        toMarketing = newMarketingFee;
    }

    function changeTxLimit(uint256 newLimit) external onlyOwner {
        maxTx = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external onlyOwner {
        maxWallet  = newLimit;
    }
    
    function changeIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function changeIsTxLimitExempt(address holder, bool exempt) external onlyOwner {      
        isTxLimitExempt[holder] = exempt;
    }

    function setDevWallet(address payable newDevWallet) external onlyOwner {
        devWallet = payable(newDevWallet);
    }

    function setOwnerWallet(address payable newOwnerWallet) external onlyOwner {
        tokenOwner = newOwnerWallet;
    }     

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit) external onlyOwner {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external onlyOwner {
        fineReflections.setDistributionCriteria(newMinPeriod, newMinDistribution);        
    }

    function delBot(address notbot) external onlyOwner {
        bots[notbot] = false;
    }

    function _setIsDividendExempt(address holder, bool exempt) internal {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            fineReflections.setShare(holder, 0);
        }else{
            fineReflections.setShare(holder, _balances[holder]);
        }
    }

    function setIsDividendExempt(address holder, bool exempt) external onlyOwner {
        _setIsDividendExempt(holder, exempt);
    }

    function changeFineReflectionsGas(uint256 newGas) external onlyOwner {
        fineReflectionsGas = newGas;
    }           

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transfer(sender, recipient, amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (sender!= owner() && recipient!= owner()) require(tradingOpen, "hold ur horses big guy."); //transfers disabled before tradingActive
        require(!bots[sender] && !bots[recipient]);

        if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); }

        require(amount <= maxTx || isTxLimitExempt[sender], "tx");

        if(!isTxLimitExempt[recipient] && antiBot)
        {
            require(_balances[recipient].add(amount) <= maxWallet, "wallet");
        }

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ swapBack(); }

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try fineReflections.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try fineReflections.setShare(recipient, _balances[recipient]) {} catch {} 
        }

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

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }  
    
    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? sellFee : buyFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        approve(address(this), tokenAmount);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            lpWallet,
            block.timestamp
        );
    }

    function swapBack() internal lockTheSwap {
    
        uint256 tokenBalance = _balances[address(this)]; 
        uint256 tokensForLiquidity = tokenBalance.mul(toLiquidity).div(100).div(2);     
        uint256 amountToSwap = tokenBalance.sub(tokensForLiquidity);

        swapTokensForEth(amountToSwap);

        uint256 totalEthBalance = address(this).balance;
        uint256 ethForFINE = totalEthBalance.mul(toReflections).div(100);
        uint256 ethForDev = totalEthBalance.mul(toMarketing).div(100);
        uint256 ethForLiquidity = totalEthBalance.mul(toLiquidity).div(100).div(2);
      
        if (totalEthBalance > 0){
            payable(devWallet).transfer(ethForDev);
        }
        
        try fineReflections.deposit{value: ethForFINE}() {} catch {}
        
        if (tokensForLiquidity > 0){
            addLiquidity(tokensForLiquidity, ethForLiquidity);
        }
    }

    function manualSwapBack() external onlyOwner {
        swapBack();
    }

    function clearStuckEth() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0){          
            payable(devWallet).transfer(contractETHBalance);
        }
    }

    function manualProcessGas(uint256 manualGas) external onlyOwner {
        fineReflections.process(manualGas);
    }

    function checkPendingReflections(address shareholder) external view returns (uint256) {
        return fineReflections.getUnpaidEarnings(shareholder);
    }

    function getFINE() external {
        fineReflections.gibTokens(msg.sender);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"FINE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allocationSum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newLpFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"}],"name":"changeFeeAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newGas","type":"uint256"}],"name":"changeFineReflectionsGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"changeTotalFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"checkPendingReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fineReflections","outputs":[{"internalType":"contract FineReflections","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fineReflectionsGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFINE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"manualGas","type":"uint256"}],"name":"manualProcessGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newDevWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b0319167375c97384ca209f915381755c582ec0e2ce88c1ba179055620000386012600a6200060f565b6200004790620f42406200061f565b6002819055600780546001600160a01b031990811661dead908117909255600880546001600160a81b031916600160a01b179055600e805490911690911790556055600f819055601055603260118190555f60128190556013829055606460145560198054600162ffff0160a01b0319167501009b6e51db5a8d7e9a419d6586ad76c48ade688065179055601b55620000e191906200045f565b601c55600254620000f49060326200045f565b601d5560025462000108906101906200045f565b601e5534801562000117575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015620001bb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e1919062000639565b600680546001600160a01b0319166001600160a01b039283161790556015546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156200023e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000264919062000639565b6006546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015620002b3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d9919062000639565b601680546001600160a01b0319166001600160a01b03928316179055305f90815260046020908152604080832060155490941683529290528190205f199055516200032490620004f4565b604051809103905ff0801580156200033e573d5f803e3d5ffd5b50601a80546001600160a01b0319166001600160a01b039283161790555f805482168152600a60209081526040808320805460ff199081166001908117909255601980548716865283862080548316841790556016805488168752600c86528487208054841685179055308752848720805484168517905560078054891688528588208054851686179055875489168852600b8752858820805485168617905590548816875284872080548416851790555487168652838620805483168417905554861685528285208054909116909117905560025483548516845260038352818420819055835491519081529316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620006d5565b5f620004a883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004b160201b60201c565b90505b92915050565b5f8183620004dd5760405162461bcd60e51b8152600401620004d4919062000668565b60405180910390fd5b505f620004eb8486620006b5565b95945050505050565b6110088062002b8883390190565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200055657815f19048211156200053a576200053a62000502565b808516156200054857918102915b93841c93908002906200051b565b509250929050565b5f826200056e57506001620004ab565b816200057c57505f620004ab565b8160018114620005955760028114620005a057620005c0565b6001915050620004ab565b60ff841115620005b457620005b462000502565b50506001821b620004ab565b5060208310610133831016604e8410600b8410161715620005e5575081810a620004ab565b620005f1838362000516565b805f190482111562000607576200060762000502565b029392505050565b5f620004a860ff8416836200055e565b8082028115828204841417620004ab57620004ab62000502565b5f602082840312156200064a575f80fd5b81516001600160a01b038116811462000661575f80fd5b9392505050565b5f6020808352835180828501525f5b81811015620006955785810183015185820160400152820162000677565b505f604082860101526040601f19601f8301168501019250505092915050565b5f82620006d057634e487b7160e01b5f52601260045260245ffd5b500490565b6124a580620006e35f395ff3fe60806040526004361061037f575f3560e01c80637dfcbe34116101d3578063bb542ef0116100fd578063d920334e1161009d578063f887ea401161006d578063f887ea4014610a2d578063f8b45b0514610a4c578063fabe628314610a61578063ffb54a9914610a80575f80fd5b8063d920334e1461098c578063dd62ed3e146109ab578063f2fde38b146109ef578063f708a64f14610a0e575f80fd5b8063c45a0155116100d8578063c45a01551461092f578063c8d1293d1461094e578063c9567bf914610963578063caa5581b14610977575f80fd5b8063bb542ef0146108e7578063bf56b37114610906578063c1e698411461091b575f80fd5b8063921598dc11610173578063a9059cbb11610143578063a9059cbb1461086b578063b373c7101461088a578063b515566a146108a9578063b91db40c146108c8575f80fd5b8063921598dc146107de57806395d89b41146107fd578063a3a2e89e1461082d578063a8aa1b311461084c575f80fd5b8063893d20e8116101ae578063893d20e8146107755780638b42507f146107915780638da5cb5b146107755780638ea5220f146107bf575f80fd5b80637dfcbe3414610722578063819340311461074257806389291a8f14610761575f80fd5b80633dab5269116102b45780636303516c116102545780637437681e116102245780637437681e146106ba57806375df1305146106cf57806377359aa7146106e45780637db1342c14610703575f80fd5b80636303516c1461062757806366eb37851461065e57806370a0823114610672578063715018a6146106a6575f80fd5b8063454343771161028f57806345434377146105be57806347062402146105d35780634a74bb02146105e8578063571ac8b014610608575f80fd5b80633dab5269146105435780633f4218e0146105625780634355855a14610590575f80fd5b80632b112e491161031f5780632dbea2e1116102fa5780632dbea2e1146104d557806330ca34ee146104f4578063313ce5671461051357806336277cd91461052e575f80fd5b80632b112e491461048d5780632b14ca56146104a15780632d48e896146104b6575f80fd5b806318160ddd1161035a57806318160ddd1461041a5780631f53ac021461042e57806323b872dd1461044f578063273123b71461046e575f80fd5b80630445b6671461038a57806306fdde03146103b2578063095ea7b3146103eb575f80fd5b3661038657005b5f80fd5b348015610395575f80fd5b5061039f601e5481565b6040519081526020015b60405180910390f35b3480156103bd575f80fd5b506040805180820190915260088152672334b732a6b7b7b760c11b60208201525b6040516103a99190612019565b3480156103f6575f80fd5b5061040a610405366004612088565b610aa0565b60405190151581526020016103a9565b348015610425575f80fd5b5060025461039f565b348015610439575f80fd5b5061044d6104483660046120b2565b610b0c565b005b34801561045a575f80fd5b5061040a6104693660046120cd565b610b60565b348015610479575f80fd5b5061044d6104883660046120b2565b610c1e565b348015610498575f80fd5b5061039f610c67565b3480156104ac575f80fd5b5061039f60105481565b3480156104c1575f80fd5b5061044d6104d036600461210b565b610cb7565b3480156104e0575f80fd5b5061044d6104ef36600461212b565b610d45565b3480156104ff575f80fd5b5061044d61050e36600461210b565b610d7c565b34801561051e575f80fd5b50604051601281526020016103a9565b348015610539575f80fd5b5061039f601b5481565b34801561054e575f80fd5b5061044d61055d366004612163565b610db0565b34801561056d575f80fd5b5061040a61057c3660046120b2565b600a6020525f908152604090205460ff1681565b34801561059b575f80fd5b5061040a6105aa3660046120b2565b600c6020525f908152604090205460ff1681565b3480156105c9575f80fd5b5061039f60145481565b3480156105de575f80fd5b5061039f600f5481565b3480156105f3575f80fd5b5060195461040a90600160a81b900460ff1681565b348015610613575f80fd5b5061040a6106223660046120b2565b610dfb565b348015610632575f80fd5b50600e54610646906001600160a01b031681565b6040516001600160a01b0390911681526020016103a9565b348015610669575f80fd5b5061044d610e07565b34801561067d575f80fd5b5061039f61068c3660046120b2565b6001600160a01b03165f9081526003602052604090205490565b3480156106b1575f80fd5b5061044d610e3a565b3480156106c5575f80fd5b5061039f601c5481565b3480156106da575f80fd5b5061039f60135481565b3480156106ef575f80fd5b5061039f6106fe3660046120b2565b610eab565b34801561070e575f80fd5b5061044d61071d36600461217d565b610f17565b34801561072d575f80fd5b5060085461040a90600160a01b900460ff1681565b34801561074d575f80fd5b5061044d61075c36600461217d565b610f45565b34801561076c575f80fd5b5061044d610fcd565b348015610780575f80fd5b505f546001600160a01b0316610646565b34801561079c575f80fd5b5061040a6107ab3660046120b2565b600b6020525f908152604090205460ff1681565b3480156107ca575f80fd5b50601954610646906001600160a01b031681565b3480156107e9575f80fd5b5061044d6107f836600461217d565b611039565b348015610808575f80fd5b506040805180820190915260088152672324a722a6a7a7a760c11b60208201526103de565b348015610838575f80fd5b5061044d610847366004612194565b611067565b348015610857575f80fd5b50601654610646906001600160a01b031681565b348015610876575f80fd5b5061040a610885366004612088565b6110ba565b348015610895575f80fd5b50601a54610646906001600160a01b031681565b3480156108b4575f80fd5b5061044d6108c33660046121db565b6110c6565b3480156108d3575f80fd5b50600154610646906001600160a01b031681565b3480156108f2575f80fd5b5061044d6109013660046120b2565b611154565b348015610911575f80fd5b5061039f600d5481565b348015610926575f80fd5b5061044d61119f565b34801561093a575f80fd5b50601754610646906001600160a01b031681565b348015610959575f80fd5b5061039f60125481565b34801561096e575f80fd5b5061044d6111f9565b348015610982575f80fd5b5061039f60115481565b348015610997575f80fd5b5061044d6109a636600461217d565b61123b565b3480156109b6575f80fd5b5061039f6109c536600461229b565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156109fa575f80fd5b5061044d610a093660046120b2565b611269565b348015610a19575f80fd5b5061044d610a28366004612194565b611350565b348015610a38575f80fd5b50601554610646906001600160a01b031681565b348015610a57575f80fd5b5061039f601d5481565b348015610a6c575f80fd5b5061044d610a7b366004612194565b611383565b348015610a8b575f80fd5b5060195461040a90600160b01b900460ff1681565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610afa9086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b03163314610b3e5760405162461bcd60e51b8152600401610b35906122d2565b60405180910390fd5b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f1914610c09576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600482528381203382529091529190912054610be59184906113d6565b6001600160a01b0385165f9081526004602090815260408083203384529091529020555b610c1484848461140e565b90505b9392505050565b5f546001600160a01b03163314610c475760405162461bcd60e51b8152600401610b35906122d2565b6001600160a01b03165f908152600960205260409020805460ff19169055565b6008546001600160a01b03165f90815260036020526040812054610cb2906007546001600160a01b03165f90815260036020526040902054610cac90600254906118ad565b906118ad565b905090565b5f546001600160a01b03163314610ce05760405162461bcd60e51b8152600401610b35906122d2565b601a546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b5f604051808303815f87803b158015610d2b575f80fd5b505af1158015610d3d573d5f803e3d5ffd5b505050505050565b5f546001600160a01b03163314610d6e5760405162461bcd60e51b8152600401610b35906122d2565b601192909255601255601355565b5f546001600160a01b03163314610da55760405162461bcd60e51b8152600401610b35906122d2565b600f91909155601055565b5f546001600160a01b03163314610dd95760405162461bcd60e51b8152600401610b35906122d2565b60198054921515600160a81b0260ff60a81b1990931692909217909155601e55565b5f610b06825f19610aa0565b5f546001600160a01b03163314610e305760405162461bcd60e51b8152600401610b35906122d2565b610e386118ee565b565b5f546001600160a01b03163314610e635760405162461bcd60e51b8152600401610b35906122d2565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b601a5460405163051fa63360e31b81526001600160a01b0383811660048301525f9216906328fd319890602401602060405180830381865afa158015610ef3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b069190612307565b5f546001600160a01b03163314610f405760405162461bcd60e51b8152600401610b35906122d2565b601d55565b5f546001600160a01b03163314610f6e5760405162461bcd60e51b8152600401610b35906122d2565b601a546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c479906024015f604051808303815f87803b158015610fb4575f80fd5b505af1158015610fc6573d5f803e3d5ffd5b5050505050565b5f546001600160a01b03163314610ff65760405162461bcd60e51b8152600401610b35906122d2565b478015611036576019546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611034573d5f803e3d5ffd5b505b50565b5f546001600160a01b031633146110625760405162461bcd60e51b8152600401610b35906122d2565b601b55565b5f546001600160a01b031633146110905760405162461bcd60e51b8152600401610b35906122d2565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f610c1733848461140e565b5f546001600160a01b031633146110ef5760405162461bcd60e51b8152600401610b35906122d2565b5f5b815181101561103457600160095f8484815181106111115761111161231e565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061114c81612346565b9150506110f1565b5f546001600160a01b0316331461117d5760405162461bcd60e51b8152600401610b35906122d2565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b601a5460405163bd14ae2760e01b81523360048201526001600160a01b039091169063bd14ae27906024015f604051808303815f87803b1580156111e1575f80fd5b505af11580156111f3573d5f803e3d5ffd5b50505050565b5f546001600160a01b031633146112225760405162461bcd60e51b8152600401610b35906122d2565b43600d556019805460ff60b01b1916600160b01b179055565b5f546001600160a01b031633146112645760405162461bcd60e51b8152600401610b35906122d2565b601c55565b5f546001600160a01b031633146112925760405162461bcd60e51b8152600401610b35906122d2565b6001600160a01b0381166112f75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b35565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146113795760405162461bcd60e51b8152600401610b35906122d2565b6110348282611a70565b5f546001600160a01b031633146113ac5760405162461bcd60e51b8152600401610b35906122d2565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f81848411156113f95760405162461bcd60e51b8152600401610b359190612019565b505f611405848661235e565b95945050505050565b5f80546001600160a01b0385811691161480159061143957505f546001600160a01b03848116911614155b1561149757601954600160b01b900460ff166114975760405162461bcd60e51b815260206004820152601760248201527f686f6c6420757220686f7273657320626967206775792e0000000000000000006044820152606401610b35565b6001600160a01b0384165f9081526009602052604090205460ff161580156114d757506001600160a01b0383165f9081526009602052604090205460ff16155b6114df575f80fd5b601954600160a01b900460ff1615611503576114fc848484611b78565b9050610c17565b601c548211158061152b57506001600160a01b0384165f908152600b602052604090205460ff165b61155c5760405162461bcd60e51b81526020600482015260026024820152610e8f60f31b6044820152606401610b35565b6001600160a01b0383165f908152600b602052604090205460ff1615801561158d5750600854600160a01b900460ff165b156115ee57601d546001600160a01b0384165f908152600360205260409020546115b79084611c5b565b11156115ee5760405162461bcd60e51b81526020600482015260066024820152651dd85b1b195d60d21b6044820152606401610b35565b6016546001600160a01b031633148015906116135750601954600160a01b900460ff16155b80156116285750601954600160a81b900460ff165b80156116445750601e54305f9081526003602052604090205410155b15611651576116516118ee565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600390915291909120546116a29184906113d6565b6001600160a01b0385165f90815260036020908152604080832093909355600a90529081205460ff161580156116f057506001600160a01b0384165f908152600a602052604090205460ff16155b6116fa5782611705565b611705858585611cb9565b6001600160a01b0385165f9081526003602052604090205490915061172a9082611c5b565b6001600160a01b038086165f908152600360209081526040808320949094559188168152600c909152205460ff166117c957601a546001600160a01b038681165f8181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044015f604051808303815f87803b1580156117b6575f80fd5b505af19250505080156117c7575060015b505b6001600160a01b0384165f908152600c602052604090205460ff1661185557601a546001600160a01b038581165f8181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044015f604051808303815f87803b158015611842575f80fd5b505af1925050508015611853575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161189a91815260200190565b60405180910390a3506001949350505050565b5f610c1783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113d6565b6019805460ff60a01b1916600160a01b179055305f908152600360205260408120546012549091906119339060029061192d9060649082908790611d78565b90611df6565b90505f61194083836118ad565b905061194b81611e37565b5f4790505f61196a606461192d60115485611d7890919063ffffffff16565b90505f611987606461192d60135486611d7890919063ffffffff16565b90505f6119a9600261192d606461192d60125489611d7890919063ffffffff16565b905083156119ea576019546040516001600160a01b039091169083156108fc029084905f818181858888f193505050501580156119e8573d5f803e3d5ffd5b505b601a5f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004015f604051808303818588803b158015611a37575f80fd5b505af193505050508015611a49575060015b508515611a5a57611a5a8682611f5b565b50506019805460ff60a01b191690555050505050565b6001600160a01b0382163014801590611a9757506016546001600160a01b03838116911614155b611a9f575f80fd5b6001600160a01b0382165f908152600c60205260409020805460ff19168215801591909117909155611b3057601a54604051630a5b654b60e11b81526001600160a01b0384811660048301525f6024830152909116906314b6ca96906044015f604051808303815f87803b158015611b15575f80fd5b505af1158015611b27573d5f803e3d5ffd5b50505050611034565b601a546001600160a01b038381165f8181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610d14565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600390915291822054611bc89184906113d6565b6001600160a01b038086165f908152600360205260408082209390935590851681522054611bf69083611c5b565b6001600160a01b038085165f8181526003602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c499086815260200190565b60405180910390a35060019392505050565b5f80611c678385612371565b905083811015610c175760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b35565b6016545f9081906001600160a01b03858116911614611cda57600f54611cde565b6010545b90505f611cf0606461192d8685611d78565b305f90815260036020526040902054909150611d0c9082611c5b565b305f81815260036020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d5c9085815260200190565b60405180910390a3611d6e84826118ad565b9695505050505050565b5f825f03611d8757505f610b06565b5f611d928385612384565b905082611d9f858361239b565b14610c175760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b35565b5f610c1783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611fed565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611e6a57611e6a61231e565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ec1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ee591906123ba565b81600181518110611ef857611ef861231e565b60200260200101906001600160a01b031690816001600160a01b031681525050611f223083610aa0565b5060155460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d149085905f908690309042906004016123d5565b601554600e5460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611fc8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fc69190612444565b5f818361200d5760405162461bcd60e51b8152600401610b359190612019565b505f611405848661239b565b5f6020808352835180828501525f5b8181101561204457858101830151858201604001528201612028565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611036575f80fd5b803561208381612064565b919050565b5f8060408385031215612099575f80fd5b82356120a481612064565b946020939093013593505050565b5f602082840312156120c2575f80fd5b8135610c1781612064565b5f805f606084860312156120df575f80fd5b83356120ea81612064565b925060208401356120fa81612064565b929592945050506040919091013590565b5f806040838503121561211c575f80fd5b50508035926020909101359150565b5f805f6060848603121561213d575f80fd5b505081359360208301359350604090920135919050565b80358015158114612083575f80fd5b5f8060408385031215612174575f80fd5b6120a483612154565b5f6020828403121561218d575f80fd5b5035919050565b5f80604083850312156121a5575f80fd5b82356121b081612064565b91506121be60208401612154565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f60208083850312156121ec575f80fd5b823567ffffffffffffffff80821115612203575f80fd5b818501915085601f830112612216575f80fd5b813581811115612228576122286121c7565b8060051b604051601f19603f8301168101818110858211171561224d5761224d6121c7565b60405291825284820192508381018501918883111561226a575f80fd5b938501935b8285101561228f5761228085612078565b8452938501939285019261226f565b98975050505050505050565b5f80604083850312156122ac575f80fd5b82356122b781612064565b915060208301356122c781612064565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215612317575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161235757612357612332565b5060010190565b81810381811115610b0657610b06612332565b80820180821115610b0657610b06612332565b8082028115828204841417610b0657610b06612332565b5f826123b557634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156123ca575f80fd5b8151610c1781612064565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156124235784516001600160a01b0316835293830193918301916001016123fe565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612456575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220ca29fc644173bfd7ea963530d514d3e331093d0bf0b6c39c4834119e94efd5c264736f6c6343000815003360806040526ec097ce7bc90715b34b9f1000000000600b55610708600c555f600d5534801561002c575f80fd5b505f80546001600160a01b03199081163317909155600280548216737a250d5630b4cf539739df2c5dacb4c659f2488d179055600180549091167375c97384ca209f915381755c582ec0e2ce88c1ba179055610f7d8061008b5f395ff3fe6080604052600436106100fd575f3560e01c8063997664d711610092578063d0e30db011610062578063d0e30db0146102c3578063e2d2e219146102cb578063efca2eed146102e0578063ffb2c479146102f5578063ffd49c8414610314575f80fd5b8063997664d714610203578063b91db40c14610218578063bd14ae271461024f578063ce7c2ac21461026e575f80fd5b80632d48e896116100cd5780632d48e8961461018b5780633a98ef39146101aa5780634fab0ae8146101bf5780638c21cd52146101d4575f80fd5b806311ce023d1461011057806314b6ca961461013857806326987b601461015757806328fd31981461016c575f80fd5b3661010c5761010a610329565b005b5f80fd5b34801561011b575f80fd5b50610125600b5481565b6040519081526020015b60405180910390f35b348015610143575f80fd5b5061010a610152366004610d17565b610592565b348015610162575f80fd5b50610125600e5481565b348015610177575f80fd5b50610125610186366004610d41565b610700565b348015610196575f80fd5b5061010a6101a5366004610d5c565b610786565b3480156101b5575f80fd5b5061012560075481565b3480156101ca575f80fd5b50610125600d5481565b3480156101df575f80fd5b506101f36101ee366004610d41565b6107a6565b604051901515815260200161012f565b34801561020e575f80fd5b5061012560085481565b348015610223575f80fd5b50600154610237906001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b34801561025a575f80fd5b5061010a610269366004610d41565b6107eb565b348015610279575f80fd5b506102a8610288366004610d41565b60066020525f908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161012f565b61010a610329565b3480156102d6575f80fd5b50610125600a5481565b3480156102eb575f80fd5b5061012560095481565b348015610300575f80fd5b5061010a61030f366004610d7c565b61080c565b34801561031f575f80fd5b50610125600c5481565b6001546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa15801561036f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103939190610d93565b6040805160028082526060820183529293505f9290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156103ff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104239190610daa565b815f8151811061043557610435610dc5565b6001600160a01b039283166020918202929092010152600180548351921691839190811061046557610465610dc5565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906104aa905f90869030904290600401610dd9565b5f604051808303818588803b1580156104c1575f80fd5b505af11580156104d3573d5f803e3d5ffd5b50506001546040516370a0823160e01b81523060048201525f945061055093508692506001600160a01b03909116906370a0823190602401602060405180830381865afa158015610526573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061054a9190610d93565b906108f2565b600854909150610560908261093a565b600855600754600b5461058a916105819161057b908561099d565b90610a1b565b600a549061093a565b600a55505050565b5f546001600160a01b031633146105a7575f80fd5b6001600160a01b0382165f90815260066020526040902054156105cd576105cd82610a5c565b5f811180156105f157506001600160a01b0382165f90815260066020526040902054155b1561065657600380546001600160a01b0384165f818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319169091179055610688565b8015801561067a57506001600160a01b0382165f9081526006602052604090205415155b156106885761068882610b73565b6001600160a01b0382165f908152600660205260409020546007546106b89183916106b2916108f2565b9061093a565b6007556001600160a01b0382165f9081526006602052604090208190556106de81610c83565b6001600160a01b039092165f9081526006602052604090206001019190915550565b6001600160a01b0381165f90815260066020526040812054810361072557505f919050565b6001600160a01b0382165f9081526006602052604081205461074690610c83565b6001600160a01b0384165f9081526006602052604090206001015490915080821161077457505f9392505050565b61077e82826108f2565b949350505050565b5f546001600160a01b0316331461079b575f80fd5b600c91909155600d55565b600c546001600160a01b0382165f90815260056020526040812054909142916107cf9190610e55565b1080156107e55750600d546107e383610700565b115b92915050565b5f546001600160a01b03163314610800575f80fd5b61080981610a5c565b50565b6003545f81900361081b575050565b5f805f5a90505b848210801561083057508383105b156108eb5783600e5410610843575f600e555b6108746003600e548154811061085b5761085b610dc5565b5f918252602090912001546001600160a01b03166107a6565b156108aa576108aa6003600e548154811061089157610891610dc5565b5f918252602090912001546001600160a01b0316610a5c565b6108bf6108b85a83906108f2565b839061093a565b91505a600e80549192505f6108d383610e68565b919050555082806108e390610e68565b935050610822565b5050505050565b5f61093383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c9f565b9392505050565b5f806109468385610e55565b9050838110156109335760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b5f825f036109ac57505f6107e5565b5f6109b78385610e80565b9050826109c48583610e97565b146109335760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610994565b5f61093383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610cd7565b6001600160a01b0381165f908152600660205260408120549003610a7d5750565b5f610a8782610700565b90508015610b6f57600954610a9c908261093a565b60095560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303815f875af1158015610aef573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b139190610eb6565b506001600160a01b0382165f9081526005602090815260408083204290556006909152902060020154610b46908261093a565b6001600160a01b0383165f9081526006602052604090206002810191909155546106de90610c83565b5050565b60038054610b8390600190610ed5565b81548110610b9357610b93610dc5565b5f9182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110610bd057610bd0610dc5565b5f91825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291610c1b90600190610ed5565b81548110610c2b57610c2b610dc5565b5f9182526020808320909101546001600160a01b031683528201929092526040019020556003805480610c6057610c60610ee8565b5f8281526020902081015f1990810180546001600160a01b031916905501905550565b5f6107e5600b5461057b600a548561099d90919063ffffffff16565b5f8184841115610cc25760405162461bcd60e51b81526004016109949190610efc565b505f610cce8486610ed5565b95945050505050565b5f8183610cf75760405162461bcd60e51b81526004016109949190610efc565b505f610cce8486610e97565b6001600160a01b0381168114610809575f80fd5b5f8060408385031215610d28575f80fd5b8235610d3381610d03565b946020939093013593505050565b5f60208284031215610d51575f80fd5b813561093381610d03565b5f8060408385031215610d6d575f80fd5b50508035926020909101359150565b5f60208284031215610d8c575f80fd5b5035919050565b5f60208284031215610da3575f80fd5b5051919050565b5f60208284031215610dba575f80fd5b815161093381610d03565b634e487b7160e01b5f52603260045260245ffd5b5f60808201868352602060808185015281875180845260a08601915082890193505f5b81811015610e215784516001600160a01b031683529383019391830191600101610dfc565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156107e5576107e5610e41565b5f60018201610e7957610e79610e41565b5060010190565b80820281158282048414176107e5576107e5610e41565b5f82610eb157634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610ec6575f80fd5b81518015158114610933575f80fd5b818103818111156107e5576107e5610e41565b634e487b7160e01b5f52603160045260245ffd5b5f6020808352835180828501525f5b81811015610f2757858101830151858201604001528201610f0b565b505f604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220d0dc2898cc5d20482a21331cc1a99f846901ab7dedf23ef4fd0e370e460e57ee64736f6c63430008150033

Deployed Bytecode

0x60806040526004361061037f575f3560e01c80637dfcbe34116101d3578063bb542ef0116100fd578063d920334e1161009d578063f887ea401161006d578063f887ea4014610a2d578063f8b45b0514610a4c578063fabe628314610a61578063ffb54a9914610a80575f80fd5b8063d920334e1461098c578063dd62ed3e146109ab578063f2fde38b146109ef578063f708a64f14610a0e575f80fd5b8063c45a0155116100d8578063c45a01551461092f578063c8d1293d1461094e578063c9567bf914610963578063caa5581b14610977575f80fd5b8063bb542ef0146108e7578063bf56b37114610906578063c1e698411461091b575f80fd5b8063921598dc11610173578063a9059cbb11610143578063a9059cbb1461086b578063b373c7101461088a578063b515566a146108a9578063b91db40c146108c8575f80fd5b8063921598dc146107de57806395d89b41146107fd578063a3a2e89e1461082d578063a8aa1b311461084c575f80fd5b8063893d20e8116101ae578063893d20e8146107755780638b42507f146107915780638da5cb5b146107755780638ea5220f146107bf575f80fd5b80637dfcbe3414610722578063819340311461074257806389291a8f14610761575f80fd5b80633dab5269116102b45780636303516c116102545780637437681e116102245780637437681e146106ba57806375df1305146106cf57806377359aa7146106e45780637db1342c14610703575f80fd5b80636303516c1461062757806366eb37851461065e57806370a0823114610672578063715018a6146106a6575f80fd5b8063454343771161028f57806345434377146105be57806347062402146105d35780634a74bb02146105e8578063571ac8b014610608575f80fd5b80633dab5269146105435780633f4218e0146105625780634355855a14610590575f80fd5b80632b112e491161031f5780632dbea2e1116102fa5780632dbea2e1146104d557806330ca34ee146104f4578063313ce5671461051357806336277cd91461052e575f80fd5b80632b112e491461048d5780632b14ca56146104a15780632d48e896146104b6575f80fd5b806318160ddd1161035a57806318160ddd1461041a5780631f53ac021461042e57806323b872dd1461044f578063273123b71461046e575f80fd5b80630445b6671461038a57806306fdde03146103b2578063095ea7b3146103eb575f80fd5b3661038657005b5f80fd5b348015610395575f80fd5b5061039f601e5481565b6040519081526020015b60405180910390f35b3480156103bd575f80fd5b506040805180820190915260088152672334b732a6b7b7b760c11b60208201525b6040516103a99190612019565b3480156103f6575f80fd5b5061040a610405366004612088565b610aa0565b60405190151581526020016103a9565b348015610425575f80fd5b5060025461039f565b348015610439575f80fd5b5061044d6104483660046120b2565b610b0c565b005b34801561045a575f80fd5b5061040a6104693660046120cd565b610b60565b348015610479575f80fd5b5061044d6104883660046120b2565b610c1e565b348015610498575f80fd5b5061039f610c67565b3480156104ac575f80fd5b5061039f60105481565b3480156104c1575f80fd5b5061044d6104d036600461210b565b610cb7565b3480156104e0575f80fd5b5061044d6104ef36600461212b565b610d45565b3480156104ff575f80fd5b5061044d61050e36600461210b565b610d7c565b34801561051e575f80fd5b50604051601281526020016103a9565b348015610539575f80fd5b5061039f601b5481565b34801561054e575f80fd5b5061044d61055d366004612163565b610db0565b34801561056d575f80fd5b5061040a61057c3660046120b2565b600a6020525f908152604090205460ff1681565b34801561059b575f80fd5b5061040a6105aa3660046120b2565b600c6020525f908152604090205460ff1681565b3480156105c9575f80fd5b5061039f60145481565b3480156105de575f80fd5b5061039f600f5481565b3480156105f3575f80fd5b5060195461040a90600160a81b900460ff1681565b348015610613575f80fd5b5061040a6106223660046120b2565b610dfb565b348015610632575f80fd5b50600e54610646906001600160a01b031681565b6040516001600160a01b0390911681526020016103a9565b348015610669575f80fd5b5061044d610e07565b34801561067d575f80fd5b5061039f61068c3660046120b2565b6001600160a01b03165f9081526003602052604090205490565b3480156106b1575f80fd5b5061044d610e3a565b3480156106c5575f80fd5b5061039f601c5481565b3480156106da575f80fd5b5061039f60135481565b3480156106ef575f80fd5b5061039f6106fe3660046120b2565b610eab565b34801561070e575f80fd5b5061044d61071d36600461217d565b610f17565b34801561072d575f80fd5b5060085461040a90600160a01b900460ff1681565b34801561074d575f80fd5b5061044d61075c36600461217d565b610f45565b34801561076c575f80fd5b5061044d610fcd565b348015610780575f80fd5b505f546001600160a01b0316610646565b34801561079c575f80fd5b5061040a6107ab3660046120b2565b600b6020525f908152604090205460ff1681565b3480156107ca575f80fd5b50601954610646906001600160a01b031681565b3480156107e9575f80fd5b5061044d6107f836600461217d565b611039565b348015610808575f80fd5b506040805180820190915260088152672324a722a6a7a7a760c11b60208201526103de565b348015610838575f80fd5b5061044d610847366004612194565b611067565b348015610857575f80fd5b50601654610646906001600160a01b031681565b348015610876575f80fd5b5061040a610885366004612088565b6110ba565b348015610895575f80fd5b50601a54610646906001600160a01b031681565b3480156108b4575f80fd5b5061044d6108c33660046121db565b6110c6565b3480156108d3575f80fd5b50600154610646906001600160a01b031681565b3480156108f2575f80fd5b5061044d6109013660046120b2565b611154565b348015610911575f80fd5b5061039f600d5481565b348015610926575f80fd5b5061044d61119f565b34801561093a575f80fd5b50601754610646906001600160a01b031681565b348015610959575f80fd5b5061039f60125481565b34801561096e575f80fd5b5061044d6111f9565b348015610982575f80fd5b5061039f60115481565b348015610997575f80fd5b5061044d6109a636600461217d565b61123b565b3480156109b6575f80fd5b5061039f6109c536600461229b565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156109fa575f80fd5b5061044d610a093660046120b2565b611269565b348015610a19575f80fd5b5061044d610a28366004612194565b611350565b348015610a38575f80fd5b50601554610646906001600160a01b031681565b348015610a57575f80fd5b5061039f601d5481565b348015610a6c575f80fd5b5061044d610a7b366004612194565b611383565b348015610a8b575f80fd5b5060195461040a90600160b01b900460ff1681565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610afa9086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b03163314610b3e5760405162461bcd60e51b8152600401610b35906122d2565b60405180910390fd5b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f1914610c09576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600482528381203382529091529190912054610be59184906113d6565b6001600160a01b0385165f9081526004602090815260408083203384529091529020555b610c1484848461140e565b90505b9392505050565b5f546001600160a01b03163314610c475760405162461bcd60e51b8152600401610b35906122d2565b6001600160a01b03165f908152600960205260409020805460ff19169055565b6008546001600160a01b03165f90815260036020526040812054610cb2906007546001600160a01b03165f90815260036020526040902054610cac90600254906118ad565b906118ad565b905090565b5f546001600160a01b03163314610ce05760405162461bcd60e51b8152600401610b35906122d2565b601a546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b5f604051808303815f87803b158015610d2b575f80fd5b505af1158015610d3d573d5f803e3d5ffd5b505050505050565b5f546001600160a01b03163314610d6e5760405162461bcd60e51b8152600401610b35906122d2565b601192909255601255601355565b5f546001600160a01b03163314610da55760405162461bcd60e51b8152600401610b35906122d2565b600f91909155601055565b5f546001600160a01b03163314610dd95760405162461bcd60e51b8152600401610b35906122d2565b60198054921515600160a81b0260ff60a81b1990931692909217909155601e55565b5f610b06825f19610aa0565b5f546001600160a01b03163314610e305760405162461bcd60e51b8152600401610b35906122d2565b610e386118ee565b565b5f546001600160a01b03163314610e635760405162461bcd60e51b8152600401610b35906122d2565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b601a5460405163051fa63360e31b81526001600160a01b0383811660048301525f9216906328fd319890602401602060405180830381865afa158015610ef3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b069190612307565b5f546001600160a01b03163314610f405760405162461bcd60e51b8152600401610b35906122d2565b601d55565b5f546001600160a01b03163314610f6e5760405162461bcd60e51b8152600401610b35906122d2565b601a546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c479906024015f604051808303815f87803b158015610fb4575f80fd5b505af1158015610fc6573d5f803e3d5ffd5b5050505050565b5f546001600160a01b03163314610ff65760405162461bcd60e51b8152600401610b35906122d2565b478015611036576019546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611034573d5f803e3d5ffd5b505b50565b5f546001600160a01b031633146110625760405162461bcd60e51b8152600401610b35906122d2565b601b55565b5f546001600160a01b031633146110905760405162461bcd60e51b8152600401610b35906122d2565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f610c1733848461140e565b5f546001600160a01b031633146110ef5760405162461bcd60e51b8152600401610b35906122d2565b5f5b815181101561103457600160095f8484815181106111115761111161231e565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061114c81612346565b9150506110f1565b5f546001600160a01b0316331461117d5760405162461bcd60e51b8152600401610b35906122d2565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b601a5460405163bd14ae2760e01b81523360048201526001600160a01b039091169063bd14ae27906024015f604051808303815f87803b1580156111e1575f80fd5b505af11580156111f3573d5f803e3d5ffd5b50505050565b5f546001600160a01b031633146112225760405162461bcd60e51b8152600401610b35906122d2565b43600d556019805460ff60b01b1916600160b01b179055565b5f546001600160a01b031633146112645760405162461bcd60e51b8152600401610b35906122d2565b601c55565b5f546001600160a01b031633146112925760405162461bcd60e51b8152600401610b35906122d2565b6001600160a01b0381166112f75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b35565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146113795760405162461bcd60e51b8152600401610b35906122d2565b6110348282611a70565b5f546001600160a01b031633146113ac5760405162461bcd60e51b8152600401610b35906122d2565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f81848411156113f95760405162461bcd60e51b8152600401610b359190612019565b505f611405848661235e565b95945050505050565b5f80546001600160a01b0385811691161480159061143957505f546001600160a01b03848116911614155b1561149757601954600160b01b900460ff166114975760405162461bcd60e51b815260206004820152601760248201527f686f6c6420757220686f7273657320626967206775792e0000000000000000006044820152606401610b35565b6001600160a01b0384165f9081526009602052604090205460ff161580156114d757506001600160a01b0383165f9081526009602052604090205460ff16155b6114df575f80fd5b601954600160a01b900460ff1615611503576114fc848484611b78565b9050610c17565b601c548211158061152b57506001600160a01b0384165f908152600b602052604090205460ff165b61155c5760405162461bcd60e51b81526020600482015260026024820152610e8f60f31b6044820152606401610b35565b6001600160a01b0383165f908152600b602052604090205460ff1615801561158d5750600854600160a01b900460ff165b156115ee57601d546001600160a01b0384165f908152600360205260409020546115b79084611c5b565b11156115ee5760405162461bcd60e51b81526020600482015260066024820152651dd85b1b195d60d21b6044820152606401610b35565b6016546001600160a01b031633148015906116135750601954600160a01b900460ff16155b80156116285750601954600160a81b900460ff165b80156116445750601e54305f9081526003602052604090205410155b15611651576116516118ee565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600390915291909120546116a29184906113d6565b6001600160a01b0385165f90815260036020908152604080832093909355600a90529081205460ff161580156116f057506001600160a01b0384165f908152600a602052604090205460ff16155b6116fa5782611705565b611705858585611cb9565b6001600160a01b0385165f9081526003602052604090205490915061172a9082611c5b565b6001600160a01b038086165f908152600360209081526040808320949094559188168152600c909152205460ff166117c957601a546001600160a01b038681165f8181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044015f604051808303815f87803b1580156117b6575f80fd5b505af19250505080156117c7575060015b505b6001600160a01b0384165f908152600c602052604090205460ff1661185557601a546001600160a01b038581165f8181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044015f604051808303815f87803b158015611842575f80fd5b505af1925050508015611853575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161189a91815260200190565b60405180910390a3506001949350505050565b5f610c1783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113d6565b6019805460ff60a01b1916600160a01b179055305f908152600360205260408120546012549091906119339060029061192d9060649082908790611d78565b90611df6565b90505f61194083836118ad565b905061194b81611e37565b5f4790505f61196a606461192d60115485611d7890919063ffffffff16565b90505f611987606461192d60135486611d7890919063ffffffff16565b90505f6119a9600261192d606461192d60125489611d7890919063ffffffff16565b905083156119ea576019546040516001600160a01b039091169083156108fc029084905f818181858888f193505050501580156119e8573d5f803e3d5ffd5b505b601a5f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004015f604051808303818588803b158015611a37575f80fd5b505af193505050508015611a49575060015b508515611a5a57611a5a8682611f5b565b50506019805460ff60a01b191690555050505050565b6001600160a01b0382163014801590611a9757506016546001600160a01b03838116911614155b611a9f575f80fd5b6001600160a01b0382165f908152600c60205260409020805460ff19168215801591909117909155611b3057601a54604051630a5b654b60e11b81526001600160a01b0384811660048301525f6024830152909116906314b6ca96906044015f604051808303815f87803b158015611b15575f80fd5b505af1158015611b27573d5f803e3d5ffd5b50505050611034565b601a546001600160a01b038381165f8181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610d14565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600390915291822054611bc89184906113d6565b6001600160a01b038086165f908152600360205260408082209390935590851681522054611bf69083611c5b565b6001600160a01b038085165f8181526003602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c499086815260200190565b60405180910390a35060019392505050565b5f80611c678385612371565b905083811015610c175760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b35565b6016545f9081906001600160a01b03858116911614611cda57600f54611cde565b6010545b90505f611cf0606461192d8685611d78565b305f90815260036020526040902054909150611d0c9082611c5b565b305f81815260036020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d5c9085815260200190565b60405180910390a3611d6e84826118ad565b9695505050505050565b5f825f03611d8757505f610b06565b5f611d928385612384565b905082611d9f858361239b565b14610c175760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b35565b5f610c1783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611fed565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611e6a57611e6a61231e565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ec1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ee591906123ba565b81600181518110611ef857611ef861231e565b60200260200101906001600160a01b031690816001600160a01b031681525050611f223083610aa0565b5060155460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d149085905f908690309042906004016123d5565b601554600e5460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611fc8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fc69190612444565b5f818361200d5760405162461bcd60e51b8152600401610b359190612019565b505f611405848661239b565b5f6020808352835180828501525f5b8181101561204457858101830151858201604001528201612028565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611036575f80fd5b803561208381612064565b919050565b5f8060408385031215612099575f80fd5b82356120a481612064565b946020939093013593505050565b5f602082840312156120c2575f80fd5b8135610c1781612064565b5f805f606084860312156120df575f80fd5b83356120ea81612064565b925060208401356120fa81612064565b929592945050506040919091013590565b5f806040838503121561211c575f80fd5b50508035926020909101359150565b5f805f6060848603121561213d575f80fd5b505081359360208301359350604090920135919050565b80358015158114612083575f80fd5b5f8060408385031215612174575f80fd5b6120a483612154565b5f6020828403121561218d575f80fd5b5035919050565b5f80604083850312156121a5575f80fd5b82356121b081612064565b91506121be60208401612154565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f60208083850312156121ec575f80fd5b823567ffffffffffffffff80821115612203575f80fd5b818501915085601f830112612216575f80fd5b813581811115612228576122286121c7565b8060051b604051601f19603f8301168101818110858211171561224d5761224d6121c7565b60405291825284820192508381018501918883111561226a575f80fd5b938501935b8285101561228f5761228085612078565b8452938501939285019261226f565b98975050505050505050565b5f80604083850312156122ac575f80fd5b82356122b781612064565b915060208301356122c781612064565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215612317575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161235757612357612332565b5060010190565b81810381811115610b0657610b06612332565b80820180821115610b0657610b06612332565b8082028115828204841417610b0657610b06612332565b5f826123b557634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156123ca575f80fd5b8151610c1781612064565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156124235784516001600160a01b0316835293830193918301916001016123fe565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612456575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220ca29fc644173bfd7ea963530d514d3e331093d0bf0b6c39c4834119e94efd5c264736f6c63430008150033

Deployed Bytecode Sourcemap

11283:11900:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13191:52;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;13191:52:0;;;;;;;;17257:80;;;;;;;;;;-1:-1:-1;17329:5:0;;;;;;;;;;;;-1:-1:-1;;;17329:5:0;;;;17257:80;;;;;;;:::i;17685:216::-;;;;;;;;;;-1:-1:-1;17685:216:0;;;;;:::i;:::-;;:::i;:::-;;;1509:14:1;;1502:22;1484:41;;1472:2;1457:18;17685:216:0;1344:187:1;16987:88:0;;;;;;;;;;-1:-1:-1;17060:12:0;;16987:88;;15430:123;;;;;;;;;;-1:-1:-1;15430:123:0;;;;;:::i;:::-;;:::i;:::-;;18199:366;;;;;;;;;;-1:-1:-1;18199:366:0;;;;;:::i;:::-;;:::i;16112:90::-;;;;;;;;;;-1:-1:-1;16112:90:0;;;;;:::i;:::-;;:::i;16837:142::-;;;;;;;;;;;;;:::i;12357:27::-;;;;;;;;;;;;;;;;15902:202;;;;;;;;;;-1:-1:-1;15902:202:0;;;;;:::i;:::-;;:::i;14696:233::-;;;;;;;;;;-1:-1:-1;14696:233:0;;;;;:::i;:::-;;:::i;14530:153::-;;;;;;;;;;-1:-1:-1;14530:153:0;;;;;:::i;:::-;;:::i;17081:80::-;;;;;;;;;;-1:-1:-1;17081:80:0;;11589:2;3225:36:1;;3213:2;3198:18;17081:80:0;3083:184:1;12923:37:0;;;;;;;;;;;;;;;;15695:199;;;;;;;;;;-1:-1:-1;15695:199:0;;;;;:::i;:::-;;:::i;12089:44::-;;;;;;;;;;-1:-1:-1;12089:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12195:49;;;;;;;;;;-1:-1:-1;12195:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12510:34;;;;;;;;;;;;;;;;12324:26;;;;;;;;;;;;;;;;12787:40;;;;;;;;;;-1:-1:-1;12787:40:0;;;;-1:-1:-1;;;12787:40:0;;;;;;17909:122;;;;;;;;;;-1:-1:-1;17909:122:0;;;;;:::i;:::-;;:::i;12285:30::-;;;;;;;;;;-1:-1:-1;12285:30:0;;;;-1:-1:-1;;;;;12285:30:0;;;;;;-1:-1:-1;;;;;3854:32:1;;;3836:51;;3824:2;3809:18;12285:30:0;3690:203:1;22482:74:0;;;;;;;;;;;;;:::i;17429:105::-;;;;;;;;;;-1:-1:-1;17429:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;17513:18:0;17495:7;17513:18;;;:9;:18;;;;;;;17429:105;3363:148;;;;;;;;;;;;;:::i;13087:43::-;;;;;;;;;;;;;;;;12470:31;;;;;;;;;;;;;;;;22930:158;;;;;;;;;;-1:-1:-1;22930:158:0;;;;;:::i;:::-;;:::i;15040:104::-;;;;;;;;;;-1:-1:-1;15040:104:0;;;;;:::i;:::-;;:::i;12008:26::-;;;;;;;;;;-1:-1:-1;12008:26:0;;;;-1:-1:-1;;;12008:26:0;;;;;;22805:117;;;;;;;;;;-1:-1:-1;22805:117:0;;;;;:::i;:::-;;:::i;22564:233::-;;;;;;;;;;;;;:::i;17343:80::-;;;;;;;;;;-1:-1:-1;17395:7:0;3214:6;-1:-1:-1;;;;;3214:6:0;17343:80;16837:142;12140:48;;;;;;;;;;-1:-1:-1;12140:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12672:78;;;;;;;;;;-1:-1:-1;12672:78:0;;;;-1:-1:-1;;;;;12672:78:0;;;16703:115;;;;;;;;;;-1:-1:-1;16703:115:0;;;;;:::i;:::-;;:::i;17167:84::-;;;;;;;;;;-1:-1:-1;17241:7:0;;;;;;;;;;;;-1:-1:-1;;;17241:7:0;;;;17167:84;;15156:122;;;;;;;;;;-1:-1:-1;15156:122:0;;;;;:::i;:::-;;:::i;12584:19::-;;;;;;;;;;-1:-1:-1;12584:19:0;;;;-1:-1:-1;;;;;12584:19:0;;;18039:152;;;;;;;;;;-1:-1:-1;18039:152:0;;;;;:::i;:::-;;:::i;12878:38::-;;;;;;;;;;-1:-1:-1;12878:38:0;;;;-1:-1:-1;;;;;12878:38:0;;;14183:166;;;;;;;;;;-1:-1:-1;14183:166:0;;;;;:::i;:::-;;:::i;11371:64::-;;;;;;;;;;-1:-1:-1;11371:64:0;;;;-1:-1:-1;;;;;11371:64:0;;;15561:121;;;;;;;;;;-1:-1:-1;15561:121:0;;;;;:::i;:::-;;:::i;12253:25::-;;;;;;;;;;;;;;;;23096:84;;;;;;;;;;;;;:::i;12610:22::-;;;;;;;;;;-1:-1:-1;12610:22:0;;;;-1:-1:-1;;;;;12610:22:0;;;12433:30;;;;;;;;;;;;;;;;14401:115;;;;;;;;;;;;;:::i;12393:33::-;;;;;;;;;;;;;;;;14937:95;;;;;;;;;;-1:-1:-1;14937:95:0;;;;;:::i;:::-;;:::i;17540:133::-;;;;;;;;;;-1:-1:-1;17540:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;17642:19:0;;;17624:7;17642:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;17540:133;3519:244;;;;;;;;;;-1:-1:-1;3519:244:0;;;;;:::i;:::-;;:::i;16563:132::-;;;;;;;;;;-1:-1:-1;16563:132:0;;;;;:::i;:::-;;:::i;12553:24::-;;;;;;;;;;-1:-1:-1;12553:24:0;;;;-1:-1:-1;;;;;12553:24:0;;;13137:47;;;;;;;;;;;;;;;;15286:136;;;;;;;;;;-1:-1:-1;15286:136:0;;;;;:::i;:::-;;:::i;12834:31::-;;;;;;;;;;-1:-1:-1;12834:31:0;;;;-1:-1:-1;;;12834:31:0;;;;;;17685:216;17789:10;17760:4;17777:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;17777:32:0;;;;;;;;;;:41;;;17834:37;17760:4;;17777:32;;17834:37;;;;17812:6;160:25:1;;148:2;133:18;;14:177;17834:37:0;;;;;;;;-1:-1:-1;17889:4:0;17685:216;;;;;:::o;15430:123::-;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;;;;;;;;;15512:9:::1;:33:::0;;-1:-1:-1;;;;;;15512:33:0::1;-1:-1:-1::0;;;;;15512:33:0;;;::::1;::::0;;;::::1;::::0;;15430:123::o;18199:366::-;-1:-1:-1;;;;;18319:19:0;;18299:4;18319:19;;;:11;:19;;;;;;;;18339:10;18319:31;;;;;;;;-1:-1:-1;;18319:52:0;18316:186;;18421:69;;;;;;;;;;;-1:-1:-1;;;18421:69:0;;;;;;;;-1:-1:-1;;;;;18421:19:0;;-1:-1:-1;18421:19:0;;;:11;:19;;;;;18441:10;18421:31;;;;;;;;;;:69;;18457:6;;18421:35;:69::i;:::-;-1:-1:-1;;;;;18387:19:0;;;;;;:11;:19;;;;;;;;18407:10;18387:31;;;;;;;:103;18316:186;18521:36;18531:6;18539:9;18550:6;18521:9;:36::i;:::-;18514:43;;18199:366;;;;;;:::o;16112:90::-;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16174:12:0::1;16189:5;16174:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;16174:20:0::1;::::0;;16112:90::o;16837:142::-;16965:4;;-1:-1:-1;;;;;16965:4:0;16890:7;17513:18;;;:9;:18;;;;;;16917:54;;16944:4;;-1:-1:-1;;;;;16944:4:0;17495:7;17513:18;;;:9;:18;;;;;;16917:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;16910:61;;16837:142;:::o;15902:202::-;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;16015:15:::1;::::0;:73:::1;::::0;-1:-1:-1;;;16015:73:0;;::::1;::::0;::::1;7055:25:1::0;;;7096:18;;;7089:34;;;-1:-1:-1;;;;;16015:15:0;;::::1;::::0;:39:::1;::::0;7028:18:1;;16015:73:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15902:202:::0;;:::o;14696:233::-;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;14820:13:::1;:28:::0;;;;14859:11:::1;:22:::0;14892:11:::1;:29:::0;14696:233::o;14530:153::-;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;14626:6:::1;:18:::0;;;;14655:7:::1;:20:::0;14530:153::o;15695:199::-;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;15804:21:::1;:39:::0;;;::::1;;-1:-1:-1::0;;;15804:39:0::1;-1:-1:-1::0;;;;15804:39:0;;::::1;::::0;;;::::1;::::0;;;15854:13:::1;:32:::0;15695:199::o;17909:122::-;17964:4;17988:35;17996:7;-1:-1:-1;;17988:7:0;:35::i;22482:74::-;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;22538:10:::1;:8;:10::i;:::-;22482:74::o:0;3363:148::-;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;3470:1:::1;3454:6:::0;;3433:40:::1;::::0;-1:-1:-1;;;;;3454:6:0;;::::1;::::0;3433:40:::1;::::0;3470:1;;3433:40:::1;3501:1;3484:19:::0;;-1:-1:-1;;;;;;3484:19:0::1;::::0;;3363:148::o;22930:158::-;23034:15;;:46;;-1:-1:-1;;;23034:46:0;;-1:-1:-1;;;;;3854:32:1;;;23034:46:0;;;3836:51:1;23007:7:0;;23034:15;;:33;;3809:18:1;;23034:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15040:104::-;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;15115:9:::1;:21:::0;15040:104::o;22805:117::-;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;22880:15:::1;::::0;:34:::1;::::0;-1:-1:-1;;;;;;22880:34:0;;::::1;::::0;::::1;160:25:1::0;;;-1:-1:-1;;;;;22880:15:0;;::::1;::::0;:23:::1;::::0;133:18:1;;22880:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22805:117:::0;:::o;22564:233::-;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;22648:21:::1;22683:22:::0;;22680:110:::1;;22739:9;::::0;22731:47:::1;::::0;-1:-1:-1;;;;;22739:9:0;;::::1;::::0;22731:47;::::1;;;::::0;22759:18;;22739:9:::1;22731:47:::0;22739:9;22731:47;22759:18;22739:9;22731:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22680:110;22608:189;22564:233::o:0;16703:115::-;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;16783:18:::1;:27:::0;16703:115::o;15156:122::-;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15242:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;15242:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15156:122::o;18039:152::-;18119:4;18143:40;18153:10;18165:9;18176:6;18143:9;:40::i;14183:166::-;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;14259:6:::1;14254:88;14275:5;:12;14271:1;:16;14254:88;;;14326:4;14309;:14;14314:5;14320:1;14314:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;14309:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;14309:14:0;:21;;-1:-1:-1;;14309:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14289:3;::::1;::::0;::::1;:::i;:::-;;;;14254:88;;15561:121:::0;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;15647:10:::1;:27:::0;;-1:-1:-1;;;;;;15647:27:0::1;-1:-1:-1::0;;;;;15647:27:0;;;::::1;::::0;;;::::1;::::0;;15561:121::o;23096:84::-;23135:15;;:37;;-1:-1:-1;;;23135:37:0;;23161:10;23135:37;;;3836:51:1;-1:-1:-1;;;;;23135:15:0;;;;:25;;3809:18:1;;23135:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23096:84::o;14401:115::-;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;14467:12:::1;14454:10;:25:::0;14490:11:::1;:18:::0;;-1:-1:-1;;;;14490:18:0::1;-1:-1:-1::0;;;14490:18:0::1;::::0;;14401:115::o;14937:95::-;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;15008:5:::1;:16:::0;14937:95::o;3519:244::-;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3608:22:0;::::1;3600:73;;;::::0;-1:-1:-1;;;3600:73:0;;7929:2:1;3600:73:0::1;::::0;::::1;7911:21:1::0;7968:2;7948:18;;;7941:30;8007:34;7987:18;;;7980:62;-1:-1:-1;;;8058:18:1;;;8051:36;8104:19;;3600:73:0::1;7727:402:1::0;3600:73:0::1;3710:6;::::0;;3689:38:::1;::::0;-1:-1:-1;;;;;3689:38:0;;::::1;::::0;3710:6;::::1;::::0;3689:38:::1;::::0;::::1;3738:6;:17:::0;;-1:-1:-1;;;;;;3738:17:0::1;-1:-1:-1::0;;;;;3738:17:0;;;::::1;::::0;;;::::1;::::0;;3519:244::o;16563:132::-;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;16651:36:::1;16672:6;16680;16651:20;:36::i;15286:136::-:0;3276:6;;-1:-1:-1;;;;;3276:6:0;2693:10;3276:22;3268:67;;;;-1:-1:-1;;;3268:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15382:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;15382:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15286:136::o;679:192::-;765:7;801:12;793:6;;;;785:29;;;;-1:-1:-1;;;785:29:0;;;;;;;;:::i;:::-;-1:-1:-1;825:9:0;837:5;841:1;837;:5;:::i;:::-;825:17;679:192;-1:-1:-1;;;;;679:192:0:o;18573:1432::-;18661:4;3214:6;;-1:-1:-1;;;;;18682:16:0;;;3214:6;;18682:16;;;;:39;;-1:-1:-1;3187:7:0;3214:6;-1:-1:-1;;;;;18702:19:0;;;3214:6;;18702:19;;18682:39;18678:92;;;18731:11;;-1:-1:-1;;;18731:11:0;;;;18723:47;;;;-1:-1:-1;;;18723:47:0;;8469:2:1;18723:47:0;;;8451:21:1;8508:2;8488:18;;;8481:30;8547:25;8527:18;;;8520:53;8590:18;;18723:47:0;8267:347:1;18723:47:0;-1:-1:-1;;;;;18832:12:0;;;;;;:4;:12;;;;;;;;18831:13;:33;;;;-1:-1:-1;;;;;;18849:15:0;;;;;;:4;:15;;;;;;;;18848:16;18831:33;18823:42;;;;;;18881:16;;-1:-1:-1;;;18881:16:0;;;;18878:73;;;18907:41;18922:6;18930:9;18941:6;18907:14;:41::i;:::-;18900:48;;;;18878:73;18981:5;;18971:6;:15;;:42;;;-1:-1:-1;;;;;;18990:23:0;;;;;;:15;:23;;;;;;;;18971:42;18963:57;;;;-1:-1:-1;;;18963:57:0;;8821:2:1;18963:57:0;;;8803:21:1;8860:1;8840:18;;;8833:29;-1:-1:-1;;;8878:18:1;;;8871:32;8920:18;;18963:57:0;8619:325:1;18963:57:0;-1:-1:-1;;;;;19037:26:0;;;;;;:15;:26;;;;;;;;19036:27;:38;;;;-1:-1:-1;19067:7:0;;-1:-1:-1;;;19067:7:0;;;;19036:38;19033:143;;;19144:9;;-1:-1:-1;;;;;19108:20:0;;;;;;:9;:20;;;;;;:32;;19133:6;19108:24;:32::i;:::-;:45;;19100:64;;;;-1:-1:-1;;;19100:64:0;;9151:2:1;19100:64:0;;;9133:21:1;9190:1;9170:18;;;9163:29;-1:-1:-1;;;9208:18:1;;;9201:36;9254:18;;19100:64:0;8949:329:1;19100:64:0;19205:4;;-1:-1:-1;;;;;19205:4:0;19191:10;:18;;;;:39;;-1:-1:-1;19214:16:0;;-1:-1:-1;;;19214:16:0;;;;19213:17;19191:39;:64;;;;-1:-1:-1;19234:21:0;;-1:-1:-1;;;19234:21:0;;;;19191:64;:109;;;;-1:-1:-1;19287:13:0;;19277:4;19259:24;;;;:9;:24;;;;;;:41;;19191:109;19188:128;;;19303:10;:8;:10::i;:::-;19348:53;;;;;;;;;;;-1:-1:-1;;;19348:53:0;;;;;;;;-1:-1:-1;;;;;19348:17:0;;-1:-1:-1;19348:17:0;;;:9;:17;;;;;;;;:53;;19370:6;;19348:21;:53::i;:::-;-1:-1:-1;;;;;19328:17:0;;;;;;:9;:17;;;;;;;;:73;;;;19445:11;:19;;;;;;;;19444:20;:47;;;;-1:-1:-1;;;;;;19469:22:0;;;;;;:11;:22;;;;;;;;19468:23;19444:47;:93;;19531:6;19444:93;;;19494:34;19502:6;19510:9;19521:6;19494:7;:34::i;:::-;-1:-1:-1;;;;;19571:20:0;;;;;;:9;:20;;;;;;19422:115;;-1:-1:-1;19571:37:0;;19422:115;19571:24;:37::i;:::-;-1:-1:-1;;;;;19548:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;19654:24;;;;;:16;:24;;;;;;;19650:123;;19699:15;;-1:-1:-1;;;;;19732:17:0;;;19699:15;19732:17;;;:9;:17;;;;;;;;19699:51;;-1:-1:-1;;;19699:51:0;;;;;9457::1;;;;9524:18;;;9517:34;19699:15:0;;;:24;;9430:18:1;;19699:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19695:67;;-1:-1:-1;;;;;19789:27:0;;;;;;:16;:27;;;;;;;;19785:133;;19837:15;;-1:-1:-1;;;;;19873:20:0;;;19837:15;19873:20;;;:9;:20;;;;;;;;19837:57;;-1:-1:-1;;;19837:57:0;;;;;9457:51:1;;;;9524:18;;;9517:34;19837:15:0;;;:24;;9430:18:1;;19837:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19833:73;;19952:9;-1:-1:-1;;;;;19935:40:0;19944:6;-1:-1:-1;;;;;19935:40:0;;19963:11;19935:40;;;;160:25:1;;148:2;133:18;;14:177;19935:40:0;;;;;;;;-1:-1:-1;19993:4:0;;18573:1432;-1:-1:-1;;;;18573:1432:0:o;537:136::-;595:7;622:43;626:1;629;622:43;;;;;;;;;;;;;;;;;:3;:43::i;21555:919::-;13001:16;:23;;-1:-1:-1;;;;13001:23:0;-1:-1:-1;;;13001:23:0;;;21654:4:::1;13001:23:::0;21636:24;;;:9:::1;:24;::::0;;;;;21718:11:::1;::::0;21636:24;;13001:23;21701:45:::1;::::0;21744:1:::1;::::0;21701:38:::1;::::0;21735:3:::1;::::0;21701:38;;21636:24;;21701:16:::1;:29::i;:::-;:33:::0;::::1;:38::i;:45::-;21672:74:::0;-1:-1:-1;21762:20:0::1;21785:36;:12:::0;21672:74;21785:16:::1;:36::i;:::-;21762:59;;21834:30;21851:12;21834:16;:30::i;:::-;21877:23;21903:21;21877:47;;21935:18;21956:43;21995:3;21956:34;21976:13;;21956:15;:19;;:34;;;;:::i;:43::-;21935:64;;22010:17;22030:41;22067:3;22030:32;22050:11;;22030:15;:19;;:32;;;;:::i;:41::-;22010:61;;22082:23;22108:48;22154:1;22108:41;22145:3;22108:32;22128:11;;22108:15;:19;;:32;;;;:::i;:48::-;22082:74:::0;-1:-1:-1;22179:19:0;;22175:89:::1;;22222:9;::::0;22214:38:::1;::::0;-1:-1:-1;;;;;22222:9:0;;::::1;::::0;22214:38;::::1;;;::::0;22242:9;;22222::::1;22214:38:::0;22222:9;22214:38;22242:9;22222;22214:38;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22175:89;22288:15;;;;;;;;;-1:-1:-1::0;;;;;22288:15:0::1;-1:-1:-1::0;;;;;22288:23:0::1;;22319:10;22288:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22284:60:::0;22368:22;;22364:103:::1;;22406:49;22419:18;22439:15;22406:12;:49::i;:::-;-1:-1:-1::0;;13047:16:0;:24;;-1:-1:-1;;;;13047:24:0;;;-1:-1:-1;;;;;21555:919:0:o;16210:345::-;-1:-1:-1;;;;;16297:23:0;;16315:4;16297:23;;;;:41;;-1:-1:-1;16334:4:0;;-1:-1:-1;;;;;16324:14:0;;;16334:4;;16324:14;;16297:41;16289:50;;;;;;-1:-1:-1;;;;;16350:24:0;;;;;;:16;:24;;;;;:33;;-1:-1:-1;;16350:33:0;;;;;;;;;;;;16394:154;;16419:15;;:35;;-1:-1:-1;;;16419:35:0;;-1:-1:-1;;;;;9475:32:1;;;16419:35:0;;;9457:51:1;16419:15:0;9524:18:1;;;9517:34;16419:15:0;;;;:24;;9430:18:1;;16419:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16394:154;;;16485:15;;-1:-1:-1;;;;;16518:17:0;;;16485:15;16518:17;;;:9;:17;;;;;;;;16485:51;;-1:-1:-1;;;16485:51:0;;;;;9457::1;;;;9524:18;;;9517:34;16485:15:0;;;:24;;9430:18:1;;16485:51:0;9283:274:1;20017:330:0;20147:53;;;;;;;;;;;-1:-1:-1;;;20147:53:0;;;;;;;;-1:-1:-1;;;;;20147:17:0;;20110:4;20147:17;;;:9;:17;;;;;;;:53;;20169:6;;20147:21;:53::i;:::-;-1:-1:-1;;;;;20127:17:0;;;;;;;:9;:17;;;;;;:73;;;;20234:20;;;;;;;:32;;20259:6;20234:24;:32::i;:::-;-1:-1:-1;;;;;20211:20:0;;;;;;;:9;:20;;;;;;;:55;;;;20282:35;;;;;;;;;;20310:6;160:25:1;;148:2;133:18;;14:177;20282:35:0;;;;;;;;-1:-1:-1;20335:4:0;20017:330;;;;;:::o;350:181::-;408:7;;440:5;444:1;440;:5;:::i;:::-;428:17;;469:1;464;:6;;456:46;;;;-1:-1:-1;;;456:46:0;;10181:2:1;456:46:0;;;10163:21:1;10220:2;10200:18;;;10193:30;10259:29;10239:18;;;10232:57;10306:18;;456:46:0;9979:351:1;20361:427:0;20501:4;;20447:7;;;;-1:-1:-1;;;;;20501:17:0;;;:4;;:17;:36;;20531:6;;20501:36;;;20521:7;;20501:36;20477:60;-1:-1:-1;20548:17:0;20568:34;20598:3;20568:25;:6;20477:60;20568:10;:25::i;:34::-;20660:4;20642:24;;;;:9;:24;;;;;;20548:54;;-1:-1:-1;20642:39:0;;20548:54;20642:28;:39::i;:::-;20633:4;20615:24;;;;:9;:24;;;;;;;:66;;;;20697:42;;-1:-1:-1;;;;;20697:42:0;;;;;;;20729:9;160:25:1;;148:2;133:18;;14:177;20697:42:0;;;;;;;;20759:21;:6;20770:9;20759:10;:21::i;:::-;20752:28;20361:427;-1:-1:-1;;;;;;20361:427:0:o;877:250::-;935:7;959:1;964;959:6;955:47;;-1:-1:-1;989:1:0;982:8;;955:47;1014:9;1026:5;1030:1;1026;:5;:::i;:::-;1014:17;-1:-1:-1;1059:1:0;1050:5;1054:1;1014:17;1050:5;:::i;:::-;:10;1042:56;;;;-1:-1:-1;;;1042:56:0;;10932:2:1;1042:56:0;;;10914:21:1;10971:2;10951:18;;;10944:30;11010:34;10990:18;;;10983:62;-1:-1:-1;;;11061:18:1;;;11054:31;11102:19;;1042:56:0;10730:397:1;1133:132:0;1191:7;1218:39;1222:1;1225;1218:39;;;;;;;;;;;;;;;;;:3;:39::i;20800:460::-;20892:16;;;20906:1;20892:16;;;;;;;;20868:21;;20892:16;;;;;;;;;;-1:-1:-1;20892:16:0;20868:40;;20937:4;20919;20924:1;20919:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20919:23:0;;;:7;;;;;;;;;;:23;;;;20963:6;;:13;;;-1:-1:-1;;;20963:13:0;;;;:6;;;;;:11;;:13;;;;;20919:7;;20963:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20953:4;20958:1;20953:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;20953:23:0;;;-1:-1:-1;;;;;20953:23:0;;;;;20989:35;21005:4;21012:11;20989:7;:35::i;:::-;-1:-1:-1;21037:6:0;;:215;;-1:-1:-1;;;21037:215:0;;-1:-1:-1;;;;;21037:6:0;;;;:57;;:215;;21109:11;;21037:6;;21179:4;;21206;;21226:15;;21037:215;;;:::i;21268:279::-;21349:6;;21490:8;;21349:190;;-1:-1:-1;;;21349:190:0;;21412:4;21349:190;;;12714:34:1;12764:18;;;12757:34;;;21349:6:0;12807:18:1;;;12800:34;;;12850:18;;;12843:34;-1:-1:-1;;;;;21490:8:0;;;12893:19:1;;;12886:44;21513:15:0;12946:19:1;;;12939:35;21349:6:0;;;:22;;21379:9;;12648:19:1;;21349:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1271:345::-;1357:7;1459:12;1452:5;1444:28;;;;-1:-1:-1;;;1444:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1483:9:0;1495:5;1499:1;1495;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:134;953:20;;982:31;953:20;982:31;:::i;:::-;885:134;;;:::o;1024:315::-;1092:6;1100;1153:2;1141:9;1132:7;1128:23;1124:32;1121:52;;;1169:1;1166;1159:12;1121:52;1208:9;1195:23;1227:31;1252:5;1227:31;:::i;:::-;1277:5;1329:2;1314:18;;;;1301:32;;-1:-1:-1;;;1024:315:1:o;1536:255::-;1603:6;1656:2;1644:9;1635:7;1631:23;1627:32;1624:52;;;1672:1;1669;1662:12;1624:52;1711:9;1698:23;1730:31;1755:5;1730:31;:::i;1796:456::-;1873:6;1881;1889;1942:2;1930:9;1921:7;1917:23;1913:32;1910:52;;;1958:1;1955;1948:12;1910:52;1997:9;1984:23;2016:31;2041:5;2016:31;:::i;:::-;2066:5;-1:-1:-1;2123:2:1;2108:18;;2095:32;2136:33;2095:32;2136:33;:::i;:::-;1796:456;;2188:7;;-1:-1:-1;;;2242:2:1;2227:18;;;;2214:32;;1796:456::o;2509:248::-;2577:6;2585;2638:2;2626:9;2617:7;2613:23;2609:32;2606:52;;;2654:1;2651;2644:12;2606:52;-1:-1:-1;;2677:23:1;;;2747:2;2732:18;;;2719:32;;-1:-1:-1;2509:248:1:o;2762:316::-;2839:6;2847;2855;2908:2;2896:9;2887:7;2883:23;2879:32;2876:52;;;2924:1;2921;2914:12;2876:52;-1:-1:-1;;2947:23:1;;;3017:2;3002:18;;2989:32;;-1:-1:-1;3068:2:1;3053:18;;;3040:32;;2762:316;-1:-1:-1;2762:316:1:o;3272:160::-;3337:20;;3393:13;;3386:21;3376:32;;3366:60;;3422:1;3419;3412:12;3437:248;3502:6;3510;3563:2;3551:9;3542:7;3538:23;3534:32;3531:52;;;3579:1;3576;3569:12;3531:52;3602:26;3618:9;3602:26;:::i;3898:180::-;3957:6;4010:2;3998:9;3989:7;3985:23;3981:32;3978:52;;;4026:1;4023;4016:12;3978:52;-1:-1:-1;4049:23:1;;3898:180;-1:-1:-1;3898:180:1:o;4083:315::-;4148:6;4156;4209:2;4197:9;4188:7;4184:23;4180:32;4177:52;;;4225:1;4222;4215:12;4177:52;4264:9;4251:23;4283:31;4308:5;4283:31;:::i;:::-;4333:5;-1:-1:-1;4357:35:1;4388:2;4373:18;;4357:35;:::i;:::-;4347:45;;4083:315;;;;;:::o;4643:127::-;4704:10;4699:3;4695:20;4692:1;4685:31;4735:4;4732:1;4725:15;4759:4;4756:1;4749:15;4775:1121;4859:6;4890:2;4933;4921:9;4912:7;4908:23;4904:32;4901:52;;;4949:1;4946;4939:12;4901:52;4989:9;4976:23;5018:18;5059:2;5051:6;5048:14;5045:34;;;5075:1;5072;5065:12;5045:34;5113:6;5102:9;5098:22;5088:32;;5158:7;5151:4;5147:2;5143:13;5139:27;5129:55;;5180:1;5177;5170:12;5129:55;5216:2;5203:16;5238:2;5234;5231:10;5228:36;;;5244:18;;:::i;:::-;5290:2;5287:1;5283:10;5322:2;5316:9;5385:2;5381:7;5376:2;5372;5368:11;5364:25;5356:6;5352:38;5440:6;5428:10;5425:22;5420:2;5408:10;5405:18;5402:46;5399:72;;;5451:18;;:::i;:::-;5487:2;5480:22;5537:18;;;5571:15;;;;-1:-1:-1;5613:11:1;;;5609:20;;;5641:19;;;5638:39;;;5673:1;5670;5663:12;5638:39;5697:11;;;;5717:148;5733:6;5728:3;5725:15;5717:148;;;5799:23;5818:3;5799:23;:::i;:::-;5787:36;;5750:12;;;;5843;;;;5717:148;;;5884:6;4775:1121;-1:-1:-1;;;;;;;;4775:1121:1:o;5901:388::-;5969:6;5977;6030:2;6018:9;6009:7;6005:23;6001:32;5998:52;;;6046:1;6043;6036:12;5998:52;6085:9;6072:23;6104:31;6129:5;6104:31;:::i;:::-;6154:5;-1:-1:-1;6211:2:1;6196:18;;6183:32;6224:33;6183:32;6224:33;:::i;:::-;6276:7;6266:17;;;5901:388;;;;;:::o;6520:356::-;6722:2;6704:21;;;6741:18;;;6734:30;6800:34;6795:2;6780:18;;6773:62;6867:2;6852:18;;6520:356::o;7134:184::-;7204:6;7257:2;7245:9;7236:7;7232:23;7228:32;7225:52;;;7273:1;7270;7263:12;7225:52;-1:-1:-1;7296:16:1;;7134:184;-1:-1:-1;7134:184:1:o;7323:127::-;7384:10;7379:3;7375:20;7372:1;7365:31;7415:4;7412:1;7405:15;7439:4;7436:1;7429:15;7455:127;7516:10;7511:3;7507:20;7504:1;7497:31;7547:4;7544:1;7537:15;7571:4;7568:1;7561:15;7587:135;7626:3;7647:17;;;7644:43;;7667:18;;:::i;:::-;-1:-1:-1;7714:1:1;7703:13;;7587:135::o;8134:128::-;8201:9;;;8222:11;;;8219:37;;;8236:18;;:::i;9849:125::-;9914:9;;;9935:10;;;9932:36;;;9948:18;;:::i;10335:168::-;10408:9;;;10439;;10456:15;;;10450:22;;10436:37;10426:71;;10477:18;;:::i;10508:217::-;10548:1;10574;10564:132;;10618:10;10613:3;10609:20;10606:1;10599:31;10653:4;10650:1;10643:15;10681:4;10678:1;10671:15;10564:132;-1:-1:-1;10710:9:1;;10508:217::o;11132:251::-;11202:6;11255:2;11243:9;11234:7;11230:23;11226:32;11223:52;;;11271:1;11268;11261:12;11223:52;11303:9;11297:16;11322:31;11347:5;11322:31;:::i;11388:980::-;11650:4;11698:3;11687:9;11683:19;11729:6;11718:9;11711:25;11755:2;11793:6;11788:2;11777:9;11773:18;11766:34;11836:3;11831:2;11820:9;11816:18;11809:31;11860:6;11895;11889:13;11926:6;11918;11911:22;11964:3;11953:9;11949:19;11942:26;;12003:2;11995:6;11991:15;11977:29;;12024:1;12034:195;12048:6;12045:1;12042:13;12034:195;;;12113:13;;-1:-1:-1;;;;;12109:39:1;12097:52;;12204:15;;;;12169:12;;;;12145:1;12063:9;12034:195;;;-1:-1:-1;;;;;;;12285:32:1;;;;12280:2;12265:18;;12258:60;-1:-1:-1;;;12349:3:1;12334:19;12327:35;12246:3;11388:980;-1:-1:-1;;;11388:980:1:o;12985:306::-;13073:6;13081;13089;13142:2;13130:9;13121:7;13117:23;13113:32;13110:52;;;13158:1;13155;13148:12;13110:52;13187:9;13181:16;13171:26;;13237:2;13226:9;13222:18;13216:25;13206:35;;13281:2;13270:9;13266:18;13260:25;13250:35;;12985:306;;;;;:::o

Swarm Source

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