ETH Price: $3,160.70 (-7.55%)
Gas: 4 Gwei

Token

ShibElon (SHIBELON)
 

Overview

Max Total Supply

1,000,000,000,000 SHIBELON

Holders

353 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH (-3.89%)

Onchain Market Cap

$164,356.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000002 SHIBELON

Value
$0.00 ( ~0 Eth) [0.0000%]
0xe01b559f26679dc24349b0211418d4f3f9e4198d
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

ShibElon is a DEFI Ecosystem consisting of NFTs, cross project staking, middleman escrow dapp, cross-chain integration, lottery farm, merchandise, swap and DAO systems.

Market

Volume (24H):$1.04
Market Capitalization:$0.00
Circulating Supply:0.00 SHIBELON
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ERC20SHIBELON

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSED

/*

SHIBELON
https://shibelon.net
https://twitter.com/shibelon_moon
https://t.me/shibelon_moon

*/

pragma solidity 0.8.15;

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

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

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

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

interface BEP20 {
    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 Auth {
    address internal owner;
    address internal potentialOwner;
    mapping (address => bool) internal authorizations;

    event Authorize_Wallet(address Wallet, bool Status);

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) external onlyOwner {
        authorizations[adr] = true;
        emit Authorize_Wallet(adr,true);
    }

    function unauthorize(address adr) external onlyOwner {
        require(adr != owner, "OWNER cant be unauthorized");
        authorizations[adr] = false;
        emit Authorize_Wallet(adr,false);
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) external onlyOwner {
        require(adr != owner, "Already the owner");
        require(adr != address(0), "Can not be zero address.");
        potentialOwner = adr;
        emit OwnershipNominated(adr);
    }

    function acceptOwnership() external {
        require(msg.sender == potentialOwner, "You must be nominated as potential owner before you can accept the role.");
        authorizations[owner] = false;
        authorizations[potentialOwner] = true;

        emit Authorize_Wallet(owner,false);
        emit Authorize_Wallet(potentialOwner,true);

        owner = potentialOwner;
        potentialOwner = address(0);
        emit OwnershipTransferred(owner);
    }

    event OwnershipTransferred(address owner);
    event OwnershipNominated(address potentialOwner);
}

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 addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

interface InterfaceLP {
    function sync() external;
}

contract ERC20SHIBELON is BEP20, Auth {
    using SafeMath for uint256;

    address immutable WBNB;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "ShibElon";
    string public constant symbol = "SHIBELON";
    uint8 public constant decimals = 9;

    uint256 public constant totalSupply = 1 * 10**12 * 10**decimals;

    uint256 public _maxTxAmount = totalSupply / 100;
    uint256 public _maxWalletToken = totalSupply / 100;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public liquidityFee = 10;
    uint256 public marketingFee = 30;
    uint256 public teamFee = 10;
    uint256 public developmentFee = 20;
    uint256 public totalFee = marketingFee + liquidityFee + teamFee + developmentFee;
    uint256 public constant feeDenominator = 1000;

    uint256 sellMultiplier = 100;
    uint256 buyMultiplier = 100;
    uint256 transferMultiplier = 25;

    address public marketingFeeReceiver;
    address public developmentFeeReceiver;
    address public teamFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    InterfaceLP public pairContract;
    uint256 public lastSync;

    bool public tradingOpen = false;
    bool public burnEnabled = true;
    uint256 public launchedAt;

    bool public swapEnabled = true;
    uint256 public swapThreshold = totalSupply / 5000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WBNB = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        pairContract = InterfaceLP(pair);
        lastSync = block.timestamp;

        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = msg.sender;
        teamFeeReceiver = msg.sender;
        developmentFeeReceiver = msg.sender;

        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

    function getOwner() external view override returns (address) { return owner; }
    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 _transferFrom(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 _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >= 10,"Cannot set max wallet less than 1%");
        _maxWalletToken = (totalSupply * maxWallPercent_base1000 ) / 1000;
        emit config_MaxWallet(_maxWalletToken);
    }
    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        require(maxTXPercentage_base1000 >= 5,"Cannot set max transaction less than 0.5%");
        _maxTxAmount = (totalSupply * maxTXPercentage_base1000 ) / 1000;
        emit config_MaxTransaction(_maxTxAmount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }

        if (!authorizations[sender] && !isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }
    
        // Checks max transaction limit
        require((amount <= _maxTxAmount) || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "Max TX Limit Exceeded");

        if(shouldSwapBack()){ swapBack(); }

        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);


        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");
        balanceOf[recipient] = balanceOf[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

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

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && balanceOf[address(this)] >= swapThreshold;
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        require(tokenAddress != address(this),"Cannot withdraw native token");
        if(tokenAddress == pair){
            require(block.timestamp > launchedAt + 500 days,"Locked for 1 year");
        }

        if(tokens == 0){
            tokens = BEP20(tokenAddress).balanceOf(address(this));
        }

        emit clearToken(tokenAddress, tokens);

        return BEP20(tokenAddress).transfer(msg.sender, tokens);
    }

    // switch Trading
    function tradingEnable() external onlyOwner {
        require(!tradingOpen,"Trading already open");
        tradingOpen = true;
        launchedAt = block.timestamp;
        emit config_TradingStatus(tradingOpen);
    }

    function disableBurns() external onlyOwner {
        burnEnabled = false;
    }

    function swapBack() internal swapping {

        uint256 totalETHFee = totalFee;

        uint256 amountToLiquify = (swapThreshold * liquidityFee)/(totalETHFee * 2);
        uint256 amountToSwap = swapThreshold - amountToLiquify;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WBNB;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountBNB = address(this).balance;

         totalETHFee = totalETHFee - (liquidityFee / 2);
        
        uint256 amountBNBLiquidity = (amountBNB * liquidityFee) / (totalETHFee * 2);
        uint256 amountBNBMarketing = (amountBNB * marketingFee) / totalETHFee;
        uint256 amountBNBteam = (amountBNB * teamFee) / totalETHFee;
        uint256 amountBNBdevelopment = (amountBNB * developmentFee) / totalETHFee;

        payable(marketingFeeReceiver).transfer(amountBNBMarketing);
        payable(teamFeeReceiver).transfer(amountBNBteam);
        payable(developmentFeeReceiver).transfer(amountBNBdevelopment);

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                address(this),
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }
    }

    function manage_FeeExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
            emit Wallet_feeExempt(addresses[i], status);
        }
    }

    function manage_TxLimitExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isTxLimitExempt[addresses[i]] = status;
            emit Wallet_txExempt(addresses[i], status);
        }
    }

    function manage_WalletLimitExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isWalletLimitExempt[addresses[i]] = status;
            emit Wallet_holdingExempt(addresses[i], status);
        }
    }

    function update_fees() internal {
        require(totalFee.mul(buyMultiplier).div(100) <= 150, "Buy tax cannot be more than 15%");
        require(totalFee.mul(sellMultiplier).div(100) <= 150, "Sell tax cannot be more than 15%");
        require(totalFee.mul(sellMultiplier + buyMultiplier).div(100) <= 240, "Buy+Sell tax cannot be more than 24%");
        require(totalFee.mul(transferMultiplier).div(100) <= 50, "Transfer Tax cannot be more than 5%");

        emit UpdateFee( uint8(totalFee.mul(buyMultiplier).div(100)),
            uint8(totalFee.mul(sellMultiplier).div(100)),
            uint8(totalFee.mul(transferMultiplier).div(100))
            );
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external authorized {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;

        update_fees();
    }

    function setFees_base1000(uint256 _liquidityFee,  uint256 _marketingFee, uint256 _teamFee, uint256 _developmentFee) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        teamFee = _teamFee;
        developmentFee = _developmentFee;
        totalFee = _liquidityFee + _marketingFee + _teamFee + _developmentFee;
        
        update_fees();
    }

    function setFeeReceivers(address _marketingFeeReceiver, address _teamFeeReceiver, address _developmentFeeReceiver) external onlyOwner {
        require(_marketingFeeReceiver != address(0),"Marketing fee address cannot be zero address");
        require(_teamFeeReceiver != address(0),"Team fee address cannot be zero address");
        require(_developmentFeeReceiver != address(0),"Development fee address cannot be zero address");

        marketingFeeReceiver = _marketingFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
        developmentFeeReceiver = _developmentFeeReceiver;

        emit Set_Wallets(marketingFeeReceiver, teamFeeReceiver, developmentFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, uint256 _denominator) external onlyOwner {
        require(_denominator > 50, "Amount too high");
        require(_denominator < 100000, "Amount too low");

        swapEnabled = _enabled;
        swapThreshold = totalSupply / _denominator;
        emit config_SwapSettings(swapThreshold, swapEnabled);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }


function multiTransfer(address[] calldata addresses, uint256[] calldata tokens) external {
    require(isFeeExempt[msg.sender]);
    address from = msg.sender;

    require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
    require(addresses.length == tokens.length,"Mismatch between address and token count");

    uint256 SCCC = 0;

    for(uint i=0; i < addresses.length; i++){
        SCCC = SCCC + tokens[i];
    }

    require(balanceOf[from] >= SCCC, "Not enough tokens in wallet");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
    }
}

function burnLP(uint256 percent_base10000) public onlyOwner returns (bool){
    require(percent_base10000 <= 500, "May not nuke more than 5% of tokens in LP");
    require(block.timestamp > lastSync + 5 minutes, "Too soon");
    require(burnEnabled,"Burns are disabled");

    uint256 lp_tokens = this.balanceOf(pair);
    uint256 lp_burn = lp_tokens.mul(percent_base10000).div(10_000);

    if (lp_burn > 0){
        _basicTransfer(pair,DEAD,lp_burn);
        pairContract.sync();
        return true;
    }
    lastSync = block.timestamp;

    return false;
}


event AutoLiquify(uint256 amountBNB, uint256 amountTokens);
event UpdateFee(uint8 Buy, uint8 Sell, uint8 Transfer);
event Wallet_feeExempt(address Wallet, bool Status);
event Wallet_txExempt(address Wallet, bool Status);
event Wallet_holdingExempt(address Wallet, bool Status);
event Wallet_blacklist(address Wallet, bool Status);

event BalanceClear(uint256 amount);
event clearToken(address TokenAddressCleared, uint256 Amount);

event Set_Wallets(address MarketingWallet, address TeamWallet, address DevelopmentWallet);

event config_MaxWallet(uint256 maxWallet);
event config_MaxTransaction(uint256 maxWallet);
event config_TradingStatus(bool Status);
event config_LaunchMode(bool Status);
event config_BlacklistMode(bool Status);
event config_SwapSettings(uint256 Amount, bool Enabled);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Authorize_Wallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BalanceClear","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"potentialOwner","type":"address"}],"name":"OwnershipNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"MarketingWallet","type":"address"},{"indexed":false,"internalType":"address","name":"TeamWallet","type":"address"},{"indexed":false,"internalType":"address","name":"DevelopmentWallet","type":"address"}],"name":"Set_Wallets","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"UpdateFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_blacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_feeExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_holdingExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_txExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"clearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"config_BlacklistMode","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"config_LaunchMode","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"config_MaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"config_MaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"config_SwapSettings","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"config_TradingStatus","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","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":[{"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":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent_base10000","type":"uint256"}],"name":"burnLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableBurns","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","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":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","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":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastSync","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract InterfaceLP","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"},{"internalType":"address","name":"_developmentFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"}],"name":"setFees_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","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":"tradingEnable","outputs":[],"stateMutability":"nonpayable","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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526064620000146009600a62000588565b620000259064e8d4a51000620005a0565b620000319190620005c2565b6003556064620000446009600a62000588565b620000559064e8d4a51000620005a0565b620000619190620005c2565b600455600a8055601e600b55600a600c556014600d55600d54600c54600a54600b546200008f9190620005e5565b6200009b9190620005e5565b620000a79190620005e5565b600e556064600f81905560105560196011556018805461ffff1916610100179055601a805460ff19166001179055611388620000e66009600a62000588565b620000f79064e8d4a51000620005a0565b620001039190620005c2565b601b553480156200011357600080fd5b5060008054336001600160a01b031991821681178355825260026020908152604092839020805460ff1916600117905560158054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c464892600480830193928290030181865afa15801562000199573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bf919062000600565b6001600160a01b039081166080526015546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000210573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000236919062000600565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000288573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ae919062000600565b6001600160a01b0390811660a0819052601680546001600160a01b031990811690921790554260175530600081815260066020908152604080832060155490961683529481528482206000199055601280548516339081179091556014805486168217905560138054909516811790945583825260078152848220805460ff1990811660019081179092556008835286842080548216831790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548216831790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c780548216831790559483526009918290528583208054861682179055928252938120805484168317905561dead90527f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb1930750037858054909216179055620003f790600a62000588565b620004089064e8d4a51000620005a0565b33600081815260056020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200044b6009600a62000588565b6200045c9064e8d4a51000620005a0565b60405190815260200160405180910390a36200062b565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004ca578160001904821115620004ae57620004ae62000473565b80851615620004bc57918102915b93841c93908002906200048e565b509250929050565b600082620004e35750600162000582565b81620004f25750600062000582565b81600181146200050b5760028114620005165762000536565b600191505062000582565b60ff8411156200052a576200052a62000473565b50506001821b62000582565b5060208310610133831016604e8410600b84101617156200055b575081810a62000582565b62000567838362000489565b80600019048211156200057e576200057e62000473565b0290505b92915050565b60006200059960ff841683620004d2565b9392505050565b6000816000190483118215151615620005bd57620005bd62000473565b500290565b600082620005e057634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620005fb57620005fb62000473565b500190565b6000602082840312156200061357600080fd5b81516001600160a01b03811681146200059957600080fd5b60805160a0516135796200068260003960008181610816015281816113eb015281816119c701528181611a62015281816123080152818161293401528181612d3e0152612d7201526000612a3801526135796000f3fe6080604052600436106103525760003560e01c806377b54bad116101c6578063c6ef2061116100f7578063efa5e34711610095578063f887ea401161006f578063f887ea4014610a1a578063fbde830514610a3a578063fe9fbb8014610a4f578063ffb54a9914610a6f57600080fd5b8063efa5e347146109ba578063f0b37c04146109da578063f2fde38b146109fa57600080fd5b8063d7c94efd116100d1578063d7c94efd1461091e578063dd62ed3e14610934578063df20fd491461097a578063e96fada21461099a57600080fd5b8063c6ef2061146108ae578063c867d60b146108ce578063d7c01032146108fe57600080fd5b806398118cb411610164578063a9059cbb1161013e578063a9059cbb14610838578063b6a5d7de14610858578063bd9ab53714610878578063bf56b3711461089857600080fd5b806398118cb4146107d8578063a5f3d003146107ee578063a8aa1b311461080457600080fd5b80637d1db4a5116101a05780637d1db4a514610740578063893d20e8146107565780638b42507f1461077457806395d89b41146107a457600080fd5b806377b54bad146106f557806378109e541461071557806379ba50971461072b57600080fd5b80632f54bf6e116102a05780635dc96d161161023e5780636ce46bc3116102185780636ce46bc31461066e5780636ddd17131461068e5780636ec518b8146106a857806370a08231146106c857600080fd5b80635dc96d16146106235780636917516b146106425780636b67c4df1461065857600080fd5b8063402911431161027a578063402911431461058b5780634be9d869146105c35780634d709adf146105e3578063571ac8b01461060357600080fd5b80632f54bf6e14610505578063313ce567146105345780633f4218e01461055b57600080fd5b80631693e8d41161030d5780631df4ccfc116102e75780631df4ccfc1461049a5780631e89d545146104b057806323b872dd146104d05780632b112e49146104f057600080fd5b80631693e8d41461045a578063180b0d7e1461046f57806318160ddd1461048557600080fd5b80621086831461035e578062bff446146103805780630445b667146103a057806306fdde03146103c957806309302dc61461040a578063095ea7b31461042a57600080fd5b3661035957005b600080fd5b34801561036a57600080fd5b5061037e610379366004612f3c565b610a89565b005b34801561038c57600080fd5b5061037e61039b366004612f3c565b610bac565b3480156103ac57600080fd5b506103b6601b5481565b6040519081526020015b60405180910390f35b3480156103d557600080fd5b506103fd6040518060400160405280600881526020016729b434b122b637b760c11b81525081565b6040516103c09190612f93565b34801561041657600080fd5b5061037e610425366004612fe8565b610cc0565b34801561043657600080fd5b5061044a610445366004613016565b610db5565b60405190151581526020016103c0565b34801561046657600080fd5b5061037e610e22565b34801561047b57600080fd5b506103b66103e881565b34801561049157600080fd5b506103b6610ee0565b3480156104a657600080fd5b506103b6600e5481565b3480156104bc57600080fd5b5061037e6104cb366004613042565b610efe565b3480156104dc57600080fd5b5061044a6104eb3660046130ae565b6110b9565b3480156104fc57600080fd5b506103b661117b565b34801561051157600080fd5b5061044a6105203660046130ef565b6000546001600160a01b0391821691161490565b34801561054057600080fd5b50610549600981565b60405160ff90911681526020016103c0565b34801561056757600080fd5b5061044a6105763660046130ef565b60076020526000908152604090205460ff1681565b34801561059757600080fd5b506014546105ab906001600160a01b031681565b6040516001600160a01b0390911681526020016103c0565b3480156105cf57600080fd5b5061037e6105de366004612f3c565b611203565b3480156105ef57600080fd5b506016546105ab906001600160a01b031681565b34801561060f57600080fd5b5061044a61061e3660046130ef565b611317565b34801561062f57600080fd5b5060185461044a90610100900460ff1681565b34801561064e57600080fd5b506103b660175481565b34801561066457600080fd5b506103b6600b5481565b34801561067a57600080fd5b5061037e61068936600461310c565b611325565b34801561069a57600080fd5b50601a5461044a9060ff1681565b3480156106b457600080fd5b506013546105ab906001600160a01b031681565b3480156106d457600080fd5b506103b66106e33660046130ef565b60056020526000908152604090205481565b34801561070157600080fd5b5061044a610710366004613016565b611366565b34801561072157600080fd5b506103b660045481565b34801561073757600080fd5b5061037e61159b565b34801561074c57600080fd5b506103b660035481565b34801561076257600080fd5b506000546001600160a01b03166105ab565b34801561078057600080fd5b5061044a61078f3660046130ef565b60086020526000908152604090205460ff1681565b3480156107b057600080fd5b506103fd6040518060400160405280600881526020016729a424a122a627a760c11b81525081565b3480156107e457600080fd5b506103b6600a5481565b3480156107fa57600080fd5b506103b6600d5481565b34801561081057600080fd5b506105ab7f000000000000000000000000000000000000000000000000000000000000000081565b34801561084457600080fd5b5061044a610853366004613016565b61171b565b34801561086457600080fd5b5061037e6108733660046130ef565b611728565b34801561088457600080fd5b5061037e610893366004612fe8565b611798565b3480156108a457600080fd5b506103b660195481565b3480156108ba57600080fd5b5061044a6108c9366004612fe8565b61188d565b3480156108da57600080fd5b5061044a6108e93660046130ef565b60096020526000908152604090205460ff1681565b34801561090a57600080fd5b5061037e610919366004613138565b611b0b565b34801561092a57600080fd5b506103b6600c5481565b34801561094057600080fd5b506103b661094f366004613178565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561098657600080fd5b5061037e6109953660046131b1565b611cf7565b3480156109a657600080fd5b506012546105ab906001600160a01b031681565b3480156109c657600080fd5b5061037e6109d53660046131cf565b611e24565b3480156109e657600080fd5b5061037e6109f53660046130ef565b611e8d565b348015610a0657600080fd5b5061037e610a153660046130ef565b611f53565b348015610a2657600080fd5b506015546105ab906001600160a01b031681565b348015610a4657600080fd5b5061037e612073565b348015610a5b57600080fd5b5061044a610a6a3660046130ef565b6120aa565b348015610a7b57600080fd5b5060185461044a9060ff1681565b610a92336120aa565b610ab75760405162461bcd60e51b8152600401610aae90613201565b60405180910390fd5b6101f58210610ad85760405162461bcd60e51b8152600401610aae90613226565b60005b82811015610ba6578160096000868685818110610afa57610afa61326b565b9050602002016020810190610b0f91906130ef565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f566c2270277919680152b0734389ae919d95ff7e9024c03fc3c7c209ec8412c7848483818110610b6a57610b6a61326b565b9050602002016020810190610b7f91906130ef565b83604051610b8e929190613281565b60405180910390a1610b9f816132b2565b9050610adb565b50505050565b610bb5336120aa565b610bd15760405162461bcd60e51b8152600401610aae90613201565b6101f58210610bf25760405162461bcd60e51b8152600401610aae90613226565b60005b82811015610ba6578160076000868685818110610c1457610c1461326b565b9050602002016020810190610c2991906130ef565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f9fbd25f95d342f2efc070b56d2fadd2341d264ef8c915dc268609b2ca1bb25de848483818110610c8457610c8461326b565b9050602002016020810190610c9991906130ef565b83604051610ca8929190613281565b60405180910390a1610cb9816132b2565b9050610bf5565b6000546001600160a01b03163314610cea5760405162461bcd60e51b8152600401610aae906132cb565b600a811015610d465760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261312560f01b6064820152608401610aae565b6103e881610d566009600a6133cf565b610d659064e8d4a510006133de565b610d6f91906133de565b610d7991906133fd565b60048190556040519081527fa69fa556bf940aa0c695b9c8e1b229fdb1476830e2025e44da1028e0c1458d4a906020015b60405180910390a150565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e109086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610e4c5760405162461bcd60e51b8152600401610aae906132cb565b60185460ff1615610e965760405162461bcd60e51b81526020600482015260146024820152732a3930b234b7339030b63932b0b23c9037b832b760611b6044820152606401610aae565b6018805460ff19166001908117909155426019556040519081527ff865819dcfd8250cfaa23e1ab7129c1ec65c617bae1e716699dfe07dd7c489ee906020015b60405180910390a1565b610eec6009600a6133cf565b610efb9064e8d4a510006133de565b81565b3360009081526007602052604090205460ff16610f1a57600080fd5b336101f58410610f3c5760405162461bcd60e51b8152600401610aae90613226565b838214610f9c5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e206164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610aae565b6000805b85811015610fe057848482818110610fba57610fba61326b565b9050602002013582610fcc919061341f565b915080610fd8816132b2565b915050610fa0565b506001600160a01b0382166000908152600560205260409020548111156110495760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610aae565b60005b858110156110b05761109d8388888481811061106a5761106a61326b565b905060200201602081019061107f91906130ef565b8787858181106110915761109161326b565b905060200201356120c8565b50806110a8816132b2565b91505061104c565b50505050505050565b6001600160a01b038316600090815260066020908152604080832033845290915281205460001914611166576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526006825283812033825290915291909120546111419184906121ae565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b6111718484846121e8565b90505b9392505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba549091906111db6009600a6133cf565b6111ea9064e8d4a510006133de565b6111f49190613437565b6111fe9190613437565b905090565b61120c336120aa565b6112285760405162461bcd60e51b8152600401610aae90613201565b6101f582106112495760405162461bcd60e51b8152600401610aae90613226565b60005b82811015610ba657816008600086868581811061126b5761126b61326b565b905060200201602081019061128091906130ef565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f3c4f06d74861dea6c152189f2ac8853b6f789feb0e1182101b7ad9d1858f70e38484838181106112db576112db61326b565b90506020020160208101906112f091906130ef565b836040516112ff929190613281565b60405180910390a1611310816132b2565b905061124c565b6000610e1c82600019610db5565b61132e336120aa565b61134a5760405162461bcd60e51b8152600401610aae90613201565b600f8290556010839055601181905561136161259e565b505050565b600080546001600160a01b031633146113915760405162461bcd60e51b8152600401610aae906132cb565b306001600160a01b038416036113e95760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e000000006044820152606401610aae565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361147557601954611433906302932e0061341f565b42116114755760405162461bcd60e51b81526020600482015260116024820152702637b1b5b2b2103337b91018903cb2b0b960791b6044820152606401610aae565b816000036114e8576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156114c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e5919061344e565b91505b604080516001600160a01b0385168152602081018490527f960427a4fde284dcc8da2c51a43d210cfd7ed6f4328a24ba33eee49910db564b910160405180910390a160405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611577573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111749190613467565b6001546001600160a01b0316331461162c5760405162461bcd60e51b815260206004820152604860248201527f596f75206d757374206265206e6f6d696e6174656420617320706f74656e746960448201527f616c206f776e6572206265666f726520796f752063616e2061636365707420746064820152673432903937b6329760c11b608482015260a401610aae565b600080546001600160a01b03908116825260026020526040808320805460ff1990811690915560018054841685528285208054909216179055825490516000805160206135248339815191529361168893929092169190613281565b60405180910390a160018054604051600080516020613524833981519152926116ba926001600160a01b031691613281565b60405180910390a160018054600080546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616390602001610ed6565b60006111743384846121e8565b6000546001600160a01b031633146117525760405162461bcd60e51b8152600401610aae906132cb565b6001600160a01b03811660009081526002602052604090819020805460ff19166001908117909155905160008051602061352483398151915291610daa91849190613281565b6000546001600160a01b031633146117c25760405162461bcd60e51b8152600401610aae906132cb565b60058110156118255760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e352560b81b6064820152608401610aae565b6103e8816118356009600a6133cf565b6118449064e8d4a510006133de565b61184e91906133de565b61185891906133fd565b60038190556040519081527f365a2bb07537fddd750e9ac8d56970e584f83a144bb5225e77491b83bccd118390602001610daa565b600080546001600160a01b031633146118b85760405162461bcd60e51b8152600401610aae906132cb565b6101f482111561191c5760405162461bcd60e51b815260206004820152602960248201527f4d6179206e6f74206e756b65206d6f7265207468616e203525206f6620746f6b6044820152680656e7320696e204c560bc1b6064820152608401610aae565b60175461192b9061012c61341f565b42116119645760405162461bcd60e51b81526020600482015260086024820152672a37b79039b7b7b760c11b6044820152606401610aae565b601854610100900460ff166119b05760405162461bcd60e51b8152602060048201526012602482015271109d5c9b9cc8185c9948191a5cd8589b195960721b6044820152606401610aae565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260009030906370a0823190602401602060405180830381865afa158015611a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3b919061344e565b90506000611a55612710611a4f8487612804565b90612886565b90508015611afd57611a8a7f000000000000000000000000000000000000000000000000000000000000000061dead836120c8565b50601660009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611adb57600080fd5b505af1158015611aef573d6000803e3d6000fd5b506001979650505050505050565b505042601755506000919050565b6000546001600160a01b03163314611b355760405162461bcd60e51b8152600401610aae906132cb565b6001600160a01b038316611ba05760405162461bcd60e51b815260206004820152602c60248201527f4d61726b6574696e672066656520616464726573732063616e6e6f742062652060448201526b7a65726f206164647265737360a01b6064820152608401610aae565b6001600160a01b038216611c065760405162461bcd60e51b815260206004820152602760248201527f5465616d2066656520616464726573732063616e6e6f74206265207a65726f206044820152666164647265737360c81b6064820152608401610aae565b6001600160a01b038116611c735760405162461bcd60e51b815260206004820152602e60248201527f446576656c6f706d656e742066656520616464726573732063616e6e6f74206260448201526d65207a65726f206164647265737360901b6064820152608401610aae565b601280546001600160a01b038581166001600160a01b0319928316811790935560148054868316908416811790915560138054928616929093168217909255604080519384526020840192909252908201527fb93b1ef445620c8661ebddddb575085ede7dfe08ccc6a91b933a6520249c3c7c9060600160405180910390a1505050565b6000546001600160a01b03163314611d215760405162461bcd60e51b8152600401610aae906132cb565b60328111611d635760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610aae565b620186a08110611da65760405162461bcd60e51b815260206004820152600e60248201526d416d6f756e7420746f6f206c6f7760901b6044820152606401610aae565b601a805460ff191683151517905580611dc16009600a6133cf565b611dd09064e8d4a510006133de565b611dda91906133fd565b601b819055601a546040805192835260ff909116151560208301527f34c2d4c263b6f41223c6d30ae2e7bcb18629892587e0a4138f57ba2c523953d0910160405180910390a15050565b6000546001600160a01b03163314611e4e5760405162461bcd60e51b8152600401610aae906132cb565b600a849055600b839055600c829055600d8190558082611e6e858761341f565b611e78919061341f565b611e82919061341f565b600e55610ba661259e565b6000546001600160a01b03163314611eb75760405162461bcd60e51b8152600401610aae906132cb565b6000546001600160a01b0390811690821603611f155760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610aae565b6001600160a01b038116600090815260026020526040808220805460ff191690555160008051602061352483398151915291610daa91849190613281565b6000546001600160a01b03163314611f7d5760405162461bcd60e51b8152600401610aae906132cb565b6000546001600160a01b0390811690821603611fcf5760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903a34329037bbb732b960791b6044820152606401610aae565b6001600160a01b0381166120255760405162461bcd60e51b815260206004820152601860248201527f43616e206e6f74206265207a65726f20616464726573732e00000000000000006044820152606401610aae565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527fe235b3289f2e990914b334bf6827949c27f6ba58d3e5a1d6f8415037ca1ef22290602001610daa565b6000546001600160a01b0316331461209d5760405162461bcd60e51b8152600401610aae906132cb565b6018805461ff0019169055565b6001600160a01b031660009081526002602052604090205460ff1690565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526005909152918220546121199184906121ae565b6001600160a01b03808616600090815260056020526040808220939093559085168152205461214890836128c8565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061219c9086815260200190565b60405180910390a35060019392505050565b600081848411156121d25760405162461bcd60e51b8152600401610aae9190612f93565b5060006121df8486613437565b95945050505050565b601c5460009060ff1615612208576122018484846120c8565b9050611174565b6001600160a01b03841660009081526002602052604090205460ff1615801561224a57506001600160a01b03831660009081526002602052604090205460ff16155b156122985760185460ff166122985760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610aae565b6001600160a01b03841660009081526002602052604090205460ff161580156122da57506001600160a01b03841660009081526009602052604090205460ff16155b80156122ff57506001600160a01b03831660009081526009602052604090205460ff16155b801561233d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156123b7576004546001600160a01b03841660009081526005602052604090205461236990849061341f565b11156123b75760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610aae565b600354821115806123e057506001600160a01b03841660009081526008602052604090205460ff165b8061240357506001600160a01b03831660009081526008602052604090205460ff165b6124475760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610aae565b61244f612927565b1561245c5761245c612993565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600590915291909120546124ae9184906121ae565b6001600160a01b038516600090815260056020908152604080832093909355600790529081205460ff16806124fb57506001600160a01b03841660009081526007602052604090205460ff165b61250f5761250a858486612d16565b612511565b825b6001600160a01b03851660009081526005602052604090205490915061253790826128c8565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061258b9085815260200190565b60405180910390a3506001949350505050565b60966125bc6064611a4f601054600e5461280490919063ffffffff16565b111561260a5760405162461bcd60e51b815260206004820152601f60248201527f427579207461782063616e6e6f74206265206d6f7265207468616e20313525006044820152606401610aae565b60966126286064611a4f600f54600e5461280490919063ffffffff16565b11156126765760405162461bcd60e51b815260206004820181905260248201527f53656c6c207461782063616e6e6f74206265206d6f7265207468616e203135256044820152606401610aae565b60f06126996064611a4f601054600f54612690919061341f565b600e5490612804565b11156126f35760405162461bcd60e51b8152602060048201526024808201527f4275792b53656c6c207461782063616e6e6f74206265206d6f7265207468616e6044820152632032342560e01b6064820152608401610aae565b60326127116064611a4f601154600e5461280490919063ffffffff16565b111561276b5760405162461bcd60e51b815260206004820152602360248201527f5472616e73666572205461782063616e6e6f74206265206d6f7265207468616e60448201526220352560e81b6064820152608401610aae565b7f375884ed7f92283ee74d8884b39a803f4aee832b15766fe016b74fc791fc2ada6127a86064611a4f601054600e5461280490919063ffffffff16565b6127c46064611a4f600f54600e5461280490919063ffffffff16565b6127e06064611a4f601154600e5461280490919063ffffffff16565b6040805160ff94851681529284166020840152921691810191909152606001610ed6565b60008260000361281657506000610e1c565b600061282283856133de565b90508261282f85836133fd565b146111745760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610aae565b600061117483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e6f565b6000806128d5838561341f565b9050838110156111745760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610aae565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906129655750601c5460ff16155b80156129735750601a5460ff165b80156111fe575050601b5430600090815260056020526040902054101590565b601c805460ff19166001179055600e5460006129b08260026133de565b600a54601b546129c091906133de565b6129ca91906133fd565b9050600081601b546129dc9190613437565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612a1657612a1661326b565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110612a6a57612a6a61326b565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac94790612ab0908590600090869030904290600401613484565b600060405180830381600087803b158015612aca57600080fd5b505af1158015612ade573d6000803e3d6000fd5b5050600a54479250612af391506002906133fd565b612afd9086613437565b94506000612b0c8660026133de565b600a54612b1990846133de565b612b2391906133fd565b9050600086600b5484612b3691906133de565b612b4091906133fd565b9050600087600c5485612b5391906133de565b612b5d91906133fd565b9050600088600d5486612b7091906133de565b612b7a91906133fd565b6012546040519192506001600160a01b03169084156108fc029085906000818181858888f19350505050158015612bb5573d6000803e3d6000fd5b506014546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612bf0573d6000803e3d6000fd5b506013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612c2b573d6000803e3d6000fd5b508715612d015760155460405163f305d71960e01b81523060048201819052602482018b9052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990869060c40160606040518083038185885af1158015612c9f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612cc491906134f5565b505060408051868152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601c805460ff1916905550505050505050565b6000821580612d255750600e54155b15612d31575081611174565b6011546001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690841603612d705750600f54612dae565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603612dae57506010545b6000612ddf612dc06103e860646133de565b611a4f84612dd9600e548a61280490919063ffffffff16565b90612804565b90508015612e5b5730600090815260056020526040902054612e0190826128c8565b30600081815260056020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612e529085815260200190565b60405180910390a35b612e658582612e9d565b9695505050505050565b60008183612e905760405162461bcd60e51b8152600401610aae9190612f93565b5060006121df84866133fd565b600061117483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121ae565b60008083601f840112612ef157600080fd5b50813567ffffffffffffffff811115612f0957600080fd5b6020830191508360208260051b8501011115612f2457600080fd5b9250929050565b8015158114612f3957600080fd5b50565b600080600060408486031215612f5157600080fd5b833567ffffffffffffffff811115612f6857600080fd5b612f7486828701612edf565b9094509250506020840135612f8881612f2b565b809150509250925092565b600060208083528351808285015260005b81811015612fc057858101830151858201604001528201612fa4565b81811115612fd2576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215612ffa57600080fd5b5035919050565b6001600160a01b0381168114612f3957600080fd5b6000806040838503121561302957600080fd5b823561303481613001565b946020939093013593505050565b6000806000806040858703121561305857600080fd5b843567ffffffffffffffff8082111561307057600080fd5b61307c88838901612edf565b9096509450602087013591508082111561309557600080fd5b506130a287828801612edf565b95989497509550505050565b6000806000606084860312156130c357600080fd5b83356130ce81613001565b925060208401356130de81613001565b929592945050506040919091013590565b60006020828403121561310157600080fd5b813561117481613001565b60008060006060848603121561312157600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561314d57600080fd5b833561315881613001565b9250602084013561316881613001565b91506040840135612f8881613001565b6000806040838503121561318b57600080fd5b823561319681613001565b915060208301356131a681613001565b809150509250929050565b600080604083850312156131c457600080fd5b823561303481612f2b565b600080600080608085870312156131e557600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039290921682521515602082015260400190565b634e487b7160e01b600052601160045260246000fd5b6000600182016132c4576132c461329c565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b8085111561332657816000190482111561330c5761330c61329c565b8085161561331957918102915b93841c93908002906132f0565b509250929050565b60008261333d57506001610e1c565b8161334a57506000610e1c565b8160018114613360576002811461336a57613386565b6001915050610e1c565b60ff84111561337b5761337b61329c565b50506001821b610e1c565b5060208310610133831016604e8410600b84101617156133a9575081810a610e1c565b6133b383836132eb565b80600019048211156133c7576133c761329c565b029392505050565b600061117460ff84168361332e565b60008160001904831182151516156133f8576133f861329c565b500290565b60008261341a57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156134325761343261329c565b500190565b6000828210156134495761344961329c565b500390565b60006020828403121561346057600080fd5b5051919050565b60006020828403121561347957600080fd5b815161117481612f2b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156134d45784516001600160a01b0316835293830193918301916001016134af565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561350a57600080fd5b835192506020840151915060408401519050925092509256feb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b9505a26469706673582212202d1e171879ec457ad3158ede3a4677d37942c18f9cec1ea9045c91eb77e60bb364736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106103525760003560e01c806377b54bad116101c6578063c6ef2061116100f7578063efa5e34711610095578063f887ea401161006f578063f887ea4014610a1a578063fbde830514610a3a578063fe9fbb8014610a4f578063ffb54a9914610a6f57600080fd5b8063efa5e347146109ba578063f0b37c04146109da578063f2fde38b146109fa57600080fd5b8063d7c94efd116100d1578063d7c94efd1461091e578063dd62ed3e14610934578063df20fd491461097a578063e96fada21461099a57600080fd5b8063c6ef2061146108ae578063c867d60b146108ce578063d7c01032146108fe57600080fd5b806398118cb411610164578063a9059cbb1161013e578063a9059cbb14610838578063b6a5d7de14610858578063bd9ab53714610878578063bf56b3711461089857600080fd5b806398118cb4146107d8578063a5f3d003146107ee578063a8aa1b311461080457600080fd5b80637d1db4a5116101a05780637d1db4a514610740578063893d20e8146107565780638b42507f1461077457806395d89b41146107a457600080fd5b806377b54bad146106f557806378109e541461071557806379ba50971461072b57600080fd5b80632f54bf6e116102a05780635dc96d161161023e5780636ce46bc3116102185780636ce46bc31461066e5780636ddd17131461068e5780636ec518b8146106a857806370a08231146106c857600080fd5b80635dc96d16146106235780636917516b146106425780636b67c4df1461065857600080fd5b8063402911431161027a578063402911431461058b5780634be9d869146105c35780634d709adf146105e3578063571ac8b01461060357600080fd5b80632f54bf6e14610505578063313ce567146105345780633f4218e01461055b57600080fd5b80631693e8d41161030d5780631df4ccfc116102e75780631df4ccfc1461049a5780631e89d545146104b057806323b872dd146104d05780632b112e49146104f057600080fd5b80631693e8d41461045a578063180b0d7e1461046f57806318160ddd1461048557600080fd5b80621086831461035e578062bff446146103805780630445b667146103a057806306fdde03146103c957806309302dc61461040a578063095ea7b31461042a57600080fd5b3661035957005b600080fd5b34801561036a57600080fd5b5061037e610379366004612f3c565b610a89565b005b34801561038c57600080fd5b5061037e61039b366004612f3c565b610bac565b3480156103ac57600080fd5b506103b6601b5481565b6040519081526020015b60405180910390f35b3480156103d557600080fd5b506103fd6040518060400160405280600881526020016729b434b122b637b760c11b81525081565b6040516103c09190612f93565b34801561041657600080fd5b5061037e610425366004612fe8565b610cc0565b34801561043657600080fd5b5061044a610445366004613016565b610db5565b60405190151581526020016103c0565b34801561046657600080fd5b5061037e610e22565b34801561047b57600080fd5b506103b66103e881565b34801561049157600080fd5b506103b6610ee0565b3480156104a657600080fd5b506103b6600e5481565b3480156104bc57600080fd5b5061037e6104cb366004613042565b610efe565b3480156104dc57600080fd5b5061044a6104eb3660046130ae565b6110b9565b3480156104fc57600080fd5b506103b661117b565b34801561051157600080fd5b5061044a6105203660046130ef565b6000546001600160a01b0391821691161490565b34801561054057600080fd5b50610549600981565b60405160ff90911681526020016103c0565b34801561056757600080fd5b5061044a6105763660046130ef565b60076020526000908152604090205460ff1681565b34801561059757600080fd5b506014546105ab906001600160a01b031681565b6040516001600160a01b0390911681526020016103c0565b3480156105cf57600080fd5b5061037e6105de366004612f3c565b611203565b3480156105ef57600080fd5b506016546105ab906001600160a01b031681565b34801561060f57600080fd5b5061044a61061e3660046130ef565b611317565b34801561062f57600080fd5b5060185461044a90610100900460ff1681565b34801561064e57600080fd5b506103b660175481565b34801561066457600080fd5b506103b6600b5481565b34801561067a57600080fd5b5061037e61068936600461310c565b611325565b34801561069a57600080fd5b50601a5461044a9060ff1681565b3480156106b457600080fd5b506013546105ab906001600160a01b031681565b3480156106d457600080fd5b506103b66106e33660046130ef565b60056020526000908152604090205481565b34801561070157600080fd5b5061044a610710366004613016565b611366565b34801561072157600080fd5b506103b660045481565b34801561073757600080fd5b5061037e61159b565b34801561074c57600080fd5b506103b660035481565b34801561076257600080fd5b506000546001600160a01b03166105ab565b34801561078057600080fd5b5061044a61078f3660046130ef565b60086020526000908152604090205460ff1681565b3480156107b057600080fd5b506103fd6040518060400160405280600881526020016729a424a122a627a760c11b81525081565b3480156107e457600080fd5b506103b6600a5481565b3480156107fa57600080fd5b506103b6600d5481565b34801561081057600080fd5b506105ab7f000000000000000000000000f5364c1a9c85c21c3496f1308feb79af48f17c8781565b34801561084457600080fd5b5061044a610853366004613016565b61171b565b34801561086457600080fd5b5061037e6108733660046130ef565b611728565b34801561088457600080fd5b5061037e610893366004612fe8565b611798565b3480156108a457600080fd5b506103b660195481565b3480156108ba57600080fd5b5061044a6108c9366004612fe8565b61188d565b3480156108da57600080fd5b5061044a6108e93660046130ef565b60096020526000908152604090205460ff1681565b34801561090a57600080fd5b5061037e610919366004613138565b611b0b565b34801561092a57600080fd5b506103b6600c5481565b34801561094057600080fd5b506103b661094f366004613178565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561098657600080fd5b5061037e6109953660046131b1565b611cf7565b3480156109a657600080fd5b506012546105ab906001600160a01b031681565b3480156109c657600080fd5b5061037e6109d53660046131cf565b611e24565b3480156109e657600080fd5b5061037e6109f53660046130ef565b611e8d565b348015610a0657600080fd5b5061037e610a153660046130ef565b611f53565b348015610a2657600080fd5b506015546105ab906001600160a01b031681565b348015610a4657600080fd5b5061037e612073565b348015610a5b57600080fd5b5061044a610a6a3660046130ef565b6120aa565b348015610a7b57600080fd5b5060185461044a9060ff1681565b610a92336120aa565b610ab75760405162461bcd60e51b8152600401610aae90613201565b60405180910390fd5b6101f58210610ad85760405162461bcd60e51b8152600401610aae90613226565b60005b82811015610ba6578160096000868685818110610afa57610afa61326b565b9050602002016020810190610b0f91906130ef565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f566c2270277919680152b0734389ae919d95ff7e9024c03fc3c7c209ec8412c7848483818110610b6a57610b6a61326b565b9050602002016020810190610b7f91906130ef565b83604051610b8e929190613281565b60405180910390a1610b9f816132b2565b9050610adb565b50505050565b610bb5336120aa565b610bd15760405162461bcd60e51b8152600401610aae90613201565b6101f58210610bf25760405162461bcd60e51b8152600401610aae90613226565b60005b82811015610ba6578160076000868685818110610c1457610c1461326b565b9050602002016020810190610c2991906130ef565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f9fbd25f95d342f2efc070b56d2fadd2341d264ef8c915dc268609b2ca1bb25de848483818110610c8457610c8461326b565b9050602002016020810190610c9991906130ef565b83604051610ca8929190613281565b60405180910390a1610cb9816132b2565b9050610bf5565b6000546001600160a01b03163314610cea5760405162461bcd60e51b8152600401610aae906132cb565b600a811015610d465760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261312560f01b6064820152608401610aae565b6103e881610d566009600a6133cf565b610d659064e8d4a510006133de565b610d6f91906133de565b610d7991906133fd565b60048190556040519081527fa69fa556bf940aa0c695b9c8e1b229fdb1476830e2025e44da1028e0c1458d4a906020015b60405180910390a150565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e109086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610e4c5760405162461bcd60e51b8152600401610aae906132cb565b60185460ff1615610e965760405162461bcd60e51b81526020600482015260146024820152732a3930b234b7339030b63932b0b23c9037b832b760611b6044820152606401610aae565b6018805460ff19166001908117909155426019556040519081527ff865819dcfd8250cfaa23e1ab7129c1ec65c617bae1e716699dfe07dd7c489ee906020015b60405180910390a1565b610eec6009600a6133cf565b610efb9064e8d4a510006133de565b81565b3360009081526007602052604090205460ff16610f1a57600080fd5b336101f58410610f3c5760405162461bcd60e51b8152600401610aae90613226565b838214610f9c5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e206164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610aae565b6000805b85811015610fe057848482818110610fba57610fba61326b565b9050602002013582610fcc919061341f565b915080610fd8816132b2565b915050610fa0565b506001600160a01b0382166000908152600560205260409020548111156110495760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610aae565b60005b858110156110b05761109d8388888481811061106a5761106a61326b565b905060200201602081019061107f91906130ef565b8787858181106110915761109161326b565b905060200201356120c8565b50806110a8816132b2565b91505061104c565b50505050505050565b6001600160a01b038316600090815260066020908152604080832033845290915281205460001914611166576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526006825283812033825290915291909120546111419184906121ae565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b6111718484846121e8565b90505b9392505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba549091906111db6009600a6133cf565b6111ea9064e8d4a510006133de565b6111f49190613437565b6111fe9190613437565b905090565b61120c336120aa565b6112285760405162461bcd60e51b8152600401610aae90613201565b6101f582106112495760405162461bcd60e51b8152600401610aae90613226565b60005b82811015610ba657816008600086868581811061126b5761126b61326b565b905060200201602081019061128091906130ef565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f3c4f06d74861dea6c152189f2ac8853b6f789feb0e1182101b7ad9d1858f70e38484838181106112db576112db61326b565b90506020020160208101906112f091906130ef565b836040516112ff929190613281565b60405180910390a1611310816132b2565b905061124c565b6000610e1c82600019610db5565b61132e336120aa565b61134a5760405162461bcd60e51b8152600401610aae90613201565b600f8290556010839055601181905561136161259e565b505050565b600080546001600160a01b031633146113915760405162461bcd60e51b8152600401610aae906132cb565b306001600160a01b038416036113e95760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e000000006044820152606401610aae565b7f000000000000000000000000f5364c1a9c85c21c3496f1308feb79af48f17c876001600160a01b0316836001600160a01b03160361147557601954611433906302932e0061341f565b42116114755760405162461bcd60e51b81526020600482015260116024820152702637b1b5b2b2103337b91018903cb2b0b960791b6044820152606401610aae565b816000036114e8576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156114c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e5919061344e565b91505b604080516001600160a01b0385168152602081018490527f960427a4fde284dcc8da2c51a43d210cfd7ed6f4328a24ba33eee49910db564b910160405180910390a160405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611577573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111749190613467565b6001546001600160a01b0316331461162c5760405162461bcd60e51b815260206004820152604860248201527f596f75206d757374206265206e6f6d696e6174656420617320706f74656e746960448201527f616c206f776e6572206265666f726520796f752063616e2061636365707420746064820152673432903937b6329760c11b608482015260a401610aae565b600080546001600160a01b03908116825260026020526040808320805460ff1990811690915560018054841685528285208054909216179055825490516000805160206135248339815191529361168893929092169190613281565b60405180910390a160018054604051600080516020613524833981519152926116ba926001600160a01b031691613281565b60405180910390a160018054600080546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616390602001610ed6565b60006111743384846121e8565b6000546001600160a01b031633146117525760405162461bcd60e51b8152600401610aae906132cb565b6001600160a01b03811660009081526002602052604090819020805460ff19166001908117909155905160008051602061352483398151915291610daa91849190613281565b6000546001600160a01b031633146117c25760405162461bcd60e51b8152600401610aae906132cb565b60058110156118255760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e352560b81b6064820152608401610aae565b6103e8816118356009600a6133cf565b6118449064e8d4a510006133de565b61184e91906133de565b61185891906133fd565b60038190556040519081527f365a2bb07537fddd750e9ac8d56970e584f83a144bb5225e77491b83bccd118390602001610daa565b600080546001600160a01b031633146118b85760405162461bcd60e51b8152600401610aae906132cb565b6101f482111561191c5760405162461bcd60e51b815260206004820152602960248201527f4d6179206e6f74206e756b65206d6f7265207468616e203525206f6620746f6b6044820152680656e7320696e204c560bc1b6064820152608401610aae565b60175461192b9061012c61341f565b42116119645760405162461bcd60e51b81526020600482015260086024820152672a37b79039b7b7b760c11b6044820152606401610aae565b601854610100900460ff166119b05760405162461bcd60e51b8152602060048201526012602482015271109d5c9b9cc8185c9948191a5cd8589b195960721b6044820152606401610aae565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000f5364c1a9c85c21c3496f1308feb79af48f17c8716600482015260009030906370a0823190602401602060405180830381865afa158015611a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3b919061344e565b90506000611a55612710611a4f8487612804565b90612886565b90508015611afd57611a8a7f000000000000000000000000f5364c1a9c85c21c3496f1308feb79af48f17c8761dead836120c8565b50601660009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611adb57600080fd5b505af1158015611aef573d6000803e3d6000fd5b506001979650505050505050565b505042601755506000919050565b6000546001600160a01b03163314611b355760405162461bcd60e51b8152600401610aae906132cb565b6001600160a01b038316611ba05760405162461bcd60e51b815260206004820152602c60248201527f4d61726b6574696e672066656520616464726573732063616e6e6f742062652060448201526b7a65726f206164647265737360a01b6064820152608401610aae565b6001600160a01b038216611c065760405162461bcd60e51b815260206004820152602760248201527f5465616d2066656520616464726573732063616e6e6f74206265207a65726f206044820152666164647265737360c81b6064820152608401610aae565b6001600160a01b038116611c735760405162461bcd60e51b815260206004820152602e60248201527f446576656c6f706d656e742066656520616464726573732063616e6e6f74206260448201526d65207a65726f206164647265737360901b6064820152608401610aae565b601280546001600160a01b038581166001600160a01b0319928316811790935560148054868316908416811790915560138054928616929093168217909255604080519384526020840192909252908201527fb93b1ef445620c8661ebddddb575085ede7dfe08ccc6a91b933a6520249c3c7c9060600160405180910390a1505050565b6000546001600160a01b03163314611d215760405162461bcd60e51b8152600401610aae906132cb565b60328111611d635760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610aae565b620186a08110611da65760405162461bcd60e51b815260206004820152600e60248201526d416d6f756e7420746f6f206c6f7760901b6044820152606401610aae565b601a805460ff191683151517905580611dc16009600a6133cf565b611dd09064e8d4a510006133de565b611dda91906133fd565b601b819055601a546040805192835260ff909116151560208301527f34c2d4c263b6f41223c6d30ae2e7bcb18629892587e0a4138f57ba2c523953d0910160405180910390a15050565b6000546001600160a01b03163314611e4e5760405162461bcd60e51b8152600401610aae906132cb565b600a849055600b839055600c829055600d8190558082611e6e858761341f565b611e78919061341f565b611e82919061341f565b600e55610ba661259e565b6000546001600160a01b03163314611eb75760405162461bcd60e51b8152600401610aae906132cb565b6000546001600160a01b0390811690821603611f155760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610aae565b6001600160a01b038116600090815260026020526040808220805460ff191690555160008051602061352483398151915291610daa91849190613281565b6000546001600160a01b03163314611f7d5760405162461bcd60e51b8152600401610aae906132cb565b6000546001600160a01b0390811690821603611fcf5760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903a34329037bbb732b960791b6044820152606401610aae565b6001600160a01b0381166120255760405162461bcd60e51b815260206004820152601860248201527f43616e206e6f74206265207a65726f20616464726573732e00000000000000006044820152606401610aae565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527fe235b3289f2e990914b334bf6827949c27f6ba58d3e5a1d6f8415037ca1ef22290602001610daa565b6000546001600160a01b0316331461209d5760405162461bcd60e51b8152600401610aae906132cb565b6018805461ff0019169055565b6001600160a01b031660009081526002602052604090205460ff1690565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526005909152918220546121199184906121ae565b6001600160a01b03808616600090815260056020526040808220939093559085168152205461214890836128c8565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061219c9086815260200190565b60405180910390a35060019392505050565b600081848411156121d25760405162461bcd60e51b8152600401610aae9190612f93565b5060006121df8486613437565b95945050505050565b601c5460009060ff1615612208576122018484846120c8565b9050611174565b6001600160a01b03841660009081526002602052604090205460ff1615801561224a57506001600160a01b03831660009081526002602052604090205460ff16155b156122985760185460ff166122985760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610aae565b6001600160a01b03841660009081526002602052604090205460ff161580156122da57506001600160a01b03841660009081526009602052604090205460ff16155b80156122ff57506001600160a01b03831660009081526009602052604090205460ff16155b801561233d57507f000000000000000000000000f5364c1a9c85c21c3496f1308feb79af48f17c876001600160a01b0316836001600160a01b031614155b156123b7576004546001600160a01b03841660009081526005602052604090205461236990849061341f565b11156123b75760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610aae565b600354821115806123e057506001600160a01b03841660009081526008602052604090205460ff165b8061240357506001600160a01b03831660009081526008602052604090205460ff165b6124475760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610aae565b61244f612927565b1561245c5761245c612993565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600590915291909120546124ae9184906121ae565b6001600160a01b038516600090815260056020908152604080832093909355600790529081205460ff16806124fb57506001600160a01b03841660009081526007602052604090205460ff165b61250f5761250a858486612d16565b612511565b825b6001600160a01b03851660009081526005602052604090205490915061253790826128c8565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061258b9085815260200190565b60405180910390a3506001949350505050565b60966125bc6064611a4f601054600e5461280490919063ffffffff16565b111561260a5760405162461bcd60e51b815260206004820152601f60248201527f427579207461782063616e6e6f74206265206d6f7265207468616e20313525006044820152606401610aae565b60966126286064611a4f600f54600e5461280490919063ffffffff16565b11156126765760405162461bcd60e51b815260206004820181905260248201527f53656c6c207461782063616e6e6f74206265206d6f7265207468616e203135256044820152606401610aae565b60f06126996064611a4f601054600f54612690919061341f565b600e5490612804565b11156126f35760405162461bcd60e51b8152602060048201526024808201527f4275792b53656c6c207461782063616e6e6f74206265206d6f7265207468616e6044820152632032342560e01b6064820152608401610aae565b60326127116064611a4f601154600e5461280490919063ffffffff16565b111561276b5760405162461bcd60e51b815260206004820152602360248201527f5472616e73666572205461782063616e6e6f74206265206d6f7265207468616e60448201526220352560e81b6064820152608401610aae565b7f375884ed7f92283ee74d8884b39a803f4aee832b15766fe016b74fc791fc2ada6127a86064611a4f601054600e5461280490919063ffffffff16565b6127c46064611a4f600f54600e5461280490919063ffffffff16565b6127e06064611a4f601154600e5461280490919063ffffffff16565b6040805160ff94851681529284166020840152921691810191909152606001610ed6565b60008260000361281657506000610e1c565b600061282283856133de565b90508261282f85836133fd565b146111745760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610aae565b600061117483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e6f565b6000806128d5838561341f565b9050838110156111745760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610aae565b6000336001600160a01b037f000000000000000000000000f5364c1a9c85c21c3496f1308feb79af48f17c8716148015906129655750601c5460ff16155b80156129735750601a5460ff165b80156111fe575050601b5430600090815260056020526040902054101590565b601c805460ff19166001179055600e5460006129b08260026133de565b600a54601b546129c091906133de565b6129ca91906133fd565b9050600081601b546129dc9190613437565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612a1657612a1661326b565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110612a6a57612a6a61326b565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac94790612ab0908590600090869030904290600401613484565b600060405180830381600087803b158015612aca57600080fd5b505af1158015612ade573d6000803e3d6000fd5b5050600a54479250612af391506002906133fd565b612afd9086613437565b94506000612b0c8660026133de565b600a54612b1990846133de565b612b2391906133fd565b9050600086600b5484612b3691906133de565b612b4091906133fd565b9050600087600c5485612b5391906133de565b612b5d91906133fd565b9050600088600d5486612b7091906133de565b612b7a91906133fd565b6012546040519192506001600160a01b03169084156108fc029085906000818181858888f19350505050158015612bb5573d6000803e3d6000fd5b506014546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612bf0573d6000803e3d6000fd5b506013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612c2b573d6000803e3d6000fd5b508715612d015760155460405163f305d71960e01b81523060048201819052602482018b9052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990869060c40160606040518083038185885af1158015612c9f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612cc491906134f5565b505060408051868152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601c805460ff1916905550505050505050565b6000821580612d255750600e54155b15612d31575081611174565b6011546001600160a01b037f000000000000000000000000f5364c1a9c85c21c3496f1308feb79af48f17c87811690841603612d705750600f54612dae565b7f000000000000000000000000f5364c1a9c85c21c3496f1308feb79af48f17c876001600160a01b0316856001600160a01b031603612dae57506010545b6000612ddf612dc06103e860646133de565b611a4f84612dd9600e548a61280490919063ffffffff16565b90612804565b90508015612e5b5730600090815260056020526040902054612e0190826128c8565b30600081815260056020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612e529085815260200190565b60405180910390a35b612e658582612e9d565b9695505050505050565b60008183612e905760405162461bcd60e51b8152600401610aae9190612f93565b5060006121df84866133fd565b600061117483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121ae565b60008083601f840112612ef157600080fd5b50813567ffffffffffffffff811115612f0957600080fd5b6020830191508360208260051b8501011115612f2457600080fd5b9250929050565b8015158114612f3957600080fd5b50565b600080600060408486031215612f5157600080fd5b833567ffffffffffffffff811115612f6857600080fd5b612f7486828701612edf565b9094509250506020840135612f8881612f2b565b809150509250925092565b600060208083528351808285015260005b81811015612fc057858101830151858201604001528201612fa4565b81811115612fd2576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215612ffa57600080fd5b5035919050565b6001600160a01b0381168114612f3957600080fd5b6000806040838503121561302957600080fd5b823561303481613001565b946020939093013593505050565b6000806000806040858703121561305857600080fd5b843567ffffffffffffffff8082111561307057600080fd5b61307c88838901612edf565b9096509450602087013591508082111561309557600080fd5b506130a287828801612edf565b95989497509550505050565b6000806000606084860312156130c357600080fd5b83356130ce81613001565b925060208401356130de81613001565b929592945050506040919091013590565b60006020828403121561310157600080fd5b813561117481613001565b60008060006060848603121561312157600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561314d57600080fd5b833561315881613001565b9250602084013561316881613001565b91506040840135612f8881613001565b6000806040838503121561318b57600080fd5b823561319681613001565b915060208301356131a681613001565b809150509250929050565b600080604083850312156131c457600080fd5b823561303481612f2b565b600080600080608085870312156131e557600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039290921682521515602082015260400190565b634e487b7160e01b600052601160045260246000fd5b6000600182016132c4576132c461329c565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b8085111561332657816000190482111561330c5761330c61329c565b8085161561331957918102915b93841c93908002906132f0565b509250929050565b60008261333d57506001610e1c565b8161334a57506000610e1c565b8160018114613360576002811461336a57613386565b6001915050610e1c565b60ff84111561337b5761337b61329c565b50506001821b610e1c565b5060208310610133831016604e8410600b84101617156133a9575081810a610e1c565b6133b383836132eb565b80600019048211156133c7576133c761329c565b029392505050565b600061117460ff84168361332e565b60008160001904831182151516156133f8576133f861329c565b500290565b60008261341a57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156134325761343261329c565b500190565b6000828210156134495761344961329c565b500390565b60006020828403121561346057600080fd5b5051919050565b60006020828403121561347957600080fd5b815161117481612f2b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156134d45784516001600160a01b0316835293830193918301916001016134af565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561350a57600080fd5b835192506020840151915060408401519050925092509256feb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b9505a26469706673582212202d1e171879ec457ad3158ede3a4677d37942c18f9cec1ea9045c91eb77e60bb364736f6c634300080f0033

Deployed Bytecode Sourcemap

4758:15168:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14966:373;;;;;;;;;;-1:-1:-1;14966:373:0;;;;;:::i;:::-;;:::i;:::-;;14237:353;;;;;;;;;;-1:-1:-1;14237:353:0;;;;;:::i;:::-;;:::i;6441:49::-;;;;;;;;;;;;;;;;;;;1226:25:1;;;1214:2;1199:18;6441:49:0;;;;;;;;5015:40;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5015:40:0;;;;;;;;;;;;:::i;8683:309::-;;;;;;;;;;-1:-1:-1;8683:309:0;;;;;:::i;:::-;;:::i;7787:216::-;;;;;;;;;;-1:-1:-1;7787:216:0;;;;;:::i;:::-;;:::i;:::-;;;2670:14:1;;2663:22;2645:41;;2633:2;2618:18;7787:216:0;2505:187:1;12341:224:0;;;;;;;;;;;;;:::i;5868:45::-;;;;;;;;;;;;5909:4;5868:45;;5154:63;;;;;;;;;;;;;:::i;5781:80::-;;;;;;;;;;;;;;;;17893:633;;;;;;;;;;-1:-1:-1;17893:633:0;;;;;:::i;:::-;;:::i;8305:370::-;;;;;;;;;;-1:-1:-1;8305:370:0;;;;;:::i;:::-;;:::i;17750:137::-;;;;;;;;;;;;;:::i;2864:103::-;;;;;;;;;;-1:-1:-1;2864:103:0;;;;;:::i;:::-;2919:4;2954:5;-1:-1:-1;;;;;2943:16:0;;;2954:5;;2943:16;;2864:103;5111:34;;;;;;;;;;;;5144:1;5111:34;;;;;4360:4:1;4348:17;;;4330:36;;4318:2;4303:18;5111:34:0;4188:184:1;5461:44:0;;;;;;;;;;-1:-1:-1;5461:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6117:30;;;;;;;;;;-1:-1:-1;6117:30:0;;;;-1:-1:-1;;;;;6117:30:0;;;;;;-1:-1:-1;;;;;4541:32:1;;;4523:51;;4511:2;4496:18;6117:30:0;4377:203:1;14598:360:0;;;;;;;;;;-1:-1:-1;14598:360:0;;;;;:::i;:::-;;:::i;6225:31::-;;;;;;;;;;-1:-1:-1;6225:31:0;;;;-1:-1:-1;;;;;6225:31:0;;;8011:122;;;;;;;;;;-1:-1:-1;8011:122:0;;;;;:::i;:::-;;:::i;6333:30::-;;;;;;;;;;-1:-1:-1;6333:30:0;;;;;;;;;;;6263:23;;;;;;;;;;;;;;;;5667:32;;;;;;;;;;;;;;;;16028:225;;;;;;;;;;-1:-1:-1;16028:225:0;;;;;:::i;:::-;;:::i;6404:30::-;;;;;;;;;;-1:-1:-1;6404:30:0;;;;;;;;6073:37;;;;;;;;;;-1:-1:-1;6073:37:0;;;;-1:-1:-1;;;;;6073:37:0;;;5339:45;;;;;;;;;;-1:-1:-1;5339:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;11763:547;;;;;;;;;;-1:-1:-1;11763:547:0;;;;;:::i;:::-;;:::i;5280:50::-;;;;;;;;;;;;;;;;3361:472;;;;;;;;;;;;;:::i;5226:47::-;;;;;;;;;;;;;;;;7562:78;;;;;;;;;;-1:-1:-1;7614:7:0;7632:5;-1:-1:-1;;;;;7632:5:0;7562:78;;5512:48;;;;;;;;;;-1:-1:-1;5512:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5062:42;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5062:42:0;;;;;5628:32;;;;;;;;;;;;;;;;5740:34;;;;;;;;;;;;;;;;6187:29;;;;;;;;;;;;;;;8141:156;;;;;;;;;;-1:-1:-1;8141:156:0;;;;;:::i;:::-;;:::i;2506:138::-;;;;;;;;;;-1:-1:-1;2506:138:0;;;;;:::i;:::-;;:::i;8998:313::-;;;;;;;;;;-1:-1:-1;8998:313:0;;;;;:::i;:::-;;:::i;6370:25::-;;;;;;;;;;;;;;;;18530:577;;;;;;;;;;-1:-1:-1;18530:577:0;;;;;:::i;:::-;;:::i;5567:52::-;;;;;;;;;;-1:-1:-1;5567:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16676:695;;;;;;;;;;-1:-1:-1;16676:695:0;;;;;:::i;:::-;;:::i;5706:27::-;;;;;;;;;;;;;;;;7646:133;;;;;;;;;;-1:-1:-1;7646:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7748:19:0;;;7730:7;7748:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7646:133;17379:359;;;;;;;;;;-1:-1:-1;17379:359:0;;;;;:::i;:::-;;:::i;6031:35::-;;;;;;;;;;-1:-1:-1;6031:35:0;;;;-1:-1:-1;;;;;6031:35:0;;;16261:407;;;;;;;;;;-1:-1:-1;16261:407:0;;;;;:::i;:::-;;:::i;2652:204::-;;;;;;;;;;-1:-1:-1;2652:204:0;;;;;:::i;:::-;;:::i;3090:263::-;;;;;;;;;;-1:-1:-1;3090:263:0;;;;;:::i;:::-;;:::i;6156:24::-;;;;;;;;;;-1:-1:-1;6156:24:0;;;;-1:-1:-1;;;;;6156:24:0;;;12573:81;;;;;;;;;;;;;:::i;2975:107::-;;;;;;;;;;-1:-1:-1;2975:107:0;;;;;:::i;:::-;;:::i;6295:31::-;;;;;;;;;;-1:-1:-1;6295:31:0;;;;;;;;14966:373;2447:24;2460:10;2447:12;:24::i;:::-;2439:48;;;;-1:-1:-1;;;2439:48:0;;;;;;;:::i;:::-;;;;;;;;;15101:3:::1;15082:22:::0;::::1;15074:71;;;;-1:-1:-1::0;;;15074:71:0::1;;;;;;;:::i;:::-;15161:9;15156:176;15174:20:::0;;::::1;15156:176;;;15252:6;15216:19;:33;15236:9;;15246:1;15236:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15216:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15216:33:0;:42;;-1:-1:-1;;15216:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15278::::1;15299:9:::0;;15309:1;15299:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15313:6;15278:42;;;;;;;:::i;:::-;;;;;;;;15196:3;::::0;::::1;:::i;:::-;;;15156:176;;;;14966:373:::0;;;:::o;14237:353::-;2447:24;2460:10;2447:12;:24::i;:::-;2439:48;;;;-1:-1:-1;;;2439:48:0;;;;;;;:::i;:::-;14364:3:::1;14345:22:::0;::::1;14337:71;;;;-1:-1:-1::0;;;14337:71:0::1;;;;;;;:::i;:::-;14424:9;14419:164;14437:20:::0;;::::1;14419:164;;;14507:6;14479:11;:25;14491:9;;14501:1;14491:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14479:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14479:25:0;:34;;-1:-1:-1;;14479:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14533:38:::1;14550:9:::0;;14560:1;14550:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14564:6;14533:38;;;;;;;:::i;:::-;;;;;;;;14459:3;::::0;::::1;:::i;:::-;;;14419:164;;8683:309:::0;2919:4;2954:5;-1:-1:-1;;;;;2954:5:0;2365:10;2943:16;2349:38;;;;-1:-1:-1;;;2349:38:0;;;;;;;:::i;:::-;8819:2:::1;8792:23;:29;;8784:75;;;::::0;-1:-1:-1;;;8784:75:0;;9225:2:1;8784:75:0::1;::::0;::::1;9207:21:1::0;9264:2;9244:18;;;9237:30;9303:34;9283:18;;;9276:62;-1:-1:-1;;;9354:18:1;;;9347:32;9396:19;;8784:75:0::1;9023:398:1::0;8784:75:0::1;8931:4;8903:23:::0;5205:12:::1;5144:1;5205:2;:12;:::i;:::-;5192:25;::::0;:10:::1;:25;:::i;:::-;8889:37;;;;:::i;:::-;8888:47;;;;:::i;:::-;8870:15;:65:::0;;;8951:33:::1;::::0;1226:25:1;;;8951:33:0::1;::::0;1214:2:1;1199:18;8951:33:0::1;;;;;;;;8683:309:::0;:::o;7787:216::-;7891:10;7862:4;7879:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7879:32:0;;;;;;;;;;:41;;;7936:37;7862:4;;7879:32;;7936:37;;;;7914:6;1226:25:1;;1214:2;1199:18;;1080:177;7936:37:0;;;;;;;;-1:-1:-1;7991:4:0;7787:216;;;;;:::o;12341:224::-;2919:4;2954:5;-1:-1:-1;;;;;2954:5:0;2365:10;2943:16;2349:38;;;;-1:-1:-1;;;2349:38:0;;;;;;;:::i;:::-;12405:11:::1;::::0;::::1;;12404:12;12396:44;;;::::0;-1:-1:-1;;;12396:44:0;;11406:2:1;12396:44:0::1;::::0;::::1;11388:21:1::0;11445:2;11425:18;;;11418:30;-1:-1:-1;;;11464:18:1;;;11457:50;11524:18;;12396:44:0::1;11204:344:1::0;12396:44:0::1;12451:11;:18:::0;;-1:-1:-1;;12451:18:0::1;12465:4;12451:18:::0;;::::1;::::0;;;12493:15:::1;12480:10;:28:::0;12524:33:::1;::::0;2645:41:1;;;12524:33:0::1;::::0;2633:2:1;2618:18;12524:33:0::1;;;;;;;;12341:224::o:0;5154:63::-;5205:12;5144:1;5205:2;:12;:::i;:::-;5192:25;;:10;:25;:::i;:::-;5154:63;:::o;17893:633::-;18009:10;17997:23;;;;:11;:23;;;;;;;;17989:32;;;;;;18043:10;18089:3;18070:22;;18062:71;;;;-1:-1:-1;;;18062:71:0;;;;;;;:::i;:::-;18148:33;;;18140:85;;;;-1:-1:-1;;;18140:85:0;;11755:2:1;18140:85:0;;;11737:21:1;11794:2;11774:18;;;11767:30;11833:34;11813:18;;;11806:62;-1:-1:-1;;;11884:18:1;;;11877:38;11932:19;;18140:85:0;11553:404:1;18140:85:0;18234:12;18263:6;18259:82;18273:20;;;18259:82;;;18324:6;;18331:1;18324:9;;;;;;;:::i;:::-;;;;;;;18317:4;:16;;;;:::i;:::-;18310:23;-1:-1:-1;18295:3:0;;;;:::i;:::-;;;;18259:82;;;-1:-1:-1;;;;;;18357:15:0;;;;;;:9;:15;;;;;;:23;-1:-1:-1;18357:23:0;18349:63;;;;-1:-1:-1;;;18349:63:0;;12297:2:1;18349:63:0;;;12279:21:1;12336:2;12316:18;;;12309:30;12375:29;12355:18;;;12348:57;12422:18;;18349:63:0;12095:351:1;18349:63:0;18425:6;18421:102;18435:20;;;18421:102;;;18472:43;18487:4;18492:9;;18502:1;18492:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;18505:6;;18512:1;18505:9;;;;;;;:::i;:::-;;;;;;;18472:14;:43::i;:::-;-1:-1:-1;18457:3:0;;;;:::i;:::-;;;;18421:102;;;;17982:544;;17893:633;;;;:::o;8305:370::-;-1:-1:-1;;;;;8425:19:0;;8405:4;8425:19;;;:11;:19;;;;;;;;8445:10;8425:31;;;;;;;;-1:-1:-1;;8425:52:0;8422:186;;8527:69;;;;;;;;;;;-1:-1:-1;;;8527:69:0;;;;;;;;-1:-1:-1;;;;;8527:19:0;;-1:-1:-1;8527:19:0;;;:11;:19;;;;;8547:10;8527:31;;;;;;;;;;:69;;8563:6;;8527:35;:69::i;:::-;-1:-1:-1;;;;;8493:19:0;;;;;;:11;:19;;;;;;;;8513:10;8493:31;;;;;;;:103;8422:186;8627:40;8641:6;8649:9;8660:6;8627:13;:40::i;:::-;8620:47;;8305:370;;;;;;:::o;17750:137::-;17863:9;:15;;;;4891:42;17803:7;17845:15;;;;;17803:7;;17863:15;5205:12;5144:1;5205:2;:12;:::i;:::-;5192:25;;:10;:25;:::i;:::-;17831:29;;;;:::i;:::-;:47;;;;:::i;:::-;17823:56;;17750:137;:::o;14598:360::-;2447:24;2460:10;2447:12;:24::i;:::-;2439:48;;;;-1:-1:-1;;;2439:48:0;;;;;;;:::i;:::-;14729:3:::1;14710:22:::0;::::1;14702:71;;;;-1:-1:-1::0;;;14702:71:0::1;;;;;;;:::i;:::-;14789:9;14784:167;14802:20:::0;;::::1;14784:167;;;14876:6;14844:15;:29;14860:9;;14870:1;14860:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14844:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14844:29:0;:38;;-1:-1:-1;;14844:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14902:37:::1;14918:9:::0;;14928:1;14918:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14932:6;14902:37;;;;;;;:::i;:::-;;;;;;;;14824:3;::::0;::::1;:::i;:::-;;;14784:167;;8011:122:::0;8066:4;8090:35;8098:7;-1:-1:-1;;8090:7:0;:35::i;16028:225::-;2447:24;2460:10;2447:12;:24::i;:::-;2439:48;;;;-1:-1:-1;;;2439:48:0;;;;;;;:::i;:::-;16128:14:::1;:22:::0;;;16161:13:::1;:20:::0;;;16192:18:::1;:27:::0;;;16232:13:::1;:11;:13::i;:::-;16028:225:::0;;;:::o;11763:547::-;11854:12;2954:5;;-1:-1:-1;;;;;2954:5:0;2365:10;2943:16;2349:38;;;;-1:-1:-1;;;2349:38:0;;;;;;;:::i;:::-;11911:4:::1;-1:-1:-1::0;;;;;11887:29:0;::::1;::::0;11879:69:::1;;;::::0;-1:-1:-1;;;11879:69:0;;12783:2:1;11879:69:0::1;::::0;::::1;12765:21:1::0;12822:2;12802:18;;;12795:30;12861;12841:18;;;12834:58;12909:18;;11879:69:0::1;12581:352:1::0;11879:69:0::1;11978:4;-1:-1:-1::0;;;;;11962:20:0::1;:12;-1:-1:-1::0;;;;;11962:20:0::1;::::0;11959:119:::1;;12024:10;::::0;:21:::1;::::0;12037:8:::1;12024:21;:::i;:::-;12006:15;:39;11998:68;;;::::0;-1:-1:-1;;;11998:68:0;;13140:2:1;11998:68:0::1;::::0;::::1;13122:21:1::0;13179:2;13159:18;;;13152:30;-1:-1:-1;;;13198:18:1;;;13191:47;13255:18;;11998:68:0::1;12938:341:1::0;11998:68:0::1;12093:6;12103:1;12093:11:::0;12090:95:::1;;12129:44;::::0;-1:-1:-1;;;12129:44:0;;12167:4:::1;12129:44;::::0;::::1;4523:51:1::0;-1:-1:-1;;;;;12129:29:0;::::1;::::0;::::1;::::0;4496:18:1;;12129:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12120:53;;12090:95;12202:32;::::0;;-1:-1:-1;;;;;13665:32:1;;13647:51;;13729:2;13714:18;;13707:34;;;12202:32:0::1;::::0;13620:18:1;12202:32:0::1;;;;;;;12254:48;::::0;-1:-1:-1;;;12254:48:0;;12283:10:::1;12254:48;::::0;::::1;13647:51:1::0;13714:18;;;13707:34;;;-1:-1:-1;;;;;12254:28:0;::::1;::::0;::::1;::::0;13620:18:1;;12254:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3361:472::-:0;3430:14;;-1:-1:-1;;;;;3430:14:0;3416:10;:28;3408:113;;;;-1:-1:-1;;;3408:113:0;;14204:2:1;3408:113:0;;;14186:21:1;14243:2;14223:18;;;14216:30;14282:34;14262:18;;;14255:62;14353:34;14333:18;;;14326:62;-1:-1:-1;;;14404:19:1;;;14397:39;14453:19;;3408:113:0;14002:476:1;3408:113:0;3556:5;3547;;-1:-1:-1;;;;;3547:5:0;;;3532:21;;:14;:21;;;;;;:29;;-1:-1:-1;;3532:29:0;;;;;;3547:5;3587:14;;;;3572:30;;;;;:37;;;;;;;;3644:5;;3627:29;;-1:-1:-1;;;;;;;;;;;3627:29:0;;;3644:5;;;;;3556;3627:29;:::i;:::-;;;;;;;;3689:14;;;3672:37;;-1:-1:-1;;;;;;;;;;;3672:37:0;;;-1:-1:-1;;;;;3689:14:0;;3672:37;:::i;:::-;;;;;;;;3730:14;;;;3722:22;;-1:-1:-1;;;;;3730:14:0;;-1:-1:-1;;;;;;3722:22:0;;;;;;;;3755:27;;;;;;3798;;4523:51:1;;;3798:27:0;;4511:2:1;4496:18;3798:27:0;4377:203:1;8141:156:0;8221:4;8245:44;8259:10;8271:9;8282:6;8245:13;:44::i;2506:138::-;2919:4;2954:5;-1:-1:-1;;;;;2954:5:0;2365:10;2943:16;2349:38;;;;-1:-1:-1;;;2349:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2568:19:0;::::1;;::::0;;;:14:::1;:19;::::0;;;;;;:26;;-1:-1:-1;;2568:26:0::1;2590:4;2568:26:::0;;::::1;::::0;;;2610;;-1:-1:-1;;;;;;;;;;;2610:26:0;::::1;::::0;2583:3;;2590:4;2610:26:::1;:::i;8998:313::-:0;2919:4;2954:5;-1:-1:-1;;;;;2954:5:0;2365:10;2943:16;2349:38;;;;-1:-1:-1;;;2349:38:0;;;;;;;:::i;:::-;9132:1:::1;9104:24;:29;;9096:82;;;::::0;-1:-1:-1;;;9096:82:0;;14685:2:1;9096:82:0::1;::::0;::::1;14667:21:1::0;14724:2;14704:18;;;14697:30;14763:34;14743:18;;;14736:62;-1:-1:-1;;;14814:18:1;;;14807:39;14863:19;;9096:82:0::1;14483:405:1::0;9096:82:0::1;9248:4;9219:24:::0;5205:12:::1;5144:1;5205:2;:12;:::i;:::-;5192:25;::::0;:10:::1;:25;:::i;:::-;9205:38;;;;:::i;:::-;9204:48;;;;:::i;:::-;9189:12;:63:::0;;;9268:35:::1;::::0;1226:25:1;;;9268:35:0::1;::::0;1214:2:1;1199:18;9268:35:0::1;1080:177:1::0;18530:577:0;18599:4;2954:5;;-1:-1:-1;;;;;2954:5:0;2365:10;2943:16;2349:38;;;;-1:-1:-1;;;2349:38:0;;;;;;;:::i;:::-;18640:3:::1;18619:17;:24;;18611:78;;;::::0;-1:-1:-1;;;18611:78:0;;15095:2:1;18611:78:0::1;::::0;::::1;15077:21:1::0;15134:2;15114:18;;;15107:30;15173:34;15153:18;;;15146:62;-1:-1:-1;;;15224:18:1;;;15217:39;15273:19;;18611:78:0::1;14893:405:1::0;18611:78:0::1;18722:8;::::0;:20:::1;::::0;18733:9:::1;18722:20;:::i;:::-;18704:15;:38;18696:59;;;::::0;-1:-1:-1;;;18696:59:0;;15505:2:1;18696:59:0::1;::::0;::::1;15487:21:1::0;15544:1;15524:18;;;15517:29;-1:-1:-1;;;15562:18:1;;;15555:38;15610:18;;18696:59:0::1;15303:331:1::0;18696:59:0::1;18770:11;::::0;::::1;::::0;::::1;;;18762:41;;;::::0;-1:-1:-1;;;18762:41:0;;15841:2:1;18762:41:0::1;::::0;::::1;15823:21:1::0;15880:2;15860:18;;;15853:30;-1:-1:-1;;;15899:18:1;;;15892:48;15957:18;;18762:41:0::1;15639:342:1::0;18762:41:0::1;18832:20;::::0;-1:-1:-1;;;18832:20:0;;-1:-1:-1;;;;;18847:4:0::1;4541:32:1::0;18832:20:0::1;::::0;::::1;4523:51:1::0;18812:17:0::1;::::0;18832:4:::1;::::0;:14:::1;::::0;4496:18:1;;18832:20:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18812:40:::0;-1:-1:-1;18859:15:0::1;18877:44;18914:6;18877:32;18812:40:::0;18891:17;18877:13:::1;:32::i;:::-;:36:::0;::::1;:44::i;:::-;18859:62:::0;-1:-1:-1;18934:11:0;;18930:120:::1;;18957:33;18972:4;4891:42;18982:7;18957:14;:33::i;:::-;;19001:12;;;;;;;;;-1:-1:-1::0;;;;;19001:12:0::1;-1:-1:-1::0;;;;;19001:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;19038:4:0::1;::::0;18530:577;-1:-1:-1;;;;;;;18530:577:0:o;18930:120::-:1;-1:-1:-1::0;;19067:15:0::1;19056:8;:26:::0;-1:-1:-1;19098:5:0::1;18530:577:::0;;;:::o;16676:695::-;2919:4;2954:5;-1:-1:-1;;;;;2954:5:0;2365:10;2943:16;2349:38;;;;-1:-1:-1;;;2349:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16829:35:0;::::1;16821:91;;;::::0;-1:-1:-1;;;16821:91:0;;16188:2:1;16821:91:0::1;::::0;::::1;16170:21:1::0;16227:2;16207:18;;;16200:30;16266:34;16246:18;;;16239:62;-1:-1:-1;;;16317:18:1;;;16310:42;16369:19;;16821:91:0::1;15986:408:1::0;16821:91:0::1;-1:-1:-1::0;;;;;16931:30:0;::::1;16923:81;;;::::0;-1:-1:-1;;;16923:81:0;;16601:2:1;16923:81:0::1;::::0;::::1;16583:21:1::0;16640:2;16620:18;;;16613:30;16679:34;16659:18;;;16652:62;-1:-1:-1;;;16730:18:1;;;16723:37;16777:19;;16923:81:0::1;16399:403:1::0;16923:81:0::1;-1:-1:-1::0;;;;;17023:37:0;::::1;17015:95;;;::::0;-1:-1:-1;;;17015:95:0;;17009:2:1;17015:95:0::1;::::0;::::1;16991:21:1::0;17048:2;17028:18;;;17021:30;17087:34;17067:18;;;17060:62;-1:-1:-1;;;17138:18:1;;;17131:44;17192:19;;17015:95:0::1;16807:410:1::0;17015:95:0::1;17123:20;:44:::0;;-1:-1:-1;;;;;17123:44:0;;::::1;-1:-1:-1::0;;;;;;17123:44:0;;::::1;::::0;::::1;::::0;;;17178:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;17223:22:::1;:48:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;17289:74:::1;::::0;;17462:34:1;;;17527:2;17512:18;;17505:43;;;;17564:18;;;17557:43;17289:74:0::1;::::0;17412:2:1;17397:18;17289:74:0::1;;;;;;;16676:695:::0;;;:::o;17379:359::-;2919:4;2954:5;-1:-1:-1;;;;;2954:5:0;2365:10;2943:16;2349:38;;;;-1:-1:-1;;;2349:38:0;;;;;;;:::i;:::-;17498:2:::1;17483:12;:17;17475:45;;;::::0;-1:-1:-1;;;17475:45:0;;17813:2:1;17475:45:0::1;::::0;::::1;17795:21:1::0;17852:2;17832:18;;;17825:30;-1:-1:-1;;;17871:18:1;;;17864:45;17926:18;;17475:45:0::1;17611:339:1::0;17475:45:0::1;17554:6;17539:12;:21;17531:48;;;::::0;-1:-1:-1;;;17531:48:0;;18157:2:1;17531:48:0::1;::::0;::::1;18139:21:1::0;18196:2;18176:18;;;18169:30;-1:-1:-1;;;18215:18:1;;;18208:44;18269:18;;17531:48:0::1;17955:338:1::0;17531:48:0::1;17592:11;:22:::0;;-1:-1:-1;;17592:22:0::1;::::0;::::1;;;::::0;;17655:12;5205::::1;5144:1;5205:2;:12;:::i;:::-;5192:25;::::0;:10:::1;:25;:::i;:::-;17641:26;;;;:::i;:::-;17625:13;:42:::0;;;17718:11:::1;::::0;17683:47:::1;::::0;;18466:25:1;;;17718:11:0::1;::::0;;::::1;18534:14:1::0;18527:22;18522:2;18507:18;;18500:50;17683:47:0::1;::::0;18439:18:1;17683:47:0::1;;;;;;;17379:359:::0;;:::o;16261:407::-;2919:4;2954:5;-1:-1:-1;;;;;2954:5:0;2365:10;2943:16;2349:38;;;;-1:-1:-1;;;2349:38:0;;;;;;;:::i;:::-;16407:12:::1;:28:::0;;;16446:12:::1;:28:::0;;;16485:7:::1;:18:::0;;;16514:14:::1;:32:::0;;;16531:15;16495:8;16568:29:::1;16461:13:::0;16422;16568:29:::1;:::i;:::-;:40;;;;:::i;:::-;:58;;;;:::i;:::-;16557:8;:69:::0;16647:13:::1;:11;:13::i;2652:204::-:0;2919:4;2954:5;-1:-1:-1;;;;;2954:5:0;2365:10;2943:16;2349:38;;;;-1:-1:-1;;;2349:38:0;;;;;;;:::i;:::-;2731:5:::1;::::0;-1:-1:-1;;;;;2731:5:0;;::::1;2724:12:::0;;::::1;::::0;2716:51:::1;;;::::0;-1:-1:-1;;;2716:51:0;;18763:2:1;2716:51:0::1;::::0;::::1;18745:21:1::0;18802:2;18782:18;;;18775:30;18841:28;18821:18;;;18814:56;18887:18;;2716:51:0::1;18561:350:1::0;2716:51:0::1;-1:-1:-1::0;;;;;2778:19:0;::::1;2800:5;2778:19:::0;;;:14:::1;:19;::::0;;;;;:27;;-1:-1:-1;;2778:27:0::1;::::0;;2821;-1:-1:-1;;;;;;;;;;;2821:27:0;::::1;::::0;2793:3;;2800:5;2821:27:::1;:::i;3090:263::-:0;2919:4;2954:5;-1:-1:-1;;;;;2954:5:0;2365:10;2943:16;2349:38;;;;-1:-1:-1;;;2349:38:0;;;;;;;:::i;:::-;3183:5:::1;::::0;-1:-1:-1;;;;;3183:5:0;;::::1;3176:12:::0;;::::1;::::0;3168:42:::1;;;::::0;-1:-1:-1;;;3168:42:0;;19118:2:1;3168:42:0::1;::::0;::::1;19100:21:1::0;19157:2;19137:18;;;19130:30;-1:-1:-1;;;19176:18:1;;;19169:47;19233:18;;3168:42:0::1;18916:341:1::0;3168:42:0::1;-1:-1:-1::0;;;;;3229:17:0;::::1;3221:54;;;::::0;-1:-1:-1;;;3221:54:0;;19464:2:1;3221:54:0::1;::::0;::::1;19446:21:1::0;19503:2;19483:18;;;19476:30;19542:26;19522:18;;;19515:54;19586:18;;3221:54:0::1;19262:348:1::0;3221:54:0::1;3286:14;:20:::0;;-1:-1:-1;;;;;;3286:20:0::1;-1:-1:-1::0;;;;;3286:20:0;::::1;::::0;;::::1;::::0;;;3322:23:::1;::::0;4523:51:1;;;3322:23:0::1;::::0;4511:2:1;4496:18;3322:23:0::1;4377:203:1::0;12573:81:0;2919:4;2954:5;-1:-1:-1;;;;;2954:5:0;2365:10;2943:16;2349:38;;;;-1:-1:-1;;;2349:38:0;;;;;;;:::i;:::-;12627:11:::1;:19:::0;;-1:-1:-1;;12627:19:0::1;::::0;;12573:81::o;2975:107::-;-1:-1:-1;;;;;3055:19:0;3031:4;3055:19;;;:14;:19;;;;;;;;;2975:107::o;10489:330::-;10619:53;;;;;;;;;;;-1:-1:-1;;;10619:53:0;;;;;;;;-1:-1:-1;;;;;10619:17:0;;10582:4;10619:17;;;:9;:17;;;;;;;:53;;10641:6;;10619:21;:53::i;:::-;-1:-1:-1;;;;;10599:17:0;;;;;;;:9;:17;;;;;;:73;;;;10706:20;;;;;;;:32;;10731:6;10706:24;:32::i;:::-;-1:-1:-1;;;;;10683:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10754:35;;;;;;;;;;10782:6;1226:25:1;;1214:2;1199:18;;1080:177;10754:35:0;;;;;;;;-1:-1:-1;10807:4:0;10489:330;;;;;:::o;531:192::-;617:7;653:12;645:6;;;;637:29;;;;-1:-1:-1;;;637:29:0;;;;;;;;:::i;:::-;-1:-1:-1;677:9:0;689:5;693:1;689;:5;:::i;:::-;677:17;531:192;-1:-1:-1;;;;;531:192:0:o;9319:1158::-;9431:6;;9411:4;;9431:6;;9428:63;;;9447:41;9462:6;9470:9;9481:6;9447:14;:41::i;:::-;9440:48;;;;9428:63;-1:-1:-1;;;;;9507:22:0;;;;;;:14;:22;;;;;;;;9506:23;:53;;;;-1:-1:-1;;;;;;9534:25:0;;;;;;:14;:25;;;;;;;;9533:26;9506:53;9503:127;;;9583:11;;;;9575:43;;;;-1:-1:-1;;;9575:43:0;;20033:2:1;9575:43:0;;;20015:21:1;20072:2;20052:18;;;20045:30;-1:-1:-1;;;20091:18:1;;;20084:50;20151:18;;9575:43:0;19831:344:1;9575:43:0;-1:-1:-1;;;;;9647:22:0;;;;;;:14;:22;;;;;;;;9646:23;:55;;;;-1:-1:-1;;;;;;9674:27:0;;;;;;:19;:27;;;;;;;;9673:28;9646:55;:90;;;;-1:-1:-1;;;;;;9706:30:0;;;;;;:19;:30;;;;;;;;9705:31;9646:90;:111;;;;;9753:4;-1:-1:-1;;;;;9740:17:0;:9;-1:-1:-1;;;;;9740:17:0;;;9646:111;9642:230;;;9817:15;;-1:-1:-1;;;;;9783:20:0;;;;;;:9;:20;;;;;;:29;;9806:6;;9783:29;:::i;:::-;9782:50;;9774:86;;;;-1:-1:-1;;;9774:86:0;;20382:2:1;9774:86:0;;;20364:21:1;20421:2;20401:18;;;20394:30;20460:26;20440:18;;;20433:54;20504:18;;9774:86:0;20180:348:1;9774:86:0;9948:12;;9938:6;:22;;9937:51;;;-1:-1:-1;;;;;;9965:23:0;;;;;;:15;:23;;;;;;;;9937:51;:81;;;-1:-1:-1;;;;;;9992:26:0;;;;;;:15;:26;;;;;;;;9937:81;9929:115;;;;-1:-1:-1;;;9929:115:0;;20735:2:1;9929:115:0;;;20717:21:1;20774:2;20754:18;;;20747:30;-1:-1:-1;;;20793:18:1;;;20786:51;20854:18;;9929:115:0;20533:345:1;9929:115:0;10060:16;:14;:16::i;:::-;10057:35;;;10079:10;:8;:10::i;:::-;10124:53;;;;;;;;;;;-1:-1:-1;;;10124:53:0;;;;;;;;-1:-1:-1;;;;;10124:17:0;;-1:-1:-1;10124:17:0;;;:9;:17;;;;;;;;:53;;10146:6;;10124:21;:53::i;:::-;-1:-1:-1;;;;;10104:17:0;;;;;;:9;:17;;;;;;;;:73;;;;10216:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;10239:22:0;;;;;;:11;:22;;;;;;;;10216:45;10215:93;;10274:34;10282:6;10290;10298:9;10274:7;:34::i;:::-;10215:93;;;10265:6;10215:93;-1:-1:-1;;;;;10344:20:0;;;;;;:9;:20;;;;;;10190:118;;-1:-1:-1;10344:40:0;;10190:118;10344:24;:40::i;:::-;-1:-1:-1;;;;;10321:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10404:43;;;;;;;;;;10432:14;1226:25:1;;1214:2;1199:18;;1080:177;10404:43:0;;;;;;;;-1:-1:-1;10465:4:0;;9319:1158;-1:-1:-1;;;;9319:1158:0:o;15347:673::-;15438:3;15398:36;15430:3;15398:27;15411:13;;15398:8;;:12;;:27;;;;:::i;:36::-;:43;;15390:87;;;;-1:-1:-1;;;15390:87:0;;21085:2:1;15390:87:0;;;21067:21:1;21124:2;21104:18;;;21097:30;21163:33;21143:18;;;21136:61;21214:18;;15390:87:0;20883:355:1;15390:87:0;15537:3;15496:37;15529:3;15496:28;15509:14;;15496:8;;:12;;:28;;;;:::i;:37::-;:44;;15488:89;;;;-1:-1:-1;;;15488:89:0;;21445:2:1;15488:89:0;;;21427:21:1;;;21464:18;;;21457:30;21523:34;21503:18;;;21496:62;21575:18;;15488:89:0;21243:356:1;15488:89:0;15653:3;15596:53;15645:3;15596:44;15626:13;;15609:14;;:30;;;;:::i;:::-;15596:8;;;:12;:44::i;:53::-;:60;;15588:109;;;;-1:-1:-1;;;15588:109:0;;21806:2:1;15588:109:0;;;21788:21:1;21845:2;21825:18;;;21818:30;21884:34;21864:18;;;21857:62;-1:-1:-1;;;21935:18:1;;;21928:34;21979:19;;15588:109:0;21604:400:1;15588:109:0;15761:2;15716:41;15753:3;15716:32;15729:18;;15716:8;;:12;;:32;;;;:::i;:41::-;:47;;15708:95;;;;-1:-1:-1;;;15708:95:0;;22211:2:1;15708:95:0;;;22193:21:1;22250:2;22230:18;;;22223:30;22289:34;22269:18;;;22262:62;-1:-1:-1;;;22340:18:1;;;22333:33;22383:19;;15708:95:0;22009:399:1;15708:95:0;15821:191;15838:36;15870:3;15838:27;15851:13;;15838:8;;:12;;:27;;;;:::i;:36::-;15896:37;15929:3;15896:28;15909:14;;15896:8;;:12;;:28;;;;:::i;:37::-;15955:41;15992:3;15955:32;15968:18;;15955:8;;:12;;:32;;;;:::i;:41::-;15821:191;;;22633:4:1;22621:17;;;22603:36;;22675:17;;;22670:2;22655:18;;22648:45;22729:17;;22709:18;;;22702:45;;;;22591:2;22576:18;15821:191:0;22413:340:1;729:250:0;787:7;811:1;816;811:6;807:47;;-1:-1:-1;841:1:0;834:8;;807:47;866:9;878:5;882:1;878;:5;:::i;:::-;866:17;-1:-1:-1;911:1:0;902:5;906:1;866:17;902:5;:::i;:::-;:10;894:56;;;;-1:-1:-1;;;894:56:0;;22960:2:1;894:56:0;;;22942:21:1;22999:2;22979:18;;;22972:30;23038:34;23018:18;;;23011:62;-1:-1:-1;;;23089:18:1;;;23082:31;23130:19;;894:56:0;22758:397:1;985:132:0;1043:7;1070:39;1074:1;1077;1070:39;;;;;;;;;;;;;;;;;:3;:39::i;202:181::-;260:7;;292:5;296:1;292;:5;:::i;:::-;280:17;;321:1;316;:6;;308:46;;;;-1:-1:-1;;;308:46:0;;23362:2:1;308:46:0;;;23344:21:1;23401:2;23381:18;;;23374:30;23440:29;23420:18;;;23413:57;23487:18;;308:46:0;23160:351:1;11558:197:0;11607:4;11631:10;-1:-1:-1;;;;;11645:4:0;11631:18;;;;;:38;;-1:-1:-1;11663:6:0;;;;11662:7;11631:38;:62;;;;-1:-1:-1;11682:11:0;;;;11631:62;:116;;;;-1:-1:-1;;11734:13:0;;11724:4;11706:24;;;;:9;:24;;;;;;:41;;;11558:197::o;12662:1567::-;6537:6;:13;;-1:-1:-1;;6537:13:0;6546:4;6537:13;;;12735:8:::1;::::0;6537:6;12814:15:::1;12735:8:::0;12828:1:::1;12814:15;:::i;:::-;12799:12;;12783:13;;:28;;;;:::i;:::-;12782:48;;;;:::i;:::-;12756:74;;12841:20;12880:15;12864:13;;:31;;;;:::i;:::-;12932:16;::::0;;12946:1:::1;12932:16:::0;;;;;::::1;::::0;;12841:54;;-1:-1:-1;12908:21:0::1;::::0;12932:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12932:16:0::1;12908:40;;12977:4;12959;12964:1;12959:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;12959:23:0::1;;;-1:-1:-1::0;;;;;12959:23:0::1;;;::::0;::::1;13003:4;12993;12998:1;12993:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12993:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;13020:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;13020:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;13092:12;;13020:6:::1;::::0;13135:4;;13162::::1;::::0;13182:15:::1;::::0;13020:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;13305:12:0::1;::::0;13241:21:::1;::::0;-1:-1:-1;13305:16:0::1;::::0;-1:-1:-1;13320:1:0::1;::::0;13305:16:::1;:::i;:::-;13290:32;::::0;:11;:32:::1;:::i;:::-;13276:46:::0;-1:-1:-1;13343:26:0::1;13402:15;13276:46:::0;13416:1:::1;13402:15;:::i;:::-;13385:12;::::0;13373:24:::1;::::0;:9;:24:::1;:::i;:::-;13372:46;;;;:::i;:::-;13343:75;;13429:26;13487:11;13471:12;;13459:9;:24;;;;:::i;:::-;13458:40;;;;:::i;:::-;13429:69;;13509:21;13557:11;13546:7;;13534:9;:19;;;;:::i;:::-;13533:35;;;;:::i;:::-;13509:59;;13579:28;13641:11;13623:14;;13611:9;:26;;;;:::i;:::-;13610:42;;;;:::i;:::-;13673:20;::::0;13665:58:::1;::::0;13579:73;;-1:-1:-1;;;;;;13673:20:0::1;::::0;13665:58;::::1;;;::::0;13704:18;;13673:20:::1;13665:58:::0;13673:20;13665:58;13704:18;13673:20;13665:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;13742:15:0::1;::::0;13734:48:::1;::::0;-1:-1:-1;;;;;13742:15:0;;::::1;::::0;13734:48;::::1;;;::::0;13768:13;;13742:15:::1;13734:48:::0;13742:15;13734:48;13768:13;13742:15;13734:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;13801:22:0::1;::::0;13793:62:::1;::::0;-1:-1:-1;;;;;13801:22:0;;::::1;::::0;13793:62;::::1;;;::::0;13834:20;;13801:22:::1;13793:62:::0;13801:22;13793:62;13834:20;13801:22;13793:62;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;13871:19:0;;13868:354:::1;;13906:6;::::0;:236:::1;::::0;-1:-1:-1;;;13906:236:0;;13982:4:::1;13906:236;::::0;::::1;24974:34:1::0;;;25024:18;;;25017:34;;;13906:6:0::1;25067:18:1::0;;;25060:34;;;25110:18;;;25103:34;25153:19;;;25146:44;14112:15:0::1;25206:19:1::0;;;25199:35;-1:-1:-1;;;;;13906:6:0;;::::1;::::0;:22:::1;::::0;13936:18;;24908:19:1;;13906:236:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14162:48:0::1;::::0;;25730:25:1;;;25786:2;25771:18;;25764:34;;;14162:48:0::1;::::0;-1:-1:-1;25703:18:1;14162:48:0::1;;;;;;;13868:354;-1:-1:-1::0;;6555:6:0;:14;;-1:-1:-1;;6555:14:0;;;-1:-1:-1;;;;;;;12662:1567:0:o;10827:723::-;10913:7;10936:11;;;:28;;-1:-1:-1;10951:8:0;;:13;10936:28;10933:72;;;-1:-1:-1;10987:6:0;10980:13;;10933:72;11038:18;;-1:-1:-1;;;;;11085:4:0;11072:17;;;;;;11069:154;;-1:-1:-1;11119:14:0;;11069:154;;;11164:4;-1:-1:-1;;;;;11154:14:0;:6;-1:-1:-1;;;;;11154:14:0;;11151:72;;-1:-1:-1;11198:13:0;;11151:72;11235:17;11255:62;11296:20;5909:4;11313:3;11296:20;:::i;:::-;11255:36;11280:10;11255:20;11266:8;;11255:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:62::-;11235:82;-1:-1:-1;11333:13:0;;11330:172;;11407:4;11389:24;;;;:9;:24;;;;;;:39;;11418:9;11389:28;:39::i;:::-;11380:4;11362:24;;;;:9;:24;;;;;;;:66;;;;11448:42;;-1:-1:-1;;;;;11448:42:0;;;;;;;11480:9;1226:25:1;;1214:2;1199:18;;1080:177;11448:42:0;;;;;;;;11330:172;11521:21;:6;11532:9;11521:10;:21::i;:::-;11514:28;10827:723;-1:-1:-1;;;;;;10827:723:0:o;1123:189::-;1209:7;1244:12;1237:5;1229:28;;;;-1:-1:-1;;;1229:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1268:9:0;1280:5;1284:1;1280;:5;:::i;389:136::-;447:7;474:43;478:1;481;474:43;;;;;;;;;;;;;;;;;:3;:43::i;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:118::-;472:5;465:13;458:21;451:5;448:32;438:60;;494:1;491;484:12;438:60;386:118;:::o;509:566::-;601:6;609;617;670:2;658:9;649:7;645:23;641:32;638:52;;;686:1;683;676:12;638:52;726:9;713:23;759:18;751:6;748:30;745:50;;;791:1;788;781:12;745:50;830:70;892:7;883:6;872:9;868:22;830:70;:::i;:::-;919:8;;-1:-1:-1;804:96:1;-1:-1:-1;;1004:2:1;989:18;;976:32;1017:28;976:32;1017:28;:::i;:::-;1064:5;1054:15;;;509:566;;;;;:::o;1262:597::-;1374:4;1403:2;1432;1421:9;1414:21;1464:6;1458:13;1507:6;1502:2;1491:9;1487:18;1480:34;1532:1;1542:140;1556:6;1553:1;1550:13;1542:140;;;1651:14;;;1647:23;;1641:30;1617:17;;;1636:2;1613:26;1606:66;1571:10;;1542:140;;;1700:6;1697:1;1694:13;1691:91;;;1770:1;1765:2;1756:6;1745:9;1741:22;1737:31;1730:42;1691:91;-1:-1:-1;1843:2:1;1822:15;-1:-1:-1;;1818:29:1;1803:45;;;;1850:2;1799:54;;1262:597;-1:-1:-1;;;1262:597:1:o;1864:180::-;1923:6;1976:2;1964:9;1955:7;1951:23;1947:32;1944:52;;;1992:1;1989;1982:12;1944:52;-1:-1:-1;2015:23:1;;1864:180;-1:-1:-1;1864:180:1:o;2049:131::-;-1:-1:-1;;;;;2124:31:1;;2114:42;;2104:70;;2170:1;2167;2160:12;2185:315;2253:6;2261;2314:2;2302:9;2293:7;2289:23;2285:32;2282:52;;;2330:1;2327;2320:12;2282:52;2369:9;2356:23;2388:31;2413:5;2388:31;:::i;:::-;2438:5;2490:2;2475:18;;;;2462:32;;-1:-1:-1;;;2185:315:1:o;2697:773::-;2819:6;2827;2835;2843;2896:2;2884:9;2875:7;2871:23;2867:32;2864:52;;;2912:1;2909;2902:12;2864:52;2952:9;2939:23;2981:18;3022:2;3014:6;3011:14;3008:34;;;3038:1;3035;3028:12;3008:34;3077:70;3139:7;3130:6;3119:9;3115:22;3077:70;:::i;:::-;3166:8;;-1:-1:-1;3051:96:1;-1:-1:-1;3254:2:1;3239:18;;3226:32;;-1:-1:-1;3270:16:1;;;3267:36;;;3299:1;3296;3289:12;3267:36;;3338:72;3402:7;3391:8;3380:9;3376:24;3338:72;:::i;:::-;2697:773;;;;-1:-1:-1;3429:8:1;-1:-1:-1;;;;2697:773:1:o;3475:456::-;3552:6;3560;3568;3621:2;3609:9;3600:7;3596:23;3592:32;3589:52;;;3637:1;3634;3627:12;3589:52;3676:9;3663:23;3695:31;3720:5;3695:31;:::i;:::-;3745:5;-1:-1:-1;3802:2:1;3787:18;;3774:32;3815:33;3774:32;3815:33;:::i;:::-;3475:456;;3867:7;;-1:-1:-1;;;3921:2:1;3906:18;;;;3893:32;;3475:456::o;3936:247::-;3995:6;4048:2;4036:9;4027:7;4023:23;4019:32;4016:52;;;4064:1;4061;4054:12;4016:52;4103:9;4090:23;4122:31;4147:5;4122:31;:::i;4812:316::-;4889:6;4897;4905;4958:2;4946:9;4937:7;4933:23;4929:32;4926:52;;;4974:1;4971;4964:12;4926:52;-1:-1:-1;;4997:23:1;;;5067:2;5052:18;;5039:32;;-1:-1:-1;5118:2:1;5103:18;;;5090:32;;4812:316;-1:-1:-1;4812:316:1:o;5133:529::-;5210:6;5218;5226;5279:2;5267:9;5258:7;5254:23;5250:32;5247:52;;;5295:1;5292;5285:12;5247:52;5334:9;5321:23;5353:31;5378:5;5353:31;:::i;:::-;5403:5;-1:-1:-1;5460:2:1;5445:18;;5432:32;5473:33;5432:32;5473:33;:::i;:::-;5525:7;-1:-1:-1;5584:2:1;5569:18;;5556:32;5597:33;5556:32;5597:33;:::i;5667:388::-;5735:6;5743;5796:2;5784:9;5775:7;5771:23;5767:32;5764:52;;;5812:1;5809;5802:12;5764:52;5851:9;5838:23;5870:31;5895:5;5870:31;:::i;:::-;5920:5;-1:-1:-1;5977:2:1;5962:18;;5949:32;5990:33;5949:32;5990:33;:::i;:::-;6042:7;6032:17;;;5667:388;;;;;:::o;6060:309::-;6125:6;6133;6186:2;6174:9;6165:7;6161:23;6157:32;6154:52;;;6202:1;6199;6192:12;6154:52;6241:9;6228:23;6260:28;6282:5;6260:28;:::i;6374:385::-;6460:6;6468;6476;6484;6537:3;6525:9;6516:7;6512:23;6508:33;6505:53;;;6554:1;6551;6544:12;6505:53;-1:-1:-1;;6577:23:1;;;6647:2;6632:18;;6619:32;;-1:-1:-1;6698:2:1;6683:18;;6670:32;;6749:2;6734:18;6721:32;;-1:-1:-1;6374:385:1;-1:-1:-1;6374:385:1:o;7250:335::-;7452:2;7434:21;;;7491:2;7471:18;;;7464:30;-1:-1:-1;;;7525:2:1;7510:18;;7503:41;7576:2;7561:18;;7250:335::o;7590:401::-;7792:2;7774:21;;;7831:2;7811:18;;;7804:30;7870:34;7865:2;7850:18;;7843:62;-1:-1:-1;;;7936:2:1;7921:18;;7914:35;7981:3;7966:19;;7590:401::o;7996:127::-;8057:10;8052:3;8048:20;8045:1;8038:31;8088:4;8085:1;8078:15;8112:4;8109:1;8102:15;8128:284;-1:-1:-1;;;;;8314:32:1;;;;8296:51;;8390:14;8383:22;8378:2;8363:18;;8356:50;8284:2;8269:18;;8128:284::o;8417:127::-;8478:10;8473:3;8469:20;8466:1;8459:31;8509:4;8506:1;8499:15;8533:4;8530:1;8523:15;8549:135;8588:3;8609:17;;;8606:43;;8629:18;;:::i;:::-;-1:-1:-1;8676:1:1;8665:13;;8549:135::o;8689:329::-;8891:2;8873:21;;;8930:1;8910:18;;;8903:29;-1:-1:-1;;;8963:2:1;8948:18;;8941:36;9009:2;8994:18;;8689:329::o;9426:422::-;9515:1;9558:5;9515:1;9572:270;9593:7;9583:8;9580:21;9572:270;;;9652:4;9648:1;9644:6;9640:17;9634:4;9631:27;9628:53;;;9661:18;;:::i;:::-;9711:7;9701:8;9697:22;9694:55;;;9731:16;;;;9694:55;9810:22;;;;9770:15;;;;9572:270;;;9576:3;9426:422;;;;;:::o;9853:806::-;9902:5;9932:8;9922:80;;-1:-1:-1;9973:1:1;9987:5;;9922:80;10021:4;10011:76;;-1:-1:-1;10058:1:1;10072:5;;10011:76;10103:4;10121:1;10116:59;;;;10189:1;10184:130;;;;10096:218;;10116:59;10146:1;10137:10;;10160:5;;;10184:130;10221:3;10211:8;10208:17;10205:43;;;10228:18;;:::i;:::-;-1:-1:-1;;10284:1:1;10270:16;;10299:5;;10096:218;;10398:2;10388:8;10385:16;10379:3;10373:4;10370:13;10366:36;10360:2;10350:8;10347:16;10342:2;10336:4;10333:12;10329:35;10326:77;10323:159;;;-1:-1:-1;10435:19:1;;;10467:5;;10323:159;10514:34;10539:8;10533:4;10514:34;:::i;:::-;10584:6;10580:1;10576:6;10572:19;10563:7;10560:32;10557:58;;;10595:18;;:::i;:::-;10633:20;;9853:806;-1:-1:-1;;;9853:806:1:o;10664:140::-;10722:5;10751:47;10792:4;10782:8;10778:19;10772:4;10751:47;:::i;10809:168::-;10849:7;10915:1;10911;10907:6;10903:14;10900:1;10897:21;10892:1;10885:9;10878:17;10874:45;10871:71;;;10922:18;;:::i;:::-;-1:-1:-1;10962:9:1;;10809:168::o;10982:217::-;11022:1;11048;11038:132;;11092:10;11087:3;11083:20;11080:1;11073:31;11127:4;11124:1;11117:15;11155:4;11152:1;11145:15;11038:132;-1:-1:-1;11184:9:1;;10982:217::o;11962:128::-;12002:3;12033:1;12029:6;12026:1;12023:13;12020:39;;;12039:18;;:::i;:::-;-1:-1:-1;12075:9:1;;11962:128::o;12451:125::-;12491:4;12519:1;12516;12513:8;12510:34;;;12524:18;;:::i;:::-;-1:-1:-1;12561:9:1;;12451:125::o;13284:184::-;13354:6;13407:2;13395:9;13386:7;13382:23;13378:32;13375:52;;;13423:1;13420;13413:12;13375:52;-1:-1:-1;13446:16:1;;13284:184;-1:-1:-1;13284:184:1:o;13752:245::-;13819:6;13872:2;13860:9;13851:7;13847:23;13843:32;13840:52;;;13888:1;13885;13878:12;13840:52;13920:9;13914:16;13939:28;13961:5;13939:28;:::i;23648:980::-;23910:4;23958:3;23947:9;23943:19;23989:6;23978:9;23971:25;24015:2;24053:6;24048:2;24037:9;24033:18;24026:34;24096:3;24091:2;24080:9;24076:18;24069:31;24120:6;24155;24149:13;24186:6;24178;24171:22;24224:3;24213:9;24209:19;24202:26;;24263:2;24255:6;24251:15;24237:29;;24284:1;24294:195;24308:6;24305:1;24302:13;24294:195;;;24373:13;;-1:-1:-1;;;;;24369:39:1;24357:52;;24464:15;;;;24429:12;;;;24405:1;24323:9;24294:195;;;-1:-1:-1;;;;;;;24545:32:1;;;;24540:2;24525:18;;24518:60;-1:-1:-1;;;24609:3:1;24594:19;24587:35;24506:3;23648:980;-1:-1:-1;;;23648:980:1:o;25245:306::-;25333:6;25341;25349;25402:2;25390:9;25381:7;25377:23;25373:32;25370:52;;;25418:1;25415;25408:12;25370:52;25447:9;25441:16;25431:26;;25497:2;25486:9;25482:18;25476:25;25466:35;;25541:2;25530:9;25526:18;25520:25;25510:35;;25245:306;;;;;:::o

Swarm Source

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