ETH Price: $3,416.66 (+1.85%)
Gas: 5.94 Gwei

Token

KleeKai (KLEE)
 

Overview

Max Total Supply

99,989,999,999,984,150 KLEE

Holders

4,985 ( -0.040%)

Market

Price

$0.00 @ 0.000000 ETH (-0.19%)

Onchain Market Cap

$676,232.37

Circulating Supply Market Cap

$676,335.00

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,111,563,657,146.906750061 KLEE

Value
$21.04 ( ~0.00615806164584905 Eth) [0.0031%]
0x939518ce94bc41f237ab72e64d1f7a90026a2ad5
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

KleeKai was launched as a meme coin, however now sports an addictive game 'KleeRun' a P2E game that is enjoyable for all ages. This token was a fair launch and rewards all holders with a 2% reflection feature that redistributes tokens among the holders every Buy, Swap & Sell.

Market

Volume (24H):$776.01
Market Capitalization:$676,335.00
Circulating Supply:100,000,000,000,000,000.00 KLEE
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

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

Contract Name:
KLEE

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-25
*/

/*


            __   ___  ___       _______   _______      __   ___       __        __     
            |/"| /  ")|"  |     /"     "| /"     "|    |/"| /  ")     /""\      |" \    
            (: |/   / ||  |    (: ______)(: ______)    (: |/   /     /    \     ||  |   
            |    __/  |:  |     \/    |   \/    |      |    __/     /' /\  \    |:  |   
            (// _  \   \  |___  // ___)_  // ___)_     (// _  \    //  __'  \   |.  |   
            |: | \  \ ( \_|:  \(:      "|(:      "|    |: | \  \  /   /  \\  \  /\  |\  
            (__|  \__) \_______)\_______) \_______)    (__|  \__)(___/    \___)(__\_|_) 
                                                                                    


                                     .:==+++++++++++==-.                                  
                                 :=++=-:.............:-=++-.                              
                              .=+=::=++*=.....       .....-=*=.                           
                            :++-..=#*+++**:.....        .-=-::+*:                         
                          :++:...+#+*##*+**:..........:==+++#=.:=+.                       
                         =*:....=#+*#*+%++#*+++++++=:+#*+**++#=..:*=                      
                        =+.....:#++#+*##++++++++++=+*#++##*#+==...:++                     
                       :*......=#+###*++++++++++++++++++#*+#*--. ...+=                    
                       #-.....:#*+#*+++++++++++++++++++++#*#*+#-....:#:                   
                      -*......-%++++++++++++++++++++++++++#%*+#=.....=*                   
                      =+.....:#*++++=. :++++++++++++=++++++*++#=.....:%                   
                      =+....-#*+++++=.  =+++++++++:   =+++++++%-.....:%                   
                      :#...:#*++++*##*++++++++++++=--=++++++++%-.....-#                   
                       #-..+#-...:=+**#+++++++++++*####*++++++*#.....*-                   
                       .*..+*       -+*+=##+++*+++#*+++++++++++%:...=*                    
                        =+.=#:        .  *%#**%%--++++=-:.  .:+%-..-#.                    
                         -*-#*++==--====..=##+-.              =#::++                      
                         -*=:  :+.      +##%#+:..-.         .-#--*-                       
                        +-       *     .:%###%%*+:        .:=#+*+.                        
                       +-        =:  .:-*####+..    ...:::=#%*=++:                        
                       #:        *===+#%+===:::::::--==+*%*++=+==*-                       
                       =+.    .::-=*###*################*:    :+ :=+=                     
                        ++:.         :=+*#*+====*****+-.       #    -*-                   
                         :+*=-=.  ======-:::::::..     ..      #  .::=#                   
                            .+%:.*-   + +*=*+=#++:    .::+::.:+=:::-+*:                   
                             #-:=#   .- --=+: #:-+    ::-##*#*++#*=-.                     
                          -+==****   .--.    :#=**===+++*##-*  .#:=-                      
                        -*:     .#.    .- ..:++#=:     :-#+**-:*-*.:#.                    
                       .#.       .+++==+=-::-#:-%+--+++*#:   ++.-+  =*                    
                       -===     .::. .:-=+++++++-   :::#-:  =#+#:   =*                    
                        * .-=-:::-+*#+=:.          .::=#+++*-  -=  :*-                    
                        -*    .=**.   .:-=+*=-:.    .:=#::::.  .#.-*=                     
        .:--=====**==----=+=-::-**==--:.   :*=:      -+%*=-::::+*+=.                      
   .-++++======+*-          .-==-::. ..:-===+%*=---===:#:.-====-:                         
.+*+==+++++++++*.                            .=*:   .::#.                                 
#+++++++++++++*  .       :=+++++=:             .++=-=+*#:                                 
.**++++++++++#         -**++***+=+*+.            .:---:+#+==:..::::..                     
  +#++++++++*-        **+**+---=**++#:               :**++===*#*++++*#*++=:               
   :**++++++#        -#+**:.....:+*+*#              =#+++++++===**++#*++++#.              
     -#*++++#  .     =#+*=.......-#++%             +*+++++++++++==*#*+++++##+*+::.        
       :**++#.       .#*+*-.....-**+#+            +*++++++++++++++==**++++#*=*#++***+-    
         :+##* .      .#*+**+++**+*#+            -*++++++**********#**#*+*#++#=::-=+**#+: 
            -**-.      .=##*****##+-             *++++++##++++++++*#+++*#*#*##*++++++***#=
               -++-:.    .:-====-.              .#++++++%++++++++*#+++++**=+- -+**###**+=:
                  :=++=:...                     -*++++++*#*++++++#++++++**=+#***+=:       
                      :=++=-::...               -*+++++++*##**+++#++++++#+=#+--=++*#+:    
                          :=+++=-::::....       -*+++++*****######*****##**%+---=++**#*:  
                               :-++++=-:::::::::-#***************#%####--+==*##****####*  
                                     :-==+++++==-#**********#####**++*#++#====-::-::.     
                                              ..:::---=###**++#++++++#*=+#==++**+-        
                                                        :+##**#+++**##++#+---=++**#=      
                                                           .-=**####-=*#+#********###     



*/


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}interface IUniswapERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint DEADline, uint8 v, bytes32 r, bytes32 s) external;
}
interface IUniswapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
interface IUniswapRouter01 {
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint DEADline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint DEADline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint DEADline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint DEADline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint DEADline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint DEADline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint DEADline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint DEADline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint DEADline)
    external
    payable
    returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint DEADline)
    external
    returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint DEADline)
    external
    returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint DEADline)
    external
    payable
    returns (uint[] memory amounts);
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getamountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getamountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getamountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getamountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapRouter02 is IUniswapRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint DEADline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint DEADline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint DEADline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint DEADline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint DEADline
    ) external;
}


contract protected {

    mapping (address => bool) is_auth;

    function authorized(address addy) public view returns(bool) {
        return is_auth[addy];
    }

    function set_authorized(address addy, bool booly) public onlyAuth {
        is_auth[addy] = booly;
    }

    modifier onlyAuth() {
        require( is_auth[msg.sender] || msg.sender==owner, "not owner");
        _;
    }

    address owner;
    modifier onlyowner {
        require(msg.sender==owner, "not owner");
        _;
    }

    bool locked;
    modifier safe() {
        require(!locked, "reentrant");
        locked = true;
        _;
        locked = false;
    }

    receive() external payable {}
    fallback() external payable {}
}
contract KLEE is ERC20, protected
{
    mapping (address => uint256) public _balances;
    mapping (address => mapping (address => uint256)) public _allowances;
    mapping (address => uint256) public _sellLock;    
    mapping (address => bool) public _excluded;
    mapping (address => bool) public _excludedFromSellLock;
    mapping (address => bool) public _blacklist;
    bool isBlacklist = true;
    string public constant _name = 'KleeKai';
    string public constant _symbol = 'KLEE';
    uint8 public constant _decimals = 9;
    uint256 public constant InitialSupply= 100000000 * 10**9 * 10**_decimals;
    uint256 swapLimit = 500000 * 10**9 * 10**_decimals; // 0.5%
    bool isSwapPegged = true;
    uint16 public  BuyLimitDivider=50; // 2%
    uint8 public   BalanceLimitDivider=25; // 4%
    uint16 public  SellLimitDivider=125; // 0.75%
    uint16 public  MaxSellLockTime= 10 seconds;
    address public constant router_address=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public constant DEAD = 0x000000000000000000000000000000000000dEaD;
    uint256 public _circulatingSupply =InitialSupply;
    uint256 public  balanceLimit = _circulatingSupply;
    uint256 public  sellLimit = _circulatingSupply;
    uint256 public  buyLimit = _circulatingSupply;
    uint8 public _buyTax;
    uint8 public _sellTax;
    uint8 public _transferTax;
    uint8 public _liquidityTax;
    uint8 public _marketingTax;
    uint8 public _DevelopmentTax;
    uint8 public _RewardTax;
    uint8 public _KaibaTax;
    bool isTokenSwapManual = false;
    bool public bot_killer = true;
    address public pair_address;
    address public deployer = 0xB19Ea1d1B9eDE773E4B86b1e913236e0dAEAF808;
    address public marketing = 0x6FEe72Ad3A9210299190ed0dBFC4D377971DBE19;
    address public development = 0xA29eA5118fEe344449A1DADaB49419c51B388a43;
    address public rewards = 0x356bE05bd1F2FCFfA6C6fb7128BF54DBE0dF38e0;
    address public kaiba = 0xCbeb3C6aEC7040e4949F22234573bd06B31DE83b;
    IUniswapRouter02 public  router;
    constructor () {

        uint256 deployerBalance=_circulatingSupply*9/10;
        _balances[msg.sender] = deployerBalance;
        emit Transfer(address(0), msg.sender, deployerBalance);
        uint256 injectBalance=_circulatingSupply-deployerBalance;
        _balances[address(this)]=injectBalance;
        emit Transfer(address(0), address(this),injectBalance);
        router = IUniswapRouter02(router_address);
        pair_address = IUniswapFactory(router.factory()).createPair(address(this), router.WETH());
        balanceLimit=InitialSupply/BalanceLimitDivider;
        sellLimit=InitialSupply/SellLimitDivider;
        buyLimit=InitialSupply/BuyLimitDivider;
            sellLockTime=2 seconds;
        _buyTax=9;
        _sellTax=9;
        _transferTax=9;
        _liquidityTax=30;
        _marketingTax=30;
        _DevelopmentTax=17;
        _RewardTax=16;
        _KaibaTax = 7;

        // Exclusions
        owner = msg.sender;
        is_auth[msg.sender] = true;
        _excluded[msg.sender] = true;
        _excluded[deployer] = true;
        _excluded[marketing] = true;
        _excluded[development] = true;
        _excluded[rewards] = true;
        _excluded[kaiba] = true;
        _excludedFromSellLock[router_address] = true;
        _excludedFromSellLock[pair_address] = true;
        _excludedFromSellLock[address(this)] = true;
        _excludedFromSellLock[deployer] = true;
        _excludedFromSellLock[marketing] = true;
        _excludedFromSellLock[development] = true;
        _excludedFromSellLock[rewards] = true;
        _excludedFromSellLock[kaiba] = true;
    }
    function _transfer(address sender, address recipient, uint256 amount) private{
        require(sender != address(0), "Transfer from zero");
        require(recipient != address(0), "Transfer to zero");
        if(isBlacklist) {
            require(!_blacklist[sender] && !_blacklist[recipient], "Blacklisted!");
        }
        bool isExcluded = (_excluded[sender] || _excluded[recipient] || is_auth[sender] || is_auth[recipient]);
        bool isContractTransfer=(sender==address(this) || recipient==address(this));
        bool isLiquidityTransfer = ((sender == pair_address && recipient == router_address)
        || (recipient == pair_address && sender == router_address));
        
        if(isContractTransfer || isLiquidityTransfer || isExcluded ){
            _feelessTransfer(sender, recipient, amount);
        }
        else{
            if (!tradingEnabled) {
                if (sender != owner && recipient != owner) {
                    if (bot_killer) {
                        emit Transfer(sender,recipient,0);
                        return;
                    }
                    else {
                        require(tradingEnabled,"trading not yet enabled");
                    }
                }
            }
            bool isBuy=sender==pair_address|| sender == router_address;
            bool isSell=recipient==pair_address|| recipient == router_address;
            _taxedTransfer(sender,recipient,amount,isBuy,isSell);
        }
    }

     ///////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////// Mint & Burn ///////////////////////////////////
   ///////////////////////////////////////////////////////////////////////////////////

    function MB_mint_contract(uint amount) public onlyAuth {
        address receiver = address(this);       
        _circulatingSupply += amount;
        _balances[receiver] += amount;
        emit Transfer(DEAD, receiver, amount);
    }


    function MB_mint_liquidity(uint amount) public onlyAuth {
        address receiver = pair_address;
        _circulatingSupply += amount;
        _balances[receiver] += amount;
        emit Transfer(DEAD, receiver, amount);
    }

    function MB_burn_contract(uint amount) public onlyAuth {
        _circulatingSupply -= amount;
        _balances[address(this)] -= amount;
        emit Transfer(address(this), DEAD, amount);
    }
    function MB_burn_liquidity(uint amount) public onlyAuth {
        _circulatingSupply -= amount;
        _balances[pair_address] -= amount;
        emit Transfer(pair_address, DEAD, amount);
    }

     ///////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////// CONTROL PANEL /////////////////////////////////
   ///////////////////////////////////////////////////////////////////////////////////

    function CTRL_set_development(address addy) public onlyAuth {
        development = addy;
    }

    function CTRL_set_marketing(address addy) public onlyAuth {
        marketing = addy;
    }
    
    function CTRL_set_rewards(address addy) public onlyAuth {
        rewards = addy;
    }
    
    function CTRL_set_deployer(address addy) public onlyAuth {
        deployer = addy;
    }
    
    function CTRL_set_kaiba(address addy) public onlyAuth {
        kaiba = addy;
    }

     ///////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////// CLAIM /////////////////////////////////////////
   ///////////////////////////////////////////////////////////////////////////////////

    bool public claim_enable;
    mapping(address => bool) public claimed;
    address[] public claimed_list;

    function MIGRATION_control_claim(bool booly) public onlyAuth {
        claim_enable = booly;
    }

    function MIGRATION_approve_v1() public safe {
        ERC20 klee_v1 = ERC20(0x382f0160c24f5c515A19f155BAc14d479433A407);
        uint to_give = klee_v1.balanceOf(msg.sender);
        require(to_give > 0, "No tokens to transfer");
        require(klee_v1.allowance(msg.sender, address(this)) <= to_give, "Already enough allowance");
        klee_v1.approve(address(this), to_give*10);
    }

    function MIGRATION_claim_from_v1() public safe {
        require(claim_enable, "Claim is ended");
        require(!claimed[msg.sender]);
        ERC20 klee_v1 = ERC20(0x382f0160c24f5c515A19f155BAc14d479433A407);
        uint to_give = klee_v1.balanceOf(msg.sender);
        require(klee_v1.allowance(msg.sender, address(this)) > to_give, "Not enough allowance");
        require(_balances[address(this)] >= to_give, "Not enough tokens!");
        klee_v1.transferFrom(msg.sender, address(this), to_give);
        _balances[address(this)] -= to_give;
        _balances[msg.sender] += to_give;
        emit Transfer(address(this), msg.sender, to_give);
        claimed[msg.sender] = true;
        claimed_list.push(msg.sender);
    }

    function MIGRATION_allowance_on_v1(address addy) public view onlyAuth returns (uint allowed, uint balance) {
        ERC20 klee_v1 = ERC20(0x382f0160c24f5c515A19f155BAc14d479433A407);
        return (klee_v1.allowance(addy, address(this)), klee_v1.balanceOf(addy));
    }

    function MIGRATION_has_claimed(address addy) public view returns(bool has_it) {
        return(claimed[addy]);
    }



     ///////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////// Airdrops //////////////////////////////////////
   ///////////////////////////////////////////////////////////////////////////////////

    function AIRDROP_multiple(uint amount, address[] calldata addresses) public onlyAuth {
        uint256 multiplier = addresses.length;
        require(_balances[address(this)] >= (amount*multiplier), "Not enough funds");
        _balances[address(this)] -= (amount*multiplier);
        for (uint i = 0; i < multiplier; i++) {
            _balances[addresses[i]] += amount;
            emit Transfer(address(this), addresses[i], amount);
        }
    }

    
    function AIRDROP_multiple_different(uint[] calldata amount, address[] calldata addresses) public onlyAuth {
        uint256 multiplier = addresses.length;
         for (uint i = 0; i < multiplier; i++) {
             require(_balances[address(this)] >= amount[i], "Not enough funds");
            _balances[address(this)] -= amount[i];
            _balances[addresses[i]] += amount[i];
            emit Transfer(address(this), addresses[i], amount[i]);
        }
    }

     ///////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////// Transfers Inner ///////////////////////////////
   ///////////////////////////////////////////////////////////////////////////////////

    function _taxedTransfer(address sender, address recipient, uint256 amount,bool isBuy,bool isSell) private{
        uint256 recipientBalance = _balances[recipient];
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");        swapLimit = sellLimit/2;
        uint8 tax;
        if(isSell){
            if(!_excludedFromSellLock[sender]){
                           require(_sellLock[sender]<=block.timestamp||sellLockDisabled,"Seller in sellLock");
                           _sellLock[sender]=block.timestamp+sellLockTime;
            }
                    require(amount<=sellLimit,"Dump protection");
            tax=_sellTax;
        } else if(isBuy){
                   require(recipientBalance+amount<=balanceLimit,"whale protection");
            require(amount<=buyLimit, "whale protection");
            tax=_buyTax;
        } else {
                   require(recipientBalance+amount<=balanceLimit,"whale protection");
                          if(!_excludedFromSellLock[sender])
                require(_sellLock[sender]<=block.timestamp||sellLockDisabled,"Sender in Lock");
            tax=_transferTax;
        }
                 if((sender!=pair_address)&&(!manualConversion)&&(!_isSwappingContractModifier))
            _swapContractToken(amount);
           uint256 contractToken=_calculateFee(amount, tax, _marketingTax+_liquidityTax+_DevelopmentTax+_RewardTax+_KaibaTax);
           uint256 taxedAmount=amount-(contractToken);
           _removeToken(sender,amount);
           _balances[address(this)] += contractToken;
           _addToken(recipient, taxedAmount);
        emit Transfer(sender, address(this), contractToken);
        emit Transfer(sender,recipient,taxedAmount);
    }
    function _feelessTransfer(address sender, address recipient, uint256 amount) private{
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
           _removeToken(sender,amount);
           _addToken(recipient, amount);
        emit Transfer(sender,recipient,amount);
    }

     ///////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////// Fees and modifications //////////////////////////
   ///////////////////////////////////////////////////////////////////////////////////

    function _calculateFee(uint256 amount, uint8 tax, uint8 taxPercent) private pure returns (uint256) {
        return (amount*tax*taxPercent) / 10000;
    }
    function _addToken(address addr, uint256 amount) private {
           uint256 newAmount=_balances[addr]+amount;
        _balances[addr]=newAmount;
    }    function _removeToken(address addr, uint256 amount) private {
           uint256 newAmount=_balances[addr]-amount;
        _balances[addr]=newAmount;
    }
    bool private _isTokenSwapping;
    uint256 public totalTokenSwapGenerated;
    uint256 public totalPayouts;
    uint8 public marketingShare=50;
    uint8 public DevelopmentShare=40;
    uint8 public KaibaShare = 10;
    uint256 public marketingBalance;
    uint256 public DevelopmentBalance;
    uint256 public RewardBalance;
    uint256 public kaiBalance;
    function _distributeFeesETH(uint256 ETHamount) private {
        uint256 marketingSplit = (ETHamount * marketingShare)/100;
        uint256 DevelopmentSplit = (ETHamount * DevelopmentShare)/100;
        uint256 KaibaSplit = (ETHamount * KaibaShare)/100;
        marketingBalance+=marketingSplit;
        DevelopmentBalance+=DevelopmentSplit;
        kaiBalance += KaibaSplit;
    }
    uint256 public totalLPETH;
    bool private _isSwappingContractModifier;
    modifier lockTheSwap {
        _isSwappingContractModifier = true;
        _;
        _isSwappingContractModifier = false;
    }
    function _swapContractToken(uint256 totalMax) private lockTheSwap{
        uint256 contractBalance=_balances[address(this)] - kaiBalance;
        uint16 totalTax=_liquidityTax+_marketingTax+_DevelopmentTax+_KaibaTax;
        uint256 tokenToSwap=swapLimit;
        if(tokenToSwap > totalMax) {
            if(isSwapPegged) {
                tokenToSwap = totalMax;
            }
        }
           if(contractBalance<tokenToSwap||totalTax==0){
            return;
        }
        uint256 tokenForLiquidity=(tokenToSwap*_liquidityTax)/totalTax;
        uint256 tokenForMarketing= (tokenToSwap*_marketingTax)/totalTax;
        uint256 tokenForReward= (tokenToSwap*_RewardTax)/totalTax;
        uint256 tokenForDevelopment= (tokenToSwap*_DevelopmentTax)/totalTax;
        uint256 tokenForKaiba = (tokenToSwap*_KaibaTax)/totalTax;
        uint256 liqToken=tokenForLiquidity/2;
        uint256 liqETHToken=tokenForLiquidity-liqToken;
        uint256 swapToken=liqETHToken+tokenForMarketing+tokenForDevelopment+tokenForKaiba;
        uint256 initialETHBalance = address(this).balance;
        _swapTokenForETH(swapToken);
        uint256 newETH=(address(this).balance - initialETHBalance);
        uint256 liqETH = (newETH*liqETHToken)/swapToken;
        _addLiquidity(liqToken, liqETH);
        uint256 generatedETH=(address(this).balance - initialETHBalance);
        _distributeFeesETH(generatedETH);
        _balances[rewards] += tokenForReward;
        emit Transfer(address(this), rewards, tokenForReward);
    }
    function _swapTokenForETH(uint256 amount) private {
        _approve(address(this), address(router), amount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    function _addLiquidity(uint256 tokenamount, uint256 ETHamount) private {
        totalLPETH+=ETHamount;
        _approve(address(this), address(router), tokenamount);
        router.addLiquidityETH{value: ETHamount}(
            address(this),
            tokenamount,
            0,
            0,
            address(this),
            block.timestamp
        );
    }
    /// @notice Utilities

    function UTILS_getLimits() public view returns(uint256 balance, uint256 sell){
        return(balanceLimit/10**_decimals, sellLimit/10**_decimals);
    }
    function UTILS_getTaxes() public view returns(uint256 RewardTax, uint256 DevelopmentTax,uint256 liquidityTax,uint256 marketingTax, uint256 buyTax, uint256 sellTax, uint256 transferTax){
        return (_RewardTax, _DevelopmentTax,_liquidityTax,_marketingTax,_buyTax,_sellTax,_transferTax);
    }
    function UTILS_getAddressSellLockTimeInSeconds(address AddressToCheck) public view returns (uint256){
        uint256 lockTime=_sellLock[AddressToCheck];
        if(lockTime<=block.timestamp)
        {
            return 0;
        }
        return lockTime-block.timestamp;
    }
    function UTILS_getSellLockTimeInSeconds() public view returns(uint256){
        return sellLockTime;
    }
    bool public sellLockDisabled;
    uint256 public sellLockTime;
    bool public manualConversion;    function UTILS_SetPeggedSwap(bool isPegged) public onlyAuth {
        isSwapPegged = isPegged;
    }
    function UTILS_SetMaxSwap(uint256 max) public onlyAuth {
        require(max >= (_circulatingSupply/500), "Too low"); /// Avoid honeypots
        swapLimit = max;
    }
    function UTILS_SetMaxLockTime(uint16 max) public onlyAuth {
     require(max <= 20 seconds, "Too high"); /// Avoid locking
     MaxSellLockTime = max;
    }

    /// @notice ACL Functions
    function ACL_BlackListAddress(address addy, bool booly) public onlyAuth {
        _blacklist[addy] = booly;
    }
    function ACL_SetAuth(address addy, bool booly) public onlyAuth {
        is_auth[addy] = booly;
    }
    function ACL_ExcludeAccountFromFees(address account, bool booly) public onlyAuth {
        _excluded[account] = booly;
    }

    function ACL_ExcludeAccountFromSellLock(address account, bool booly) public onlyAuth {
        _excludedFromSellLock[account] = booly;
    }

    function AUTH_WithdrawMarketingETH() public onlyAuth{
        uint256 amount=marketingBalance;
        marketingBalance=0;
        address sender = marketing;
        (bool sent,) =sender.call{value: (amount)}("");
        require(sent,"withdraw failed");
    }
    function AUTH_WithdrawDevelopmentETH() public onlyAuth{
        uint256 amount=DevelopmentBalance;
        DevelopmentBalance=0;
        address sender = development;
        (bool sent,) =sender.call{value: (amount)}("");
        require(sent,"withdraw failed");
    }
    function AUTH_WithdrawRewardTokens() public onlyAuth{
        uint256 amount=RewardBalance;
        RewardBalance=0;
        address sender = msg.sender;
        bool sent = ERC20(address(this)).transfer(sender, amount);
        require(sent,"withdraw failed");
    }

    function AUTH_WithdrawKaibaTokens() public onlyAuth{
        uint256 amount=kaiBalance;
        kaiBalance=0;
        address sender = msg.sender;
        bool sent = ERC20(address(this)).transfer(sender, amount);
        require(sent,"withdraw failed");
    }

    function UTILS_SwitchManualETHConversion(bool manual) public onlyAuth{
        manualConversion=manual;
    }
    function UTILS_DisableSellLock(bool disabled) public onlyAuth{
        sellLockDisabled=disabled;
    }
    function UTILS_SetSellLockTime(uint256 sellLockSeconds)public onlyAuth{
        sellLockTime=sellLockSeconds;
    }
    function UTILS_SetTaxes(uint8 RewardTaxes, uint8 DevelopmentTaxes, uint8 liquidityTaxes, uint8 marketingTaxes,uint8 buyTax, uint8 sellTax, uint8 transferTax) public onlyAuth{
        uint8 totalTax=RewardTaxes + DevelopmentTaxes +liquidityTaxes+marketingTaxes;
        require(totalTax==100, "burn+liq+marketing needs to equal 100%");
        _RewardTax = RewardTaxes;
        _DevelopmentTax = DevelopmentTaxes;
        _liquidityTax=liquidityTaxes;
        _marketingTax=marketingTaxes;
        _buyTax=buyTax;
        _sellTax=sellTax;
        _transferTax=transferTax;
        require(_buyTax < 48 && _sellTax < 48 && _transferTax < 48, "No honey pls!");
    }
    function UTILS_ChangeMarketingShare(uint8 newShare) public onlyAuth{
        marketingShare=newShare;
    }
    function UTILS_ChangeDevelopmentShare(uint8 newShare) public onlyAuth{
        DevelopmentShare=newShare;
    }
    function UTILS_ChangeKaibaShare(uint8 newShare) public onlyAuth{
        KaibaShare=newShare;
    }
    function UTILS_ManualGenerateTokenSwapBalance(uint256 _qty) public onlyAuth{
        _swapContractToken(_qty * 10**9);
    }
    function UTILS_UpdateLimits(uint256 newBalanceLimit, uint256 newSellLimit) public onlyAuth{
        newBalanceLimit=newBalanceLimit*10**_decimals;
        newSellLimit=newSellLimit*10**_decimals;
        balanceLimit = newBalanceLimit;
        sellLimit = newSellLimit;
    }
    bool public tradingEnabled;
    address private _liquidityTokenAddress;
    function SETTINGS_EnableTrading() public onlyAuth{
        tradingEnabled = true;
    }
    function SETTINGS_LiquidityTokenAddress(address liquidityTokenAddress) public onlyAuth{
        _liquidityTokenAddress=liquidityTokenAddress;
    }
    function UTILS_RescueTokens(address tknAddress) public onlyAuth {
        require(tknAddress != pair_address, "Hey! No!"); /// Avoid liquidity pulls
        ERC20 token = ERC20(tknAddress);
        uint256 ourBalance = token.balanceOf(address(this));
        require(ourBalance>0, "No tokens in our balance");
        token.transfer(msg.sender, ourBalance);
    }
    function UTILS_setBlacklistEnabled(bool isBlacklistEnabled) public onlyAuth {
        isBlacklist = isBlacklistEnabled;
    }
    function UTILS_setContractTokenSwapManual(bool manual) public onlyAuth {
        isTokenSwapManual = manual;
    }
    function UTILS_setBlacklistedAddress(address toBlacklist) public onlyAuth {
        _blacklist[toBlacklist] = true;
    }
    function UTILS_removeBlacklistedAddress(address toRemove) public onlyAuth {
        _blacklist[toRemove] = false;
    }    function UTILS_AvoidLocks() public onlyAuth{
        (bool sent,) =msg.sender.call{value: (address(this).balance)}("");
        require(sent);
    }

    function UTILS_setMarketingWallet(address wallet) public onlyAuth {
        marketing = wallet;
    }
    function UTILS_setDevelopergWallet(address wallet) public onlyAuth {
        development = wallet;
    }
    function UTILS_setRewardsWallet(address wallet) public onlyAuth {
        rewards = wallet;
    }
    function UTILS_setKaibaWallet(address wallet) public onlyAuth {
        kaiba = wallet;
    }
    function getowner() public view returns (address) {
        return owner;
    }
    function name() external pure override returns (string memory) {
        return _name;
    }
    function symbol() external pure override returns (string memory) {
        return _symbol;
    }
    function decimals() external pure override returns (uint8) {
        return _decimals;
    }
    function totalSupply() external view override returns (uint256) {
        return _circulatingSupply;
    }
    function balanceOf(address account) external view override returns (uint256) {
        return _balances[account];
    }
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }
    function allowance(address _owner, address spender) external view override returns (uint256) {
        return _allowances[_owner][spender];
    }
    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    function _approve(address _owner, address spender, uint256 amount) private {
        require(_owner != address(0), "Approve from zero");
        require(spender != address(0), "Approve to zero");
        _allowances[_owner][spender] = amount;
        emit Approval(_owner, spender, amount);
    }
    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Transfer > allowance");
        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) external returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) {
        uint256 currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "<0 allowance");
        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ACL_BlackListAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ACL_ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ACL_ExcludeAccountFromSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ACL_SetAuth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"AIRDROP_multiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"amount","type":"uint256[]"},{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"AIRDROP_multiple_different","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"AUTH_WithdrawDevelopmentETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"AUTH_WithdrawKaibaTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"AUTH_WithdrawMarketingETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"AUTH_WithdrawRewardTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BalanceLimitDivider","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuyLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"CTRL_set_deployer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"CTRL_set_development","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"CTRL_set_kaiba","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"CTRL_set_marketing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"CTRL_set_rewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DevelopmentBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DevelopmentShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"KaibaShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MB_burn_contract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MB_burn_liquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MB_mint_contract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MB_mint_liquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"MIGRATION_allowance_on_v1","outputs":[{"internalType":"uint256","name":"allowed","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIGRATION_approve_v1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MIGRATION_claim_from_v1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"MIGRATION_control_claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"MIGRATION_has_claimed","outputs":[{"internalType":"bool","name":"has_it","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxSellLockTime","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RewardBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SETTINGS_EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityTokenAddress","type":"address"}],"name":"SETTINGS_LiquidityTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SellLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UTILS_AvoidLocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"UTILS_ChangeDevelopmentShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"UTILS_ChangeKaibaShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"UTILS_ChangeMarketingShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"disabled","type":"bool"}],"name":"UTILS_DisableSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_qty","type":"uint256"}],"name":"UTILS_ManualGenerateTokenSwapBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tknAddress","type":"address"}],"name":"UTILS_RescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"max","type":"uint16"}],"name":"UTILS_SetMaxLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"UTILS_SetMaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isPegged","type":"bool"}],"name":"UTILS_SetPeggedSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellLockSeconds","type":"uint256"}],"name":"UTILS_SetSellLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"RewardTaxes","type":"uint8"},{"internalType":"uint8","name":"DevelopmentTaxes","type":"uint8"},{"internalType":"uint8","name":"liquidityTaxes","type":"uint8"},{"internalType":"uint8","name":"marketingTaxes","type":"uint8"},{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint8","name":"transferTax","type":"uint8"}],"name":"UTILS_SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"UTILS_SwitchManualETHConversion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBalanceLimit","type":"uint256"},{"internalType":"uint256","name":"newSellLimit","type":"uint256"}],"name":"UTILS_UpdateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"AddressToCheck","type":"address"}],"name":"UTILS_getAddressSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UTILS_getLimits","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UTILS_getSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UTILS_getTaxes","outputs":[{"internalType":"uint256","name":"RewardTax","type":"uint256"},{"internalType":"uint256","name":"DevelopmentTax","type":"uint256"},{"internalType":"uint256","name":"liquidityTax","type":"uint256"},{"internalType":"uint256","name":"marketingTax","type":"uint256"},{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"},{"internalType":"uint256","name":"transferTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"UTILS_removeBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isBlacklistEnabled","type":"bool"}],"name":"UTILS_setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toBlacklist","type":"address"}],"name":"UTILS_setBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"UTILS_setContractTokenSwapManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"UTILS_setDevelopergWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"UTILS_setKaibaWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"UTILS_setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"UTILS_setRewardsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_DevelopmentTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_KaibaTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_RewardTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_excluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_excludedFromSellLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_sellLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"authorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balanceLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bot_killer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim_enable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"claimed_list","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"development","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getowner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kaiBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kaiba","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualConversion","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketing","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair_address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewards","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router_address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"set_authorized","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalLPETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPayouts","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":"totalTokenSwapGenerated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","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"},{"stateMutability":"payable","type":"receive"}]

60806040526008805460ff191660011790556200001f6009600a620006db565b62000032906601c6bf526340006200079c565b6009908155600a80546001600160401b031916660a007d190032011781556200005c9190620006db565b620000709067016345785d8a00006200079c565b600b819055600c819055600d819055600e55600f805461ffff60401b19166901000000000000000000179055601080546001600160a01b031990811673b19ea1d1b9ede773e4b86b1e913236e0daeaf80817909155601180548216736fee72ad3a9210299190ed0dbfc4d377971dbe1917905560128054821673a29ea5118fee344449a1dadab49419c51b388a4317905560138054821673356be05bd1f2fcffa6c6fb7128bf54dbe0df38e01790556014805490911673cbeb3c6aec7040e4949f22234573bd06b31de83b179055601b8054620a283262ffffff199091161790553480156200015e57600080fd5b506000600a600b5460096200017491906200079c565b6200018091906200066f565b33600081815260026020526040808220849055519293509091600080516020620057d083398151915290620001b89085815260200190565b60405180910390a3600081600b54620001d29190620007be565b30600081815260026020526040808220849055519293509091600080516020620057d0833981519152906200020a9085815260200190565b60405180910390a3601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200027257600080fd5b505afa15801562000287573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ad91906200063d565b6001600160a01b031663c9c6539630601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030b57600080fd5b505afa15801562000320573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034691906200063d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200038f57600080fd5b505af1158015620003a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ca91906200063d565b600f80546001600160a01b03929092166a010000000000000000000002600160501b600160f01b0319909216919091179055600a805460ff630100000090910416906200041a90600990620006db565b6200042e9067016345785d8a00006200079c565b6200043a91906200066f565b600c55600a8054640100000000900461ffff16906200045c90600990620006db565b620004709067016345785d8a00006200079c565b6200047c91906200066f565b600d55600a8054610100900461ffff16906200049b90600990620006db565b620004af9067016345785d8a00006200079c565b620004bb91906200066f565b600e5550506002602255600f80546001600160401b031916670710111e1e09090917815560018054336001600160a01b031990911681178255600090815260208181526040808320805460ff199081168617909155600583528184208054821686179055601080546001600160a01b0390811686528386208054841688179055601180548216875284872080548516891790556012805483168852858820805486168a1790556013805484168952868920805487168b1790556014805485168a52878a20805488168c17905560069098527f8cb3563b79eac8102a826f0dcb81e7e954d7df2b15d07edcb2dd2b236c2078b4805487168b17905599546a0100000000000000000000900483168852858820805486168a179055308852858820805486168a17905592548216875284872080548516891790555481168652838620805484168817905590548116855282852080548316871790559554861684528184208054821686179055915490941682529290208054909216179055620007ee565b6000602082840312156200065057600080fd5b81516001600160a01b03811681146200066857600080fd5b9392505050565b6000826200068d57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620006d3578160001904821115620006b757620006b7620007d8565b80851615620006c557918102915b93841c939080029062000697565b509250929050565b60006200066860ff841683600082620006f75750600162000796565b81620007065750600062000796565b81600181146200071f57600281146200072a576200074a565b600191505062000796565b60ff8411156200073e576200073e620007d8565b50506001821b62000796565b5060208310610133831016604e8410600b84101617156200076f575081810a62000796565b6200077b838362000692565b8060001904821115620007925762000792620007d8565b0290505b92915050565b6000816000190483118215151615620007b957620007b9620007d8565b500290565b600082821015620007d357620007d3620007d8565b500390565b634e487b7160e01b600052601160045260246000fd5b614fd280620007fe6000396000f3fe6080604052600436106106c45760003560e01c806370a0823111610376578063b9181611116101cf578063dc7eae6011610101578063ef089bba116100a5578063f88b0e4611610077578063f88b0e4614611569578063fa49e09a1461157f578063fb2729871461159f578063fe0174bd146115cc57005b8063ef089bba146114e9578063eff4b27614611509578063f099e12314611529578063f887ea401461154957005b8063e41a1d9f116100de578063e41a1d9f1461147e578063ea68c17414611494578063ead3caf4146114b4578063ed1255f2146114d457005b8063dc7eae60146113f8578063dd62ed3e14611418578063e2eb9ea01461145e57005b8063d18aaa6511610173578063d5f3948811610145578063d5f3948814611387578063d65af4f2146113a7578063d699340d14610786578063d6ef56f3146113c857005b8063d18aaa65146112eb578063d28d88521461130c578063d46f2f661461133f578063d47b82831461136757005b8063be8f8d07116101ac578063be8f8d07146106cd578063c0dda5a41461127c578063c884ef831461129c578063ca9ec199146112cc57005b8063b918161114611203578063bb730e961461123c578063bcba423b1461125c57005b806395d89b41116102a8578063a457c2d71161024c578063aea96aee1161021e578063aea96aee1461119e578063b09f1266146111be578063b41abeb7146111ee578063b4de400b14610a4f57005b8063a457c2d714611129578063a5cb08af14611149578063a9059cbb1461115e578063ae13eeaf1461117e57005b80639ec5a894116102855780639ec5a894146110ae5780639f767c91146110ce578063a20623ce146110e3578063a253c06e1461111357005b806395d89b4114611061578063987bb5a71461108e5780639a7469741461108e57005b806380848fed1161031a57806388f19574116102ec57806388f1957414610fd35780638b4c6c8d14610ff35780638f78d5f91461100857806392763f1d1461104157005b806380848fed14610f4a5780638117eb5014610f6a57806386d0ada814610f9a578063887c60fb14610fb457005b8063762bb28211610353578063762bb28214610ef35780637a4325f914610a2f5780637ae4d84814610f095780637b929c2714610f2a57005b806370a0823114610e9357806372b0c84414610ec957806372b86bde14610ede57005b80632e560f801161052857806346559de51161045a5780635243cf94116103fe57806358e55365116103d057806358e5536514610e1057806363ac734114610e265780636a8d049d14610e465780636ebcf60714610e6657005b80635243cf9414610d9a57806356ed189614610dbb57806357575f5c14610dda578063589210d914610dfa57005b80634ada218b116104375780634ada218b14610d2f5780634eca70f514610d4e5780634f7d773b14610d6e5780634f91e48c14610d8457005b806346559de514610cd857806348e907b714610cf8578063491f692c14610d0e57005b8063382e329a116104cc5780634089b1701161049e5780634089b17014610c1b57806342a1109514610c31578063430b1df814610c4b5780634582543e14610c6157005b8063382e329a14610ba45780633950935114610bc55780633cc39b7a14610be55780633d7754a214610bfb57005b806332424aa31161050557806332424aa314610b2657806332d0b56814610b3b57806334184e2614610b5b5780633478154b14610b8257005b80632e560f8014610ad1578063311a869714610af1578063313ce56714610b1257005b806317391e49116106015780631f8b845e116105a55780632c9a115e116105775780632c9a115e14610a4f5780632d0947bd14610a6f5780632d3e474a14610a8f5780632d88286314610aaf57005b80631f8b845e146109da57806323b872dd146109fa57806329eeed1814610a1a5780632bfe874214610a2f57005b80631a12227b116105de5780631a12227b146109705780631af903be146109855780631ce12d8e146109a55780631eb25d13146109c557005b806317391e491461091b57806318160ddd1461093b57806318ee55031461095057005b80630852a96d116106685780630a304a76116106455780630a304a76146108705780630fd99e1614610890578063104d221b146108c65780631637e715146108e657005b80630852a96d146107ff57806309218ee714610814578063095ea7b31461084057005b8063048e5f0a116106a1578063048e5f0a14610766578063058546e014610786578063058e7e18146107a657806306fdde03146107c657005b8063020711b3146106cd578063024c2ddd146106ed57806303fd2a451461073857005b366106cb57005b005b3480156106d957600080fd5b506106cb6106e8366004614935565b6115ea565b3480156106f957600080fd5b5061072561070836600461496f565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561074457600080fd5b5061074e61dead81565b6040516001600160a01b03909116815260200161072f565b34801561077257600080fd5b506106cb610781366004614b3f565b611659565b34801561079257600080fd5b506106cb6107a1366004614935565b61180e565b3480156107b257600080fd5b506106cb6107c1366004614aaf565b611874565b3480156107d257600080fd5b506040805180820190915260078152664b6c65654b616960c81b60208201525b60405161072f9190614c7c565b34801561080b57600080fd5b50602254610725565b34801561082057600080fd5b50601b5461082e9060ff1681565b60405160ff909116815260200161072f565b34801561084c57600080fd5b5061086061085b366004614a17565b6118cb565b604051901515815260200161072f565b34801561087c57600080fd5b506106cb61088b366004614bf6565b6118e2565b34801561089c57600080fd5b50600a546108b390640100000000900461ffff1681565b60405161ffff909116815260200161072f565b3480156108d257600080fd5b50601b5461082e9062010000900460ff1681565b3480156108f257600080fd5b50610906610901366004614935565b611af4565b6040805192835260208301919091520161072f565b34801561092757600080fd5b50600f5461082e9062010000900460ff1681565b34801561094757600080fd5b50600b54610725565b34801561095c57600080fd5b506106cb61096b366004614aaf565b611c50565b34801561097c57600080fd5b506106cb611cbc565b34801561099157600080fd5b506106cb6109a0366004614935565b611d58565b3480156109b157600080fd5b506106cb6109c0366004614aaf565b611dbd565b3480156109d157600080fd5b50610725611e14565b3480156109e657600080fd5b50600a546108b390610100900461ffff1681565b348015610a0657600080fd5b50610860610a153660046149a8565b611e35565b348015610a2657600080fd5b506106cb611ecc565b348015610a3b57600080fd5b506106cb610a4a3660046149e9565b61228b565b348015610a5b57600080fd5b506106cb610a6a366004614935565b6122fa565b348015610a7b57600080fd5b506106cb610a8a366004614b0d565b612360565b348015610a9b57600080fd5b5060115461074e906001600160a01b031681565b348015610abb57600080fd5b50600f5461082e90640100000000900460ff1681565b348015610add57600080fd5b506106cb610aec366004614935565b61240a565b348015610afd57600080fd5b50600a5461082e906301000000900460ff1681565b348015610b1e57600080fd5b50600961082e565b348015610b3257600080fd5b5061082e600981565b348015610b4757600080fd5b506106cb610b56366004614ae9565b612470565b348015610b6757600080fd5b50600f5461074e90600160501b90046001600160a01b031681565b348015610b8e57600080fd5b50600a546108b390600160301b900461ffff1681565b348015610bb057600080fd5b50600f5461082e906301000000900460ff1681565b348015610bd157600080fd5b50610860610be0366004614a17565b612519565b348015610bf157600080fd5b5061072560205481565b348015610c0757600080fd5b506106cb610c16366004614bdb565b612550565b348015610c2757600080fd5b50610725601a5481565b348015610c3d57600080fd5b50600f5461082e9060ff1681565b348015610c5757600080fd5b50610725601f5481565b348015610c6d57600080fd5b50600f546040805160ff600160301b840481168252600160281b8404811660208301526301000000840481169282019290925264010000000083048216606082015281831660808201526101008304821660a0820152620100009092041660c082015260e00161072f565b348015610ce457600080fd5b506106cb610cf3366004614aaf565b6125b2565b348015610d0457600080fd5b5061072560195481565b348015610d1a57600080fd5b5060155461086090600160a01b900460ff1681565b348015610d3b57600080fd5b5060235461086090610100900460ff1681565b348015610d5a57600080fd5b506106cb610d69366004614935565b612614565b348015610d7a57600080fd5b50610725601d5481565b348015610d9057600080fd5b50610725600d5481565b348015610da657600080fd5b50600f5461082e90600160301b900460ff1681565b348015610dc757600080fd5b50601b5461082e90610100900460ff1681565b348015610de657600080fd5b506106cb610df5366004614b8b565b612682565b348015610e0657600080fd5b50610725600e5481565b348015610e1c57600080fd5b50610725601c5481565b348015610e3257600080fd5b506106cb610e41366004614b0d565b612700565b348015610e5257600080fd5b506106cb610e61366004614b0d565b6127d6565b348015610e7257600080fd5b50610725610e81366004614935565b60026020526000908152604090205481565b348015610e9f57600080fd5b50610725610eae366004614935565b6001600160a01b031660009081526002602052604090205490565b348015610ed557600080fd5b50610906612831565b348015610eea57600080fd5b506106cb61286e565b348015610eff57600080fd5b50610725600c5481565b348015610f1557600080fd5b50600f5461082e90600160381b900460ff1681565b348015610f3657600080fd5b5060125461074e906001600160a01b031681565b348015610f5657600080fd5b506106cb610f653660046149e9565b6128c3565b348015610f7657600080fd5b50610860610f85366004614935565b60066020526000908152604090205460ff1681565b348015610fa657600080fd5b506023546108609060ff1681565b348015610fc057600080fd5b5060215461086090610100900460ff1681565b348015610fdf57600080fd5b506106cb610fee366004614b0d565b612932565b348015610fff57600080fd5b506106cb6129f9565b34801561101457600080fd5b50610860611023366004614935565b6001600160a01b031660009081526016602052604090205460ff1690565b34801561104d57600080fd5b5061072561105c366004614935565b612c9b565b34801561106d57600080fd5b506040805180820190915260048152634b4c454560e01b60208201526107f2565b34801561109a57600080fd5b506106cb6110a9366004614935565b612cd5565b3480156110ba57600080fd5b5060135461074e906001600160a01b031681565b3480156110da57600080fd5b506106cb612d3b565b3480156110ef57600080fd5b506108606110fe366004614935565b60076020526000908152604090205460ff1681565b34801561111f57600080fd5b50610725600b5481565b34801561113557600080fd5b50610860611144366004614a17565b612e4c565b34801561115557600080fd5b506106cb612ec8565b34801561116a57600080fd5b50610860611179366004614a17565b612fb4565b34801561118a57600080fd5b506106cb611199366004614bdb565b612fc1565b3480156111aa57600080fd5b506106cb6111b9366004614935565b61301b565b3480156111ca57600080fd5b506107f2604051806040016040528060048152602001634b4c454560e01b81525081565b3480156111fa57600080fd5b506106cb613083565b34801561120f57600080fd5b5061086061121e366004614935565b6001600160a01b031660009081526020819052604090205460ff1690565b34801561124857600080fd5b5061074e611257366004614b0d565b6130ee565b34801561126857600080fd5b506106cb611277366004614935565b613118565b34801561128857600080fd5b506106cb611297366004614a43565b613300565b3480156112a857600080fd5b506108606112b7366004614935565b60166020526000908152604090205460ff1681565b3480156112d857600080fd5b50600f5461082e90610100900460ff1681565b3480156112f757600080fd5b50600f5461082e90600160281b900460ff1681565b34801561131857600080fd5b506107f2604051806040016040528060078152602001664b6c65654b616960c81b81525081565b34801561134b57600080fd5b5061074e737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561137357600080fd5b506106cb611382366004614aaf565b613526565b34801561139357600080fd5b5060105461074e906001600160a01b031681565b3480156113b357600080fd5b50600f5461086090600160481b900460ff1681565b3480156113d457600080fd5b506108606113e3366004614935565b60056020526000908152604090205460ff1681565b34801561140457600080fd5b506106cb611413366004614b0d565b61357d565b34801561142457600080fd5b5061072561143336600461496f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561146a57600080fd5b506106cb611479366004614bdb565b61360f565b34801561148a57600080fd5b50610725601e5481565b3480156114a057600080fd5b5060145461074e906001600160a01b031681565b3480156114c057600080fd5b506106cb6114cf3660046149e9565b61366f565b3480156114e057600080fd5b506106cb6136de565b3480156114f557600080fd5b506106cb611504366004614aaf565b61375b565b34801561151557600080fd5b506106cb611524366004614b0d565b6137b9565b34801561153557600080fd5b506106cb6115443660046149e9565b613813565b34801561155557600080fd5b5060155461074e906001600160a01b031681565b34801561157557600080fd5b5061072560225481565b34801561158b57600080fd5b506106cb61159a366004614b0d565b613882565b3480156115ab57600080fd5b506107256115ba366004614935565b60046020526000908152604090205481565b3480156115d857600080fd5b506001546001600160a01b031661074e565b3360009081526020819052604090205460ff168061161257506001546001600160a01b031633145b6116375760405162461bcd60e51b815260040161162e90614cfb565b60405180910390fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526020819052604090205460ff168061168157506001546001600160a01b031633145b61169d5760405162461bcd60e51b815260040161162e90614cfb565b806116a88185614edc565b3060009081526002602052604090205410156116f95760405162461bcd60e51b815260206004820152601060248201526f4e6f7420656e6f7567682066756e647360801b604482015260640161162e565b6117038185614edc565b3060009081526002602052604081208054909190611722908490614efb565b90915550600090505b8181101561180757846002600086868581811061174a5761174a614f43565b905060200201602081019061175f9190614935565b6001600160a01b03166001600160a01b03168152602001908152602001600020600082825461178e9190614d8f565b9091555084905083828181106117a6576117a6614f43565b90506020020160208101906117bb9190614935565b6001600160a01b0316306001600160a01b0316600080516020614f7d833981519152876040516117ed91815260200190565b60405180910390a3806117ff81614f12565b91505061172b565b5050505050565b3360009081526020819052604090205460ff168061183657506001546001600160a01b031633145b6118525760405162461bcd60e51b815260040161162e90614cfb565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526020819052604090205460ff168061189c57506001546001600160a01b031633145b6118b85760405162461bcd60e51b815260040161162e90614cfb565b600a805460ff1916911515919091179055565b60006118d83384846138cb565b5060015b92915050565b3360009081526020819052604090205460ff168061190a57506001546001600160a01b031633145b6119265760405162461bcd60e51b815260040161162e90614cfb565b60008486611934898b614da7565b61193e9190614da7565b6119489190614da7565b90508060ff166064146119ac5760405162461bcd60e51b815260206004820152602660248201527f6275726e2b6c69712b6d61726b6574696e67206e6565647320746f20657175616044820152656c203130302560d01b606482015260840161162e565b87600f60066101000a81548160ff021916908360ff16021790555086600f60056101000a81548160ff021916908360ff16021790555085600f60036101000a81548160ff021916908360ff16021790555084600f60046101000a81548160ff021916908360ff16021790555083600f60006101000a81548160ff021916908360ff16021790555082600f60016101000a81548160ff021916908360ff16021790555081600f60026101000a81548160ff021916908360ff1602179055506030600f60009054906101000a900460ff1660ff16108015611a965750600f54603061010090910460ff16105b8015611aae5750600f5460306201000090910460ff16105b611aea5760405162461bcd60e51b815260206004820152600d60248201526c4e6f20686f6e657920706c732160981b604482015260640161162e565b5050505050505050565b33600090815260208190526040812054819060ff1680611b1e57506001546001600160a01b031633145b611b3a5760405162461bcd60e51b815260040161162e90614cfb565b604051636eb1769f60e11b81526001600160a01b038416600482015230602482015273382f0160c24f5c515a19f155bac14d479433a40790819063dd62ed3e9060440160206040518083038186803b158015611b9557600080fd5b505afa158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190614b26565b6040516370a0823160e01b81526001600160a01b0386811660048301528316906370a082319060240160206040518083038186803b158015611c0e57600080fd5b505afa158015611c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c469190614b26565b9250925050915091565b3360009081526020819052604090205460ff1680611c7857506001546001600160a01b031633145b611c945760405162461bcd60e51b815260040161162e90614cfb565b600f8054911515680100000000000000000268ff000000000000000019909216919091179055565b3360009081526020819052604090205460ff1680611ce457506001546001600160a01b031633145b611d005760405162461bcd60e51b815260040161162e90614cfb565b604051600090339047908381818185875af1925050503d8060008114611d42576040519150601f19603f3d011682016040523d82523d6000602084013e611d47565b606091505b5050905080611d5557600080fd5b50565b3360009081526020819052604090205460ff1680611d8057506001546001600160a01b031633145b611d9c5760405162461bcd60e51b815260040161162e90614cfb565b6001600160a01b03166000908152600760205260409020805460ff19169055565b3360009081526020819052604090205460ff1680611de557506001546001600160a01b031633145b611e015760405162461bcd60e51b815260040161162e90614cfb565b6023805460ff1916911515919091179055565b611e206009600a614e31565b611e329067016345785d8a0000614edc565b81565b6000611e428484846139be565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015611ead5760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b604482015260640161162e565b611ec18533611ebc8685614efb565b6138cb565b506001949350505050565b600154600160a01b900460ff1615611f125760405162461bcd60e51b81526020600482015260096024820152681c99595b9d1c985b9d60ba1b604482015260640161162e565b6001805460ff60a01b1916600160a01b9081179091556015540460ff16611f6c5760405162461bcd60e51b815260206004820152600e60248201526d10db185a5b481a5cc8195b99195960921b604482015260640161162e565b3360009081526016602052604090205460ff1615611f8957600080fd5b6040516370a0823160e01b815233600482015273382f0160c24f5c515a19f155bac14d479433a4079060009082906370a082319060240160206040518083038186803b158015611fd857600080fd5b505afa158015611fec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120109190614b26565b604051636eb1769f60e11b815233600482015230602482015290915081906001600160a01b0384169063dd62ed3e9060440160206040518083038186803b15801561205a57600080fd5b505afa15801561206e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120929190614b26565b116120d65760405162461bcd60e51b81526020600482015260146024820152734e6f7420656e6f75676820616c6c6f77616e636560601b604482015260640161162e565b3060009081526002602052604090205481111561212a5760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b604482015260640161162e565b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038316906323b872dd90606401602060405180830381600087803b15801561217857600080fd5b505af115801561218c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b09190614acc565b5030600090815260026020526040812080548392906121d0908490614efb565b909155505033600090815260026020526040812080548392906121f4908490614d8f565b909155505060405181815233903090600080516020614f7d8339815191529060200160405180910390a35050336000818152601660205260408120805460ff1916600190811790915560178054808301825592527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c1590910180546001600160a01b031916909217909155805460ff60a01b19169055565b3360009081526020819052604090205460ff16806122b357506001546001600160a01b031633145b6122cf5760405162461bcd60e51b815260040161162e90614cfb565b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b3360009081526020819052604090205460ff168061232257506001546001600160a01b031633145b61233e5760405162461bcd60e51b815260040161162e90614cfb565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526020819052604090205460ff168061238857506001546001600160a01b031633145b6123a45760405162461bcd60e51b815260040161162e90614cfb565b80600b60008282546123b69190614efb565b909155505030600090815260026020526040812080548392906123da908490614efb565b909155505060405181815261dead903090600080516020614f7d833981519152906020015b60405180910390a350565b3360009081526020819052604090205460ff168061243257506001546001600160a01b031633145b61244e5760405162461bcd60e51b815260040161162e90614cfb565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526020819052604090205460ff168061249857506001546001600160a01b031633145b6124b45760405162461bcd60e51b815260040161162e90614cfb565b60148161ffff1611156124f45760405162461bcd60e51b81526020600482015260086024820152670a8dede40d0d2ced60c31b604482015260640161162e565b600a805461ffff909216600160301b0267ffff00000000000019909216919091179055565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916118d8918590611ebc908690614d8f565b3360009081526020819052604090205460ff168061257857506001546001600160a01b031633145b6125945760405162461bcd60e51b815260040161162e90614cfb565b601b805460ff909216620100000262ff000019909216919091179055565b3360009081526020819052604090205460ff16806125da57506001546001600160a01b031633145b6125f65760405162461bcd60e51b815260040161162e90614cfb565b60158054911515600160a01b0260ff60a01b19909216919091179055565b3360009081526020819052604090205460ff168061263c57506001546001600160a01b031633145b6126585760405162461bcd60e51b815260040161162e90614cfb565b602380546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3360009081526020819052604090205460ff16806126aa57506001546001600160a01b031633145b6126c65760405162461bcd60e51b815260040161162e90614cfb565b6126d26009600a614e31565b6126dc9083614edc565b91506126ea6009600a614e31565b6126f49082614edc565b600c9290925550600d55565b3360009081526020819052604090205460ff168061272857506001546001600160a01b031633145b6127445760405162461bcd60e51b815260040161162e90614cfb565b6000600f600a9054906101000a90046001600160a01b0316905081600b60008282546127709190614d8f565b90915550506001600160a01b0381166000908152600260205260408120805484929061279d908490614d8f565b90915550506040518281526001600160a01b0382169061dead90600080516020614f7d8339815191529060200160405180910390a35050565b3360009081526020819052604090205460ff16806127fe57506001546001600160a01b031633145b61281a5760405162461bcd60e51b815260040161162e90614cfb565b600030905081600b60008282546127709190614d8f565b6000806128406009600a614e31565b600c5461284d9190614dcc565b6128596009600a614e31565b600d546128669190614dcc565b915091509091565b3360009081526020819052604090205460ff168061289657506001546001600160a01b031633145b6128b25760405162461bcd60e51b815260040161162e90614cfb565b6023805461ff001916610100179055565b3360009081526020819052604090205460ff16806128eb57506001546001600160a01b031633145b6129075760405162461bcd60e51b815260040161162e90614cfb565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b3360009081526020819052604090205460ff168061295a57506001546001600160a01b031633145b6129765760405162461bcd60e51b815260040161162e90614cfb565b80600b60008282546129889190614efb565b9091555050600f54600160501b90046001600160a01b0316600090815260026020526040812080548392906129be908490614efb565b9091555050600f5460405182815261dead91600160501b90046001600160a01b031690600080516020614f7d833981519152906020016123ff565b600154600160a01b900460ff1615612a3f5760405162461bcd60e51b81526020600482015260096024820152681c99595b9d1c985b9d60ba1b604482015260640161162e565b6001805460ff60a01b1916600160a01b1790556040516370a0823160e01b815233600482015273382f0160c24f5c515a19f155bac14d479433a4079060009082906370a082319060240160206040518083038186803b158015612aa157600080fd5b505afa158015612ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad99190614b26565b905060008111612b235760405162461bcd60e51b81526020600482015260156024820152742737903a37b5b2b739903a37903a3930b739b332b960591b604482015260640161162e565b604051636eb1769f60e11b815233600482015230602482015281906001600160a01b0384169063dd62ed3e9060440160206040518083038186803b158015612b6a57600080fd5b505afa158015612b7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba29190614b26565b1115612bf05760405162461bcd60e51b815260206004820152601860248201527f416c726561647920656e6f75676820616c6c6f77616e63650000000000000000604482015260640161162e565b6001600160a01b03821663095ea7b330612c0b84600a614edc565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015612c5157600080fd5b505af1158015612c65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c899190614acc565b50506001805460ff60a01b1916905550565b6001600160a01b038116600090815260046020526040812054428111612cc45750600092915050565b612cce4282614efb565b9392505050565b3360009081526020819052604090205460ff1680612cfd57506001546001600160a01b031633145b612d195760405162461bcd60e51b815260040161162e90614cfb565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526020819052604090205460ff1680612d6357506001546001600160a01b031633145b612d7f5760405162461bcd60e51b815260040161162e90614cfb565b601f805460009182905560405163a9059cbb60e01b8152336004820181905260248201839052919290309063a9059cbb906044015b602060405180830381600087803b158015612dce57600080fd5b505af1158015612de2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e069190614acc565b905080612e475760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b604482015260640161162e565b505050565b3360009081526003602090815260408083206001600160a01b038616845290915281205482811015612eaf5760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b604482015260640161162e565b612ebe3385611ebc8685614efb565b5060019392505050565b3360009081526020819052604090205460ff1680612ef057506001546001600160a01b031633145b612f0c5760405162461bcd60e51b815260040161162e90614cfb565b601c805460009182905560115460405191926001600160a01b0390911691829084905b60006040518083038185875af1925050503d8060008114612f6c576040519150601f19603f3d011682016040523d82523d6000602084013e612f71565b606091505b5050905080612e475760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b604482015260640161162e565b60006118d83384846139be565b3360009081526020819052604090205460ff1680612fe957506001546001600160a01b031633145b6130055760405162461bcd60e51b815260040161162e90614cfb565b601b805460ff191660ff92909216919091179055565b3360009081526020819052604090205460ff168061304357506001546001600160a01b031633145b61305f5760405162461bcd60e51b815260040161162e90614cfb565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b3360009081526020819052604090205460ff16806130ab57506001546001600160a01b031633145b6130c75760405162461bcd60e51b815260040161162e90614cfb565b601d805460009182905560125460405191926001600160a01b039091169182908490612f2f565b601781815481106130fe57600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526020819052604090205460ff168061314057506001546001600160a01b031633145b61315c5760405162461bcd60e51b815260040161162e90614cfb565b600f546001600160a01b03828116600160501b9092041614156131ac5760405162461bcd60e51b815260206004820152600860248201526748657921204e6f2160c01b604482015260640161162e565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a082319060240160206040518083038186803b1580156131f057600080fd5b505afa158015613204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132289190614b26565b90506000811161327a5760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e63650000000000000000604482015260640161162e565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b1580156132c257600080fd5b505af11580156132d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132fa9190614acc565b50505050565b3360009081526020819052604090205460ff168061332857506001546001600160a01b031633145b6133445760405162461bcd60e51b815260040161162e90614cfb565b8060005b8181101561351e5785858281811061336257613362614f43565b9050602002013560026000306001600160a01b03166001600160a01b031681526020019081526020016000205410156133d05760405162461bcd60e51b815260206004820152601060248201526f4e6f7420656e6f7567682066756e647360801b604482015260640161162e565b8585828181106133e2576133e2614f43565b9050602002013560026000306001600160a01b03166001600160a01b03168152602001908152602001600020600082825461341d9190614efb565b90915550869050858281811061343557613435614f43565b905060200201356002600086868581811061345257613452614f43565b90506020020160208101906134679190614935565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546134969190614d8f565b9091555084905083828181106134ae576134ae614f43565b90506020020160208101906134c39190614935565b6001600160a01b031630600080516020614f7d8339815191528888858181106134ee576134ee614f43565b9050602002013560405161350491815260200190565b60405180910390a38061351681614f12565b915050613348565b505050505050565b3360009081526020819052604090205460ff168061354e57506001546001600160a01b031633145b61356a5760405162461bcd60e51b815260040161162e90614cfb565b6008805460ff1916911515919091179055565b3360009081526020819052604090205460ff16806135a557506001546001600160a01b031633145b6135c15760405162461bcd60e51b815260040161162e90614cfb565b6101f4600b546135d19190614dcc565b81101561360a5760405162461bcd60e51b8152602060048201526007602482015266546f6f206c6f7760c81b604482015260640161162e565b600955565b3360009081526020819052604090205460ff168061363757506001546001600160a01b031633145b6136535760405162461bcd60e51b815260040161162e90614cfb565b601b805460ff9092166101000261ff0019909216919091179055565b3360009081526020819052604090205460ff168061369757506001546001600160a01b031633145b6136b35760405162461bcd60e51b815260040161162e90614cfb565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b3360009081526020819052604090205460ff168061370657506001546001600160a01b031633145b6137225760405162461bcd60e51b815260040161162e90614cfb565b601e805460009182905560405163a9059cbb60e01b8152336004820181905260248201839052919290309063a9059cbb90604401612db4565b3360009081526020819052604090205460ff168061378357506001546001600160a01b031633145b61379f5760405162461bcd60e51b815260040161162e90614cfb565b602180549115156101000261ff0019909216919091179055565b3360009081526020819052604090205460ff16806137e157506001546001600160a01b031633145b6137fd5760405162461bcd60e51b815260040161162e90614cfb565b611d5561380e82633b9aca00614edc565b613db9565b3360009081526020819052604090205460ff168061383b57506001546001600160a01b031633145b6138575760405162461bcd60e51b815260040161162e90614cfb565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b3360009081526020819052604090205460ff16806138aa57506001546001600160a01b031633145b6138c65760405162461bcd60e51b815260040161162e90614cfb565b602255565b6001600160a01b0383166139155760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b604482015260640161162e565b6001600160a01b03821661395d5760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b604482015260640161162e565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316613a095760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b604482015260640161162e565b6001600160a01b038216613a525760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b604482015260640161162e565b60085460ff1615613ada576001600160a01b03831660009081526007602052604090205460ff16158015613a9f57506001600160a01b03821660009081526007602052604090205460ff16155b613ada5760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b604482015260640161162e565b6001600160a01b03831660009081526005602052604081205460ff1680613b1957506001600160a01b03831660009081526005602052604090205460ff165b80613b3c57506001600160a01b03841660009081526020819052604090205460ff165b80613b5f57506001600160a01b03831660009081526020819052604090205460ff165b905060006001600160a01b038516301480613b8257506001600160a01b03841630145b600f549091506000906001600160a01b03878116600160501b90920416148015613bc857506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d145b80613c0e5750600f546001600160a01b03868116600160501b90920416148015613c0e57506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b90508180613c195750805b80613c215750825b15613c3657613c31868686614065565b61351e565b602354610100900460ff16613d23576001546001600160a01b03878116911614801590613c7157506001546001600160a01b03868116911614155b15613d2357600f54600160481b900460ff1615613ccc57846001600160a01b0316866001600160a01b0316600080516020614f7d8339815191526000604051613cbc91815260200190565b60405180910390a3505050505050565b602354610100900460ff16613d235760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c6564000000000000000000604482015260640161162e565b600f546000906001600160a01b03888116600160501b909204161480613d6557506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b600f549091506000906001600160a01b03888116600160501b909204161480613daa57506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b9050611aea888888858561411e565b6021805460ff19166001179055601f54306000908152600260205260408120549091613de491614efb565b600f5490915060009060ff600160381b8204811691600160281b8104821691613e20916401000000008104821691630100000090910416614da7565b613e2a9190614da7565b613e349190614da7565b60ff1690506000600954905083811115613e5657600a5460ff1615613e565750825b80831080613e66575061ffff8216155b15613e7357505050614058565b600f5460009061ffff841690613e93906301000000900460ff1684614edc565b613e9d9190614dcc565b600f5490915060009061ffff851690613ec190640100000000900460ff1685614edc565b613ecb9190614dcc565b600f5490915060009061ffff861690613eee90600160301b900460ff1686614edc565b613ef89190614dcc565b600f5490915060009061ffff871690613f1b90600160281b900460ff1687614edc565b613f259190614dcc565b600f5490915060009061ffff881690613f4890600160381b900460ff1688614edc565b613f529190614dcc565b90506000613f61600287614dcc565b90506000613f6f8288614efb565b905060008385613f7f8985614d8f565b613f899190614d8f565b613f939190614d8f565b905047613f9f82614544565b6000613fab8247614efb565b9050600083613fba8684614edc565b613fc49190614dcc565b9050613fd086826146a4565b6000613fdc8447614efb565b9050613fe781614774565b6013546001600160a01b0316600090815260026020526040812080548c9290614011908490614d8f565b90915550506013546040518b81526001600160a01b03909116903090600080516020614f7d8339815191529060200160405180910390a35050505050505050505050505050505b506021805460ff19169055565b6001600160a01b038316600090815260026020526040902054818110156140c95760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b604482015260640161162e565b6140d38483614836565b6140dd838361487b565b826001600160a01b0316846001600160a01b0316600080516020614f7d8339815191528460405161411091815260200190565b60405180910390a350505050565b6001600160a01b038085166000908152600260205260408082205492881682529020548481101561418c5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b604482015260640161162e565b6002600d5461419b9190614dcc565b600955600083156142b1576001600160a01b03881660009081526006602052604090205460ff1661425c576001600160a01b038816600090815260046020526040902054421015806141f45750602154610100900460ff165b6142355760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b604482015260640161162e565b6022546142429042614d8f565b6001600160a01b0389166000908152600460205260409020555b600d548611156142a05760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b604482015260640161162e565b50600f54610100900460ff166143d4565b841561431057600c546142c48785614d8f565b11156142e25760405162461bcd60e51b815260040161162e90614cd1565b600e548611156143045760405162461bcd60e51b815260040161162e90614cd1565b50600f5460ff166143d4565b600c5461431d8785614d8f565b111561433b5760405162461bcd60e51b815260040161162e90614cd1565b6001600160a01b03881660009081526006602052604090205460ff166143c6576001600160a01b038816600090815260046020526040902054421015806143895750602154610100900460ff165b6143c65760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b604482015260640161162e565b50600f5462010000900460ff165b600f546001600160a01b03898116600160501b90920416148015906143fc575060235460ff16155b801561440b575060215460ff16155b156144195761441986613db9565b600f54600090614486908890849060ff600160381b8204811691600160301b8104821691600160281b82048116916144639163010000008204811691640100000000900416614da7565b61446d9190614da7565b6144779190614da7565b6144819190614da7565b61489f565b905060006144948289614efb565b90506144a08a89614836565b30600090815260026020526040812080548492906144bf908490614d8f565b909155506144cf9050898261487b565b60405182815230906001600160a01b038c1690600080516020614f7d8339815191529060200160405180910390a3886001600160a01b03168a6001600160a01b0316600080516020614f7d8339815191528360405161453091815260200190565b60405180910390a350505050505050505050565b60155461455c9030906001600160a01b0316836138cb565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061459157614591614f43565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156145e557600080fd5b505afa1580156145f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061461d9190614952565b8160018151811061463057614630614f43565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac94790614676908590600090869030904290600401614d1e565b600060405180830381600087803b15801561469057600080fd5b505af115801561351e573d6000803e3d6000fd5b80602060008282546146b69190614d8f565b90915550506015546146d39030906001600160a01b0316846138cb565b60155460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561473b57600080fd5b505af115801561474f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118079190614bad565b601b5460009060649061478a9060ff1684614edc565b6147949190614dcc565b601b549091506000906064906147b290610100900460ff1685614edc565b6147bc9190614dcc565b601b549091506000906064906147db9062010000900460ff1686614edc565b6147e59190614dcc565b905082601c60008282546147f99190614d8f565b9250508190555081601d60008282546148129190614d8f565b9250508190555080601f600082825461482b9190614d8f565b909155505050505050565b6001600160a01b03821660009081526002602052604081205461485a908390614efb565b6001600160a01b039093166000908152600260205260409020929092555050565b6001600160a01b03821660009081526002602052604081205461485a908390614d8f565b60006127108260ff168460ff16866148b79190614edc565b6148c19190614edc565b6148cb9190614dcc565b949350505050565b60008083601f8401126148e557600080fd5b50813567ffffffffffffffff8111156148fd57600080fd5b6020830191508360208260051b850101111561491857600080fd5b9250929050565b803560ff8116811461493057600080fd5b919050565b60006020828403121561494757600080fd5b8135612cce81614f59565b60006020828403121561496457600080fd5b8151612cce81614f59565b6000806040838503121561498257600080fd5b823561498d81614f59565b9150602083013561499d81614f59565b809150509250929050565b6000806000606084860312156149bd57600080fd5b83356149c881614f59565b925060208401356149d881614f59565b929592945050506040919091013590565b600080604083850312156149fc57600080fd5b8235614a0781614f59565b9150602083013561499d81614f6e565b60008060408385031215614a2a57600080fd5b8235614a3581614f59565b946020939093013593505050565b60008060008060408587031215614a5957600080fd5b843567ffffffffffffffff80821115614a7157600080fd5b614a7d888389016148d3565b90965094506020870135915080821115614a9657600080fd5b50614aa3878288016148d3565b95989497509550505050565b600060208284031215614ac157600080fd5b8135612cce81614f6e565b600060208284031215614ade57600080fd5b8151612cce81614f6e565b600060208284031215614afb57600080fd5b813561ffff81168114612cce57600080fd5b600060208284031215614b1f57600080fd5b5035919050565b600060208284031215614b3857600080fd5b5051919050565b600080600060408486031215614b5457600080fd5b83359250602084013567ffffffffffffffff811115614b7257600080fd5b614b7e868287016148d3565b9497909650939450505050565b60008060408385031215614b9e57600080fd5b50508035926020909101359150565b600080600060608486031215614bc257600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215614bed57600080fd5b612cce8261491f565b600080600080600080600060e0888a031215614c1157600080fd5b614c1a8861491f565b9650614c286020890161491f565b9550614c366040890161491f565b9450614c446060890161491f565b9350614c526080890161491f565b9250614c6060a0890161491f565b9150614c6e60c0890161491f565b905092959891949750929550565b600060208083528351808285015260005b81811015614ca957858101830151858201604001528201614c8d565b81811115614cbb576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015614d6e5784516001600160a01b031683529383019391830191600101614d49565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115614da257614da2614f2d565b500190565b600060ff821660ff84168060ff03821115614dc457614dc4614f2d565b019392505050565b600082614de957634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115614e29578160001904821115614e0f57614e0f614f2d565b80851615614e1c57918102915b93841c9390800290614df3565b509250929050565b6000612cce60ff841683600082614e4a575060016118dc565b81614e57575060006118dc565b8160018114614e6d5760028114614e7757614e93565b60019150506118dc565b60ff841115614e8857614e88614f2d565b50506001821b6118dc565b5060208310610133831016604e8410600b8410161715614eb6575081810a6118dc565b614ec08383614dee565b8060001904821115614ed457614ed4614f2d565b029392505050565b6000816000190483118215151615614ef657614ef6614f2d565b500290565b600082821015614f0d57614f0d614f2d565b500390565b6000600019821415614f2657614f26614f2d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611d5557600080fd5b8015158114611d5557600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e5b5802ff27592dd0da6942a9cb442743dd5592352d0dc272b620ed209c1052f64736f6c63430008070033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106106c45760003560e01c806370a0823111610376578063b9181611116101cf578063dc7eae6011610101578063ef089bba116100a5578063f88b0e4611610077578063f88b0e4614611569578063fa49e09a1461157f578063fb2729871461159f578063fe0174bd146115cc57005b8063ef089bba146114e9578063eff4b27614611509578063f099e12314611529578063f887ea401461154957005b8063e41a1d9f116100de578063e41a1d9f1461147e578063ea68c17414611494578063ead3caf4146114b4578063ed1255f2146114d457005b8063dc7eae60146113f8578063dd62ed3e14611418578063e2eb9ea01461145e57005b8063d18aaa6511610173578063d5f3948811610145578063d5f3948814611387578063d65af4f2146113a7578063d699340d14610786578063d6ef56f3146113c857005b8063d18aaa65146112eb578063d28d88521461130c578063d46f2f661461133f578063d47b82831461136757005b8063be8f8d07116101ac578063be8f8d07146106cd578063c0dda5a41461127c578063c884ef831461129c578063ca9ec199146112cc57005b8063b918161114611203578063bb730e961461123c578063bcba423b1461125c57005b806395d89b41116102a8578063a457c2d71161024c578063aea96aee1161021e578063aea96aee1461119e578063b09f1266146111be578063b41abeb7146111ee578063b4de400b14610a4f57005b8063a457c2d714611129578063a5cb08af14611149578063a9059cbb1461115e578063ae13eeaf1461117e57005b80639ec5a894116102855780639ec5a894146110ae5780639f767c91146110ce578063a20623ce146110e3578063a253c06e1461111357005b806395d89b4114611061578063987bb5a71461108e5780639a7469741461108e57005b806380848fed1161031a57806388f19574116102ec57806388f1957414610fd35780638b4c6c8d14610ff35780638f78d5f91461100857806392763f1d1461104157005b806380848fed14610f4a5780638117eb5014610f6a57806386d0ada814610f9a578063887c60fb14610fb457005b8063762bb28211610353578063762bb28214610ef35780637a4325f914610a2f5780637ae4d84814610f095780637b929c2714610f2a57005b806370a0823114610e9357806372b0c84414610ec957806372b86bde14610ede57005b80632e560f801161052857806346559de51161045a5780635243cf94116103fe57806358e55365116103d057806358e5536514610e1057806363ac734114610e265780636a8d049d14610e465780636ebcf60714610e6657005b80635243cf9414610d9a57806356ed189614610dbb57806357575f5c14610dda578063589210d914610dfa57005b80634ada218b116104375780634ada218b14610d2f5780634eca70f514610d4e5780634f7d773b14610d6e5780634f91e48c14610d8457005b806346559de514610cd857806348e907b714610cf8578063491f692c14610d0e57005b8063382e329a116104cc5780634089b1701161049e5780634089b17014610c1b57806342a1109514610c31578063430b1df814610c4b5780634582543e14610c6157005b8063382e329a14610ba45780633950935114610bc55780633cc39b7a14610be55780633d7754a214610bfb57005b806332424aa31161050557806332424aa314610b2657806332d0b56814610b3b57806334184e2614610b5b5780633478154b14610b8257005b80632e560f8014610ad1578063311a869714610af1578063313ce56714610b1257005b806317391e49116106015780631f8b845e116105a55780632c9a115e116105775780632c9a115e14610a4f5780632d0947bd14610a6f5780632d3e474a14610a8f5780632d88286314610aaf57005b80631f8b845e146109da57806323b872dd146109fa57806329eeed1814610a1a5780632bfe874214610a2f57005b80631a12227b116105de5780631a12227b146109705780631af903be146109855780631ce12d8e146109a55780631eb25d13146109c557005b806317391e491461091b57806318160ddd1461093b57806318ee55031461095057005b80630852a96d116106685780630a304a76116106455780630a304a76146108705780630fd99e1614610890578063104d221b146108c65780631637e715146108e657005b80630852a96d146107ff57806309218ee714610814578063095ea7b31461084057005b8063048e5f0a116106a1578063048e5f0a14610766578063058546e014610786578063058e7e18146107a657806306fdde03146107c657005b8063020711b3146106cd578063024c2ddd146106ed57806303fd2a451461073857005b366106cb57005b005b3480156106d957600080fd5b506106cb6106e8366004614935565b6115ea565b3480156106f957600080fd5b5061072561070836600461496f565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561074457600080fd5b5061074e61dead81565b6040516001600160a01b03909116815260200161072f565b34801561077257600080fd5b506106cb610781366004614b3f565b611659565b34801561079257600080fd5b506106cb6107a1366004614935565b61180e565b3480156107b257600080fd5b506106cb6107c1366004614aaf565b611874565b3480156107d257600080fd5b506040805180820190915260078152664b6c65654b616960c81b60208201525b60405161072f9190614c7c565b34801561080b57600080fd5b50602254610725565b34801561082057600080fd5b50601b5461082e9060ff1681565b60405160ff909116815260200161072f565b34801561084c57600080fd5b5061086061085b366004614a17565b6118cb565b604051901515815260200161072f565b34801561087c57600080fd5b506106cb61088b366004614bf6565b6118e2565b34801561089c57600080fd5b50600a546108b390640100000000900461ffff1681565b60405161ffff909116815260200161072f565b3480156108d257600080fd5b50601b5461082e9062010000900460ff1681565b3480156108f257600080fd5b50610906610901366004614935565b611af4565b6040805192835260208301919091520161072f565b34801561092757600080fd5b50600f5461082e9062010000900460ff1681565b34801561094757600080fd5b50600b54610725565b34801561095c57600080fd5b506106cb61096b366004614aaf565b611c50565b34801561097c57600080fd5b506106cb611cbc565b34801561099157600080fd5b506106cb6109a0366004614935565b611d58565b3480156109b157600080fd5b506106cb6109c0366004614aaf565b611dbd565b3480156109d157600080fd5b50610725611e14565b3480156109e657600080fd5b50600a546108b390610100900461ffff1681565b348015610a0657600080fd5b50610860610a153660046149a8565b611e35565b348015610a2657600080fd5b506106cb611ecc565b348015610a3b57600080fd5b506106cb610a4a3660046149e9565b61228b565b348015610a5b57600080fd5b506106cb610a6a366004614935565b6122fa565b348015610a7b57600080fd5b506106cb610a8a366004614b0d565b612360565b348015610a9b57600080fd5b5060115461074e906001600160a01b031681565b348015610abb57600080fd5b50600f5461082e90640100000000900460ff1681565b348015610add57600080fd5b506106cb610aec366004614935565b61240a565b348015610afd57600080fd5b50600a5461082e906301000000900460ff1681565b348015610b1e57600080fd5b50600961082e565b348015610b3257600080fd5b5061082e600981565b348015610b4757600080fd5b506106cb610b56366004614ae9565b612470565b348015610b6757600080fd5b50600f5461074e90600160501b90046001600160a01b031681565b348015610b8e57600080fd5b50600a546108b390600160301b900461ffff1681565b348015610bb057600080fd5b50600f5461082e906301000000900460ff1681565b348015610bd157600080fd5b50610860610be0366004614a17565b612519565b348015610bf157600080fd5b5061072560205481565b348015610c0757600080fd5b506106cb610c16366004614bdb565b612550565b348015610c2757600080fd5b50610725601a5481565b348015610c3d57600080fd5b50600f5461082e9060ff1681565b348015610c5757600080fd5b50610725601f5481565b348015610c6d57600080fd5b50600f546040805160ff600160301b840481168252600160281b8404811660208301526301000000840481169282019290925264010000000083048216606082015281831660808201526101008304821660a0820152620100009092041660c082015260e00161072f565b348015610ce457600080fd5b506106cb610cf3366004614aaf565b6125b2565b348015610d0457600080fd5b5061072560195481565b348015610d1a57600080fd5b5060155461086090600160a01b900460ff1681565b348015610d3b57600080fd5b5060235461086090610100900460ff1681565b348015610d5a57600080fd5b506106cb610d69366004614935565b612614565b348015610d7a57600080fd5b50610725601d5481565b348015610d9057600080fd5b50610725600d5481565b348015610da657600080fd5b50600f5461082e90600160301b900460ff1681565b348015610dc757600080fd5b50601b5461082e90610100900460ff1681565b348015610de657600080fd5b506106cb610df5366004614b8b565b612682565b348015610e0657600080fd5b50610725600e5481565b348015610e1c57600080fd5b50610725601c5481565b348015610e3257600080fd5b506106cb610e41366004614b0d565b612700565b348015610e5257600080fd5b506106cb610e61366004614b0d565b6127d6565b348015610e7257600080fd5b50610725610e81366004614935565b60026020526000908152604090205481565b348015610e9f57600080fd5b50610725610eae366004614935565b6001600160a01b031660009081526002602052604090205490565b348015610ed557600080fd5b50610906612831565b348015610eea57600080fd5b506106cb61286e565b348015610eff57600080fd5b50610725600c5481565b348015610f1557600080fd5b50600f5461082e90600160381b900460ff1681565b348015610f3657600080fd5b5060125461074e906001600160a01b031681565b348015610f5657600080fd5b506106cb610f653660046149e9565b6128c3565b348015610f7657600080fd5b50610860610f85366004614935565b60066020526000908152604090205460ff1681565b348015610fa657600080fd5b506023546108609060ff1681565b348015610fc057600080fd5b5060215461086090610100900460ff1681565b348015610fdf57600080fd5b506106cb610fee366004614b0d565b612932565b348015610fff57600080fd5b506106cb6129f9565b34801561101457600080fd5b50610860611023366004614935565b6001600160a01b031660009081526016602052604090205460ff1690565b34801561104d57600080fd5b5061072561105c366004614935565b612c9b565b34801561106d57600080fd5b506040805180820190915260048152634b4c454560e01b60208201526107f2565b34801561109a57600080fd5b506106cb6110a9366004614935565b612cd5565b3480156110ba57600080fd5b5060135461074e906001600160a01b031681565b3480156110da57600080fd5b506106cb612d3b565b3480156110ef57600080fd5b506108606110fe366004614935565b60076020526000908152604090205460ff1681565b34801561111f57600080fd5b50610725600b5481565b34801561113557600080fd5b50610860611144366004614a17565b612e4c565b34801561115557600080fd5b506106cb612ec8565b34801561116a57600080fd5b50610860611179366004614a17565b612fb4565b34801561118a57600080fd5b506106cb611199366004614bdb565b612fc1565b3480156111aa57600080fd5b506106cb6111b9366004614935565b61301b565b3480156111ca57600080fd5b506107f2604051806040016040528060048152602001634b4c454560e01b81525081565b3480156111fa57600080fd5b506106cb613083565b34801561120f57600080fd5b5061086061121e366004614935565b6001600160a01b031660009081526020819052604090205460ff1690565b34801561124857600080fd5b5061074e611257366004614b0d565b6130ee565b34801561126857600080fd5b506106cb611277366004614935565b613118565b34801561128857600080fd5b506106cb611297366004614a43565b613300565b3480156112a857600080fd5b506108606112b7366004614935565b60166020526000908152604090205460ff1681565b3480156112d857600080fd5b50600f5461082e90610100900460ff1681565b3480156112f757600080fd5b50600f5461082e90600160281b900460ff1681565b34801561131857600080fd5b506107f2604051806040016040528060078152602001664b6c65654b616960c81b81525081565b34801561134b57600080fd5b5061074e737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561137357600080fd5b506106cb611382366004614aaf565b613526565b34801561139357600080fd5b5060105461074e906001600160a01b031681565b3480156113b357600080fd5b50600f5461086090600160481b900460ff1681565b3480156113d457600080fd5b506108606113e3366004614935565b60056020526000908152604090205460ff1681565b34801561140457600080fd5b506106cb611413366004614b0d565b61357d565b34801561142457600080fd5b5061072561143336600461496f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561146a57600080fd5b506106cb611479366004614bdb565b61360f565b34801561148a57600080fd5b50610725601e5481565b3480156114a057600080fd5b5060145461074e906001600160a01b031681565b3480156114c057600080fd5b506106cb6114cf3660046149e9565b61366f565b3480156114e057600080fd5b506106cb6136de565b3480156114f557600080fd5b506106cb611504366004614aaf565b61375b565b34801561151557600080fd5b506106cb611524366004614b0d565b6137b9565b34801561153557600080fd5b506106cb6115443660046149e9565b613813565b34801561155557600080fd5b5060155461074e906001600160a01b031681565b34801561157557600080fd5b5061072560225481565b34801561158b57600080fd5b506106cb61159a366004614b0d565b613882565b3480156115ab57600080fd5b506107256115ba366004614935565b60046020526000908152604090205481565b3480156115d857600080fd5b506001546001600160a01b031661074e565b3360009081526020819052604090205460ff168061161257506001546001600160a01b031633145b6116375760405162461bcd60e51b815260040161162e90614cfb565b60405180910390fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526020819052604090205460ff168061168157506001546001600160a01b031633145b61169d5760405162461bcd60e51b815260040161162e90614cfb565b806116a88185614edc565b3060009081526002602052604090205410156116f95760405162461bcd60e51b815260206004820152601060248201526f4e6f7420656e6f7567682066756e647360801b604482015260640161162e565b6117038185614edc565b3060009081526002602052604081208054909190611722908490614efb565b90915550600090505b8181101561180757846002600086868581811061174a5761174a614f43565b905060200201602081019061175f9190614935565b6001600160a01b03166001600160a01b03168152602001908152602001600020600082825461178e9190614d8f565b9091555084905083828181106117a6576117a6614f43565b90506020020160208101906117bb9190614935565b6001600160a01b0316306001600160a01b0316600080516020614f7d833981519152876040516117ed91815260200190565b60405180910390a3806117ff81614f12565b91505061172b565b5050505050565b3360009081526020819052604090205460ff168061183657506001546001600160a01b031633145b6118525760405162461bcd60e51b815260040161162e90614cfb565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526020819052604090205460ff168061189c57506001546001600160a01b031633145b6118b85760405162461bcd60e51b815260040161162e90614cfb565b600a805460ff1916911515919091179055565b60006118d83384846138cb565b5060015b92915050565b3360009081526020819052604090205460ff168061190a57506001546001600160a01b031633145b6119265760405162461bcd60e51b815260040161162e90614cfb565b60008486611934898b614da7565b61193e9190614da7565b6119489190614da7565b90508060ff166064146119ac5760405162461bcd60e51b815260206004820152602660248201527f6275726e2b6c69712b6d61726b6574696e67206e6565647320746f20657175616044820152656c203130302560d01b606482015260840161162e565b87600f60066101000a81548160ff021916908360ff16021790555086600f60056101000a81548160ff021916908360ff16021790555085600f60036101000a81548160ff021916908360ff16021790555084600f60046101000a81548160ff021916908360ff16021790555083600f60006101000a81548160ff021916908360ff16021790555082600f60016101000a81548160ff021916908360ff16021790555081600f60026101000a81548160ff021916908360ff1602179055506030600f60009054906101000a900460ff1660ff16108015611a965750600f54603061010090910460ff16105b8015611aae5750600f5460306201000090910460ff16105b611aea5760405162461bcd60e51b815260206004820152600d60248201526c4e6f20686f6e657920706c732160981b604482015260640161162e565b5050505050505050565b33600090815260208190526040812054819060ff1680611b1e57506001546001600160a01b031633145b611b3a5760405162461bcd60e51b815260040161162e90614cfb565b604051636eb1769f60e11b81526001600160a01b038416600482015230602482015273382f0160c24f5c515a19f155bac14d479433a40790819063dd62ed3e9060440160206040518083038186803b158015611b9557600080fd5b505afa158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190614b26565b6040516370a0823160e01b81526001600160a01b0386811660048301528316906370a082319060240160206040518083038186803b158015611c0e57600080fd5b505afa158015611c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c469190614b26565b9250925050915091565b3360009081526020819052604090205460ff1680611c7857506001546001600160a01b031633145b611c945760405162461bcd60e51b815260040161162e90614cfb565b600f8054911515680100000000000000000268ff000000000000000019909216919091179055565b3360009081526020819052604090205460ff1680611ce457506001546001600160a01b031633145b611d005760405162461bcd60e51b815260040161162e90614cfb565b604051600090339047908381818185875af1925050503d8060008114611d42576040519150601f19603f3d011682016040523d82523d6000602084013e611d47565b606091505b5050905080611d5557600080fd5b50565b3360009081526020819052604090205460ff1680611d8057506001546001600160a01b031633145b611d9c5760405162461bcd60e51b815260040161162e90614cfb565b6001600160a01b03166000908152600760205260409020805460ff19169055565b3360009081526020819052604090205460ff1680611de557506001546001600160a01b031633145b611e015760405162461bcd60e51b815260040161162e90614cfb565b6023805460ff1916911515919091179055565b611e206009600a614e31565b611e329067016345785d8a0000614edc565b81565b6000611e428484846139be565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015611ead5760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b604482015260640161162e565b611ec18533611ebc8685614efb565b6138cb565b506001949350505050565b600154600160a01b900460ff1615611f125760405162461bcd60e51b81526020600482015260096024820152681c99595b9d1c985b9d60ba1b604482015260640161162e565b6001805460ff60a01b1916600160a01b9081179091556015540460ff16611f6c5760405162461bcd60e51b815260206004820152600e60248201526d10db185a5b481a5cc8195b99195960921b604482015260640161162e565b3360009081526016602052604090205460ff1615611f8957600080fd5b6040516370a0823160e01b815233600482015273382f0160c24f5c515a19f155bac14d479433a4079060009082906370a082319060240160206040518083038186803b158015611fd857600080fd5b505afa158015611fec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120109190614b26565b604051636eb1769f60e11b815233600482015230602482015290915081906001600160a01b0384169063dd62ed3e9060440160206040518083038186803b15801561205a57600080fd5b505afa15801561206e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120929190614b26565b116120d65760405162461bcd60e51b81526020600482015260146024820152734e6f7420656e6f75676820616c6c6f77616e636560601b604482015260640161162e565b3060009081526002602052604090205481111561212a5760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b604482015260640161162e565b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038316906323b872dd90606401602060405180830381600087803b15801561217857600080fd5b505af115801561218c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b09190614acc565b5030600090815260026020526040812080548392906121d0908490614efb565b909155505033600090815260026020526040812080548392906121f4908490614d8f565b909155505060405181815233903090600080516020614f7d8339815191529060200160405180910390a35050336000818152601660205260408120805460ff1916600190811790915560178054808301825592527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c1590910180546001600160a01b031916909217909155805460ff60a01b19169055565b3360009081526020819052604090205460ff16806122b357506001546001600160a01b031633145b6122cf5760405162461bcd60e51b815260040161162e90614cfb565b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b3360009081526020819052604090205460ff168061232257506001546001600160a01b031633145b61233e5760405162461bcd60e51b815260040161162e90614cfb565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526020819052604090205460ff168061238857506001546001600160a01b031633145b6123a45760405162461bcd60e51b815260040161162e90614cfb565b80600b60008282546123b69190614efb565b909155505030600090815260026020526040812080548392906123da908490614efb565b909155505060405181815261dead903090600080516020614f7d833981519152906020015b60405180910390a350565b3360009081526020819052604090205460ff168061243257506001546001600160a01b031633145b61244e5760405162461bcd60e51b815260040161162e90614cfb565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526020819052604090205460ff168061249857506001546001600160a01b031633145b6124b45760405162461bcd60e51b815260040161162e90614cfb565b60148161ffff1611156124f45760405162461bcd60e51b81526020600482015260086024820152670a8dede40d0d2ced60c31b604482015260640161162e565b600a805461ffff909216600160301b0267ffff00000000000019909216919091179055565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916118d8918590611ebc908690614d8f565b3360009081526020819052604090205460ff168061257857506001546001600160a01b031633145b6125945760405162461bcd60e51b815260040161162e90614cfb565b601b805460ff909216620100000262ff000019909216919091179055565b3360009081526020819052604090205460ff16806125da57506001546001600160a01b031633145b6125f65760405162461bcd60e51b815260040161162e90614cfb565b60158054911515600160a01b0260ff60a01b19909216919091179055565b3360009081526020819052604090205460ff168061263c57506001546001600160a01b031633145b6126585760405162461bcd60e51b815260040161162e90614cfb565b602380546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3360009081526020819052604090205460ff16806126aa57506001546001600160a01b031633145b6126c65760405162461bcd60e51b815260040161162e90614cfb565b6126d26009600a614e31565b6126dc9083614edc565b91506126ea6009600a614e31565b6126f49082614edc565b600c9290925550600d55565b3360009081526020819052604090205460ff168061272857506001546001600160a01b031633145b6127445760405162461bcd60e51b815260040161162e90614cfb565b6000600f600a9054906101000a90046001600160a01b0316905081600b60008282546127709190614d8f565b90915550506001600160a01b0381166000908152600260205260408120805484929061279d908490614d8f565b90915550506040518281526001600160a01b0382169061dead90600080516020614f7d8339815191529060200160405180910390a35050565b3360009081526020819052604090205460ff16806127fe57506001546001600160a01b031633145b61281a5760405162461bcd60e51b815260040161162e90614cfb565b600030905081600b60008282546127709190614d8f565b6000806128406009600a614e31565b600c5461284d9190614dcc565b6128596009600a614e31565b600d546128669190614dcc565b915091509091565b3360009081526020819052604090205460ff168061289657506001546001600160a01b031633145b6128b25760405162461bcd60e51b815260040161162e90614cfb565b6023805461ff001916610100179055565b3360009081526020819052604090205460ff16806128eb57506001546001600160a01b031633145b6129075760405162461bcd60e51b815260040161162e90614cfb565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b3360009081526020819052604090205460ff168061295a57506001546001600160a01b031633145b6129765760405162461bcd60e51b815260040161162e90614cfb565b80600b60008282546129889190614efb565b9091555050600f54600160501b90046001600160a01b0316600090815260026020526040812080548392906129be908490614efb565b9091555050600f5460405182815261dead91600160501b90046001600160a01b031690600080516020614f7d833981519152906020016123ff565b600154600160a01b900460ff1615612a3f5760405162461bcd60e51b81526020600482015260096024820152681c99595b9d1c985b9d60ba1b604482015260640161162e565b6001805460ff60a01b1916600160a01b1790556040516370a0823160e01b815233600482015273382f0160c24f5c515a19f155bac14d479433a4079060009082906370a082319060240160206040518083038186803b158015612aa157600080fd5b505afa158015612ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad99190614b26565b905060008111612b235760405162461bcd60e51b81526020600482015260156024820152742737903a37b5b2b739903a37903a3930b739b332b960591b604482015260640161162e565b604051636eb1769f60e11b815233600482015230602482015281906001600160a01b0384169063dd62ed3e9060440160206040518083038186803b158015612b6a57600080fd5b505afa158015612b7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba29190614b26565b1115612bf05760405162461bcd60e51b815260206004820152601860248201527f416c726561647920656e6f75676820616c6c6f77616e63650000000000000000604482015260640161162e565b6001600160a01b03821663095ea7b330612c0b84600a614edc565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015612c5157600080fd5b505af1158015612c65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c899190614acc565b50506001805460ff60a01b1916905550565b6001600160a01b038116600090815260046020526040812054428111612cc45750600092915050565b612cce4282614efb565b9392505050565b3360009081526020819052604090205460ff1680612cfd57506001546001600160a01b031633145b612d195760405162461bcd60e51b815260040161162e90614cfb565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526020819052604090205460ff1680612d6357506001546001600160a01b031633145b612d7f5760405162461bcd60e51b815260040161162e90614cfb565b601f805460009182905560405163a9059cbb60e01b8152336004820181905260248201839052919290309063a9059cbb906044015b602060405180830381600087803b158015612dce57600080fd5b505af1158015612de2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e069190614acc565b905080612e475760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b604482015260640161162e565b505050565b3360009081526003602090815260408083206001600160a01b038616845290915281205482811015612eaf5760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b604482015260640161162e565b612ebe3385611ebc8685614efb565b5060019392505050565b3360009081526020819052604090205460ff1680612ef057506001546001600160a01b031633145b612f0c5760405162461bcd60e51b815260040161162e90614cfb565b601c805460009182905560115460405191926001600160a01b0390911691829084905b60006040518083038185875af1925050503d8060008114612f6c576040519150601f19603f3d011682016040523d82523d6000602084013e612f71565b606091505b5050905080612e475760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b604482015260640161162e565b60006118d83384846139be565b3360009081526020819052604090205460ff1680612fe957506001546001600160a01b031633145b6130055760405162461bcd60e51b815260040161162e90614cfb565b601b805460ff191660ff92909216919091179055565b3360009081526020819052604090205460ff168061304357506001546001600160a01b031633145b61305f5760405162461bcd60e51b815260040161162e90614cfb565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b3360009081526020819052604090205460ff16806130ab57506001546001600160a01b031633145b6130c75760405162461bcd60e51b815260040161162e90614cfb565b601d805460009182905560125460405191926001600160a01b039091169182908490612f2f565b601781815481106130fe57600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526020819052604090205460ff168061314057506001546001600160a01b031633145b61315c5760405162461bcd60e51b815260040161162e90614cfb565b600f546001600160a01b03828116600160501b9092041614156131ac5760405162461bcd60e51b815260206004820152600860248201526748657921204e6f2160c01b604482015260640161162e565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a082319060240160206040518083038186803b1580156131f057600080fd5b505afa158015613204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132289190614b26565b90506000811161327a5760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e63650000000000000000604482015260640161162e565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b1580156132c257600080fd5b505af11580156132d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132fa9190614acc565b50505050565b3360009081526020819052604090205460ff168061332857506001546001600160a01b031633145b6133445760405162461bcd60e51b815260040161162e90614cfb565b8060005b8181101561351e5785858281811061336257613362614f43565b9050602002013560026000306001600160a01b03166001600160a01b031681526020019081526020016000205410156133d05760405162461bcd60e51b815260206004820152601060248201526f4e6f7420656e6f7567682066756e647360801b604482015260640161162e565b8585828181106133e2576133e2614f43565b9050602002013560026000306001600160a01b03166001600160a01b03168152602001908152602001600020600082825461341d9190614efb565b90915550869050858281811061343557613435614f43565b905060200201356002600086868581811061345257613452614f43565b90506020020160208101906134679190614935565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546134969190614d8f565b9091555084905083828181106134ae576134ae614f43565b90506020020160208101906134c39190614935565b6001600160a01b031630600080516020614f7d8339815191528888858181106134ee576134ee614f43565b9050602002013560405161350491815260200190565b60405180910390a38061351681614f12565b915050613348565b505050505050565b3360009081526020819052604090205460ff168061354e57506001546001600160a01b031633145b61356a5760405162461bcd60e51b815260040161162e90614cfb565b6008805460ff1916911515919091179055565b3360009081526020819052604090205460ff16806135a557506001546001600160a01b031633145b6135c15760405162461bcd60e51b815260040161162e90614cfb565b6101f4600b546135d19190614dcc565b81101561360a5760405162461bcd60e51b8152602060048201526007602482015266546f6f206c6f7760c81b604482015260640161162e565b600955565b3360009081526020819052604090205460ff168061363757506001546001600160a01b031633145b6136535760405162461bcd60e51b815260040161162e90614cfb565b601b805460ff9092166101000261ff0019909216919091179055565b3360009081526020819052604090205460ff168061369757506001546001600160a01b031633145b6136b35760405162461bcd60e51b815260040161162e90614cfb565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b3360009081526020819052604090205460ff168061370657506001546001600160a01b031633145b6137225760405162461bcd60e51b815260040161162e90614cfb565b601e805460009182905560405163a9059cbb60e01b8152336004820181905260248201839052919290309063a9059cbb90604401612db4565b3360009081526020819052604090205460ff168061378357506001546001600160a01b031633145b61379f5760405162461bcd60e51b815260040161162e90614cfb565b602180549115156101000261ff0019909216919091179055565b3360009081526020819052604090205460ff16806137e157506001546001600160a01b031633145b6137fd5760405162461bcd60e51b815260040161162e90614cfb565b611d5561380e82633b9aca00614edc565b613db9565b3360009081526020819052604090205460ff168061383b57506001546001600160a01b031633145b6138575760405162461bcd60e51b815260040161162e90614cfb565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b3360009081526020819052604090205460ff16806138aa57506001546001600160a01b031633145b6138c65760405162461bcd60e51b815260040161162e90614cfb565b602255565b6001600160a01b0383166139155760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b604482015260640161162e565b6001600160a01b03821661395d5760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b604482015260640161162e565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316613a095760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b604482015260640161162e565b6001600160a01b038216613a525760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b604482015260640161162e565b60085460ff1615613ada576001600160a01b03831660009081526007602052604090205460ff16158015613a9f57506001600160a01b03821660009081526007602052604090205460ff16155b613ada5760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b604482015260640161162e565b6001600160a01b03831660009081526005602052604081205460ff1680613b1957506001600160a01b03831660009081526005602052604090205460ff165b80613b3c57506001600160a01b03841660009081526020819052604090205460ff165b80613b5f57506001600160a01b03831660009081526020819052604090205460ff165b905060006001600160a01b038516301480613b8257506001600160a01b03841630145b600f549091506000906001600160a01b03878116600160501b90920416148015613bc857506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d145b80613c0e5750600f546001600160a01b03868116600160501b90920416148015613c0e57506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b90508180613c195750805b80613c215750825b15613c3657613c31868686614065565b61351e565b602354610100900460ff16613d23576001546001600160a01b03878116911614801590613c7157506001546001600160a01b03868116911614155b15613d2357600f54600160481b900460ff1615613ccc57846001600160a01b0316866001600160a01b0316600080516020614f7d8339815191526000604051613cbc91815260200190565b60405180910390a3505050505050565b602354610100900460ff16613d235760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c6564000000000000000000604482015260640161162e565b600f546000906001600160a01b03888116600160501b909204161480613d6557506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b600f549091506000906001600160a01b03888116600160501b909204161480613daa57506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b9050611aea888888858561411e565b6021805460ff19166001179055601f54306000908152600260205260408120549091613de491614efb565b600f5490915060009060ff600160381b8204811691600160281b8104821691613e20916401000000008104821691630100000090910416614da7565b613e2a9190614da7565b613e349190614da7565b60ff1690506000600954905083811115613e5657600a5460ff1615613e565750825b80831080613e66575061ffff8216155b15613e7357505050614058565b600f5460009061ffff841690613e93906301000000900460ff1684614edc565b613e9d9190614dcc565b600f5490915060009061ffff851690613ec190640100000000900460ff1685614edc565b613ecb9190614dcc565b600f5490915060009061ffff861690613eee90600160301b900460ff1686614edc565b613ef89190614dcc565b600f5490915060009061ffff871690613f1b90600160281b900460ff1687614edc565b613f259190614dcc565b600f5490915060009061ffff881690613f4890600160381b900460ff1688614edc565b613f529190614dcc565b90506000613f61600287614dcc565b90506000613f6f8288614efb565b905060008385613f7f8985614d8f565b613f899190614d8f565b613f939190614d8f565b905047613f9f82614544565b6000613fab8247614efb565b9050600083613fba8684614edc565b613fc49190614dcc565b9050613fd086826146a4565b6000613fdc8447614efb565b9050613fe781614774565b6013546001600160a01b0316600090815260026020526040812080548c9290614011908490614d8f565b90915550506013546040518b81526001600160a01b03909116903090600080516020614f7d8339815191529060200160405180910390a35050505050505050505050505050505b506021805460ff19169055565b6001600160a01b038316600090815260026020526040902054818110156140c95760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b604482015260640161162e565b6140d38483614836565b6140dd838361487b565b826001600160a01b0316846001600160a01b0316600080516020614f7d8339815191528460405161411091815260200190565b60405180910390a350505050565b6001600160a01b038085166000908152600260205260408082205492881682529020548481101561418c5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b604482015260640161162e565b6002600d5461419b9190614dcc565b600955600083156142b1576001600160a01b03881660009081526006602052604090205460ff1661425c576001600160a01b038816600090815260046020526040902054421015806141f45750602154610100900460ff165b6142355760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b604482015260640161162e565b6022546142429042614d8f565b6001600160a01b0389166000908152600460205260409020555b600d548611156142a05760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b604482015260640161162e565b50600f54610100900460ff166143d4565b841561431057600c546142c48785614d8f565b11156142e25760405162461bcd60e51b815260040161162e90614cd1565b600e548611156143045760405162461bcd60e51b815260040161162e90614cd1565b50600f5460ff166143d4565b600c5461431d8785614d8f565b111561433b5760405162461bcd60e51b815260040161162e90614cd1565b6001600160a01b03881660009081526006602052604090205460ff166143c6576001600160a01b038816600090815260046020526040902054421015806143895750602154610100900460ff165b6143c65760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b604482015260640161162e565b50600f5462010000900460ff165b600f546001600160a01b03898116600160501b90920416148015906143fc575060235460ff16155b801561440b575060215460ff16155b156144195761441986613db9565b600f54600090614486908890849060ff600160381b8204811691600160301b8104821691600160281b82048116916144639163010000008204811691640100000000900416614da7565b61446d9190614da7565b6144779190614da7565b6144819190614da7565b61489f565b905060006144948289614efb565b90506144a08a89614836565b30600090815260026020526040812080548492906144bf908490614d8f565b909155506144cf9050898261487b565b60405182815230906001600160a01b038c1690600080516020614f7d8339815191529060200160405180910390a3886001600160a01b03168a6001600160a01b0316600080516020614f7d8339815191528360405161453091815260200190565b60405180910390a350505050505050505050565b60155461455c9030906001600160a01b0316836138cb565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061459157614591614f43565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156145e557600080fd5b505afa1580156145f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061461d9190614952565b8160018151811061463057614630614f43565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac94790614676908590600090869030904290600401614d1e565b600060405180830381600087803b15801561469057600080fd5b505af115801561351e573d6000803e3d6000fd5b80602060008282546146b69190614d8f565b90915550506015546146d39030906001600160a01b0316846138cb565b60155460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561473b57600080fd5b505af115801561474f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118079190614bad565b601b5460009060649061478a9060ff1684614edc565b6147949190614dcc565b601b549091506000906064906147b290610100900460ff1685614edc565b6147bc9190614dcc565b601b549091506000906064906147db9062010000900460ff1686614edc565b6147e59190614dcc565b905082601c60008282546147f99190614d8f565b9250508190555081601d60008282546148129190614d8f565b9250508190555080601f600082825461482b9190614d8f565b909155505050505050565b6001600160a01b03821660009081526002602052604081205461485a908390614efb565b6001600160a01b039093166000908152600260205260409020929092555050565b6001600160a01b03821660009081526002602052604081205461485a908390614d8f565b60006127108260ff168460ff16866148b79190614edc565b6148c19190614edc565b6148cb9190614dcc565b949350505050565b60008083601f8401126148e557600080fd5b50813567ffffffffffffffff8111156148fd57600080fd5b6020830191508360208260051b850101111561491857600080fd5b9250929050565b803560ff8116811461493057600080fd5b919050565b60006020828403121561494757600080fd5b8135612cce81614f59565b60006020828403121561496457600080fd5b8151612cce81614f59565b6000806040838503121561498257600080fd5b823561498d81614f59565b9150602083013561499d81614f59565b809150509250929050565b6000806000606084860312156149bd57600080fd5b83356149c881614f59565b925060208401356149d881614f59565b929592945050506040919091013590565b600080604083850312156149fc57600080fd5b8235614a0781614f59565b9150602083013561499d81614f6e565b60008060408385031215614a2a57600080fd5b8235614a3581614f59565b946020939093013593505050565b60008060008060408587031215614a5957600080fd5b843567ffffffffffffffff80821115614a7157600080fd5b614a7d888389016148d3565b90965094506020870135915080821115614a9657600080fd5b50614aa3878288016148d3565b95989497509550505050565b600060208284031215614ac157600080fd5b8135612cce81614f6e565b600060208284031215614ade57600080fd5b8151612cce81614f6e565b600060208284031215614afb57600080fd5b813561ffff81168114612cce57600080fd5b600060208284031215614b1f57600080fd5b5035919050565b600060208284031215614b3857600080fd5b5051919050565b600080600060408486031215614b5457600080fd5b83359250602084013567ffffffffffffffff811115614b7257600080fd5b614b7e868287016148d3565b9497909650939450505050565b60008060408385031215614b9e57600080fd5b50508035926020909101359150565b600080600060608486031215614bc257600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215614bed57600080fd5b612cce8261491f565b600080600080600080600060e0888a031215614c1157600080fd5b614c1a8861491f565b9650614c286020890161491f565b9550614c366040890161491f565b9450614c446060890161491f565b9350614c526080890161491f565b9250614c6060a0890161491f565b9150614c6e60c0890161491f565b905092959891949750929550565b600060208083528351808285015260005b81811015614ca957858101830151858201604001528201614c8d565b81811115614cbb576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015614d6e5784516001600160a01b031683529383019391830191600101614d49565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115614da257614da2614f2d565b500190565b600060ff821660ff84168060ff03821115614dc457614dc4614f2d565b019392505050565b600082614de957634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115614e29578160001904821115614e0f57614e0f614f2d565b80851615614e1c57918102915b93841c9390800290614df3565b509250929050565b6000612cce60ff841683600082614e4a575060016118dc565b81614e57575060006118dc565b8160018114614e6d5760028114614e7757614e93565b60019150506118dc565b60ff841115614e8857614e88614f2d565b50506001821b6118dc565b5060208310610133831016604e8410600b8410161715614eb6575081810a6118dc565b614ec08383614dee565b8060001904821115614ed457614ed4614f2d565b029392505050565b6000816000190483118215151615614ef657614ef6614f2d565b500290565b600082821015614f0d57614f0d614f2d565b500390565b6000600019821415614f2657614f26614f2d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611d5557600080fd5b8015158114611d5557600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e5b5802ff27592dd0da6942a9cb442743dd5592352d0dc272b620ed209c1052f64736f6c63430008070033

Deployed Bytecode Sourcemap

13767:26085:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20444:97;;;;;;;;;;-1:-1:-1;20444:97:0;;;;;:::i;:::-;;:::i;13861:68::-;;;;;;;;;;-1:-1:-1;13861:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;8989:25:1;;;8977:2;8962:18;13861:68:0;;;;;;;;14776:73;;;;;;;;;;;;14807:42;14776:73;;;;;-1:-1:-1;;;;;6787:32:1;;;6769:51;;6757:2;6742:18;14776:73:0;6623:203:1;23279:459:0;;;;;;;;;;-1:-1:-1;23279:459:0;;;;;:::i;:::-;;:::i;20858:85::-;;;;;;;;;;-1:-1:-1;20858:85:0;;;;;:::i;:::-;;:::i;31777:102::-;;;;;;;;;;-1:-1:-1;31777:102:0;;;;;:::i;:::-;;:::i;37559:94::-;;;;;;;;;;-1:-1:-1;37640:5:0;;;;;;;;;;;;-1:-1:-1;;;37640:5:0;;;;37559:94;;;;;;;:::i;31561:108::-;;;;;;;;;;-1:-1:-1;31649:12:0;;31561:108;;27536:30;;;;;;;;;;-1:-1:-1;27536:30:0;;;;;;;;;;;21735:4:1;21723:17;;;21705:36;;21693:2;21678:18;27536:30:0;21563:184:1;38430:161:0;;;;;;;;;;-1:-1:-1;38430:161:0;;;;;:::i;:::-;;:::i;:::-;;;8576:14:1;;8569:22;8551:41;;8539:2;8524:18;38430:161:0;8411:187:1;34234:675:0;;;;;;;;;;-1:-1:-1;34234:675:0;;;;;:::i;:::-;;:::i;14588:35::-;;;;;;;;;;-1:-1:-1;14588:35:0;;;;;;;;;;;;;;19512:6:1;19500:19;;;19482:38;;19470:2;19455:18;14588:35:0;19338:188:1;27612:28:0;;;;;;;;;;-1:-1:-1;27612:28:0;;;;;;;;;;;22598:274;;;;;;;;;;-1:-1:-1;22598:274:0;;;;;:::i;:::-;;:::i;:::-;;;;20872:25:1;;;20928:2;20913:18;;20906:34;;;;20845:18;22598:274:0;20698:248:1;15127:25:0;;;;;;;;;;-1:-1:-1;15127:25:0;;;;;;;;;;;37863:108;;;;;;;;;;-1:-1:-1;37945:18:0;;37863:108;;36510:116;;;;;;;;;;-1:-1:-1;36510:116:0;;;;;:::i;:::-;;:::i;36886:151::-;;;;;;;;;;;;;:::i;36761:121::-;;;;;;;;;;-1:-1:-1;36761:121:0;;;;;:::i;:::-;;:::i;33883:111::-;;;;;;;;;;-1:-1:-1;33883:111:0;;;;;:::i;:::-;;:::i;14317:72::-;;;;;;;;;;;;;:::i;14492:33::-;;;;;;;;;;-1:-1:-1;14492:33:0;;;;;;;;;;;38904:388;;;;;;;;;;-1:-1:-1;38904:388:0;;;;;:::i;:::-;;:::i;21846:744::-;;;;;;;;;;;;;:::i;13193:106::-;;;;;;;;;;-1:-1:-1;13193:106:0;;;;;:::i;:::-;;:::i;20549:93::-;;;;;;;;;;-1:-1:-1;20549:93:0;;;;;:::i;:::-;;:::i;19762:200::-;;;;;;;;;;-1:-1:-1;19762:200:0;;;;;:::i;:::-;;:::i;15501:69::-;;;;;;;;;;-1:-1:-1;15501:69:0;;;;-1:-1:-1;;;;;15501:69:0;;;15192:26;;;;;;;;;;-1:-1:-1;15192:26:0;;;;;;;;;;;20755:91;;;;;;;;;;-1:-1:-1;20755:91:0;;;;;:::i;:::-;;:::i;14538:37::-;;;;;;;;;;-1:-1:-1;14538:37:0;;;;;;;;;;;37763:94;;;;;;;;;;-1:-1:-1;14309:1:0;37763:94;;14275:35;;;;;;;;;;;;14309:1;14275:35;;32062:159;;;;;;;;;;-1:-1:-1;32062:159:0;;;;;:::i;:::-;;:::i;15392:27::-;;;;;;;;;;-1:-1:-1;15392:27:0;;;;-1:-1:-1;;;15392:27:0;;-1:-1:-1;;;;;15392:27:0;;;14639:42;;;;;;;;;;-1:-1:-1;14639:42:0;;;;-1:-1:-1;;;14639:42:0;;;;;;15159:26;;;;;;;;;;-1:-1:-1;15159:26:0;;;;;;;;;;;39298:205;;;;;;;;;;-1:-1:-1;39298:205:0;;;;;:::i;:::-;;:::i;28186:25::-;;;;;;;;;;;;;;;;35149:101;;;;;;;;;;-1:-1:-1;35149:101:0;;;;;:::i;:::-;;:::i;27502:27::-;;;;;;;;;;;;;;;;15072:20;;;;;;;;;;-1:-1:-1;15072:20:0;;;;;;;;27760:25;;;;;;;;;;;;;;;;30965:297;;;;;;;;;;-1:-1:-1;31168:10:0;;30965:297;;;31168:10;-1:-1:-1;;;31168:10:0;;;;21266:25:1;;-1:-1:-1;;;31180:15:0;;;;21322:2:1;21307:18;;21300:34;31196:13:0;;;;;21350:18:1;;;21343:34;;;;31210:13:0;;;;;21408:2:1;21393:18;;21386:34;31224:7:0;;;21451:3:1;21436:19;;21429:35;31168:10:0;31232:8;;;;21495:3:1;21480:19;;21473:35;31241:12:0;;;;;21539:3:1;21524:19;;21517:35;21253:3;21238:19;30965:297:0;20951:607:1;21335:100:0;;;;;;;;;;-1:-1:-1;21335:100:0;;;;;:::i;:::-;;:::i;27457:38::-;;;;;;;;;;;;;;;;21220:24;;;;;;;;;;-1:-1:-1;21220:24:0;;;;-1:-1:-1;;;21220:24:0;;;;;;35674:26;;;;;;;;;;-1:-1:-1;35674:26:0;;;;;;;;;;;35847:149;;;;;;;;;;-1:-1:-1;35847:149:0;;;;;:::i;:::-;;:::i;27685:33::-;;;;;;;;;;;;;;;;14967:46;;;;;;;;;;;;;;;;15260:23;;;;;;;;;;-1:-1:-1;15260:23:0;;;;-1:-1:-1;;;15260:23:0;;;;;;27573:32;;;;;;;;;;-1:-1:-1;27573:32:0;;;;;;;;;;;35388:280;;;;;;;;;;-1:-1:-1;35388:280:0;;;;;:::i;:::-;;:::i;15020:45::-;;;;;;;;;;;;;;;;27647:31;;;;;;;;;;;;;;;;19521:233;;;;;;;;;;-1:-1:-1;19521:233:0;;;;;:::i;:::-;;:::i;19271:240::-;;;;;;;;;;-1:-1:-1;19271:240:0;;;;;:::i;:::-;;:::i;13809:45::-;;;;;;;;;;-1:-1:-1;13809:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;37977:121;;;;;;;;;;-1:-1:-1;37977:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;38072:18:0;38045:7;38072:18;;;:9;:18;;;;;;;37977:121;30804:155;;;;;;;;;;;;;:::i;35752:89::-;;;;;;;;;;;;;:::i;14911:49::-;;;;;;;;;;;;;;;;15290:22;;;;;;;;;;-1:-1:-1;15290:22:0;;;;-1:-1:-1;;;15290:22:0;;;;;;15577:71;;;;;;;;;;-1:-1:-1;15577:71:0;;;;-1:-1:-1;;;;;15577:71:0;;;32624:142;;;;;;;;;;-1:-1:-1;32624:142:0;;;;;:::i;:::-;;:::i;14041:54::-;;;;;;;;;;-1:-1:-1;14041:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;31744:28;;;;;;;;;;-1:-1:-1;31744:28:0;;;;;;;;31675;;;;;;;;;;-1:-1:-1;31675:28:0;;;;;;;;;;;19968:199;;;;;;;;;;-1:-1:-1;19968:199:0;;;;;:::i;:::-;;:::i;21443:395::-;;;;;;;;;;;;;:::i;22880:118::-;;;;;;;;;;-1:-1:-1;22880:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;22976:13:0;22945:11;22976:13;;;:7;:13;;;;;;;;;22880:118;31268:287;;;;;;;;;;-1:-1:-1;31268:287:0;;;;;:::i;:::-;;:::i;37659:98::-;;;;;;;;;;-1:-1:-1;37742:7:0;;;;;;;;;;;;-1:-1:-1;;;37742:7:0;;;;37659:98;;37266:99;;;;;;;;;;-1:-1:-1;37266:99:0;;;;;:::i;:::-;;:::i;15655:67::-;;;;;;;;;;-1:-1:-1;15655:67:0;;;;-1:-1:-1;;;;;15655:67:0;;;33609:266;;;;;;;;;;;;;:::i;14102:43::-;;;;;;;;;;-1:-1:-1;14102:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14856:48;;;;;;;;;;;;;;;;39509:340;;;;;;;;;;-1:-1:-1;39509:340:0;;;;;:::i;:::-;;:::i;32774:267::-;;;;;;;;;;;;;:::i;38104:167::-;;;;;;;;;;-1:-1:-1;38104:167:0;;;;;:::i;:::-;;:::i;34915:109::-;;;;;;;;;;-1:-1:-1;34915:109:0;;;;;:::i;:::-;;:::i;36632:123::-;;;;;;;;;;-1:-1:-1;36632:123:0;;;;;:::i;:::-;;:::i;14229:39::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14229:39:0;;;;;33047:275;;;;;;;;;;;;;:::i;13086:99::-;;;;;;;;;;-1:-1:-1;13086:99:0;;;;;:::i;:::-;-1:-1:-1;;;;;13164:13:0;13140:4;13164:13;;;;;;;;;;;;;;13086:99;21297:29;;;;;;;;;;-1:-1:-1;21297:29:0;;;;;:::i;:::-;;:::i;36002:369::-;;;;;;;;;;-1:-1:-1;36002:369:0;;;;;:::i;:::-;;:::i;23752:476::-;;;;;;;;;;-1:-1:-1;23752:476:0;;;;;:::i;:::-;;:::i;21251:39::-;;;;;;;;;;-1:-1:-1;21251:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15099:21;;;;;;;;;;-1:-1:-1;15099:21:0;;;;;;;;;;;15225:28;;;;;;;;;;-1:-1:-1;15225:28:0;;;;-1:-1:-1;;;15225:28:0;;;;;;14182:40;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14182:40:0;;;;;14688:81;;;;;;;;;;;;14727:42;14688:81;;36377:127;;;;;;;;;;-1:-1:-1;36377:127:0;;;;;:::i;:::-;;:::i;15426:68::-;;;;;;;;;;-1:-1:-1;15426:68:0;;;;-1:-1:-1;;;;;15426:68:0;;;15356:29;;;;;;;;;;-1:-1:-1;15356:29:0;;;;-1:-1:-1;;;15356:29:0;;;;;;13992:42;;;;;;;;;;-1:-1:-1;13992:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;31885:171;;;;;;;;;;-1:-1:-1;31885:171:0;;;;;:::i;:::-;;:::i;38277:147::-;;;;;;;;;;-1:-1:-1;38277:147:0;;;;;:::i;:::-;-1:-1:-1;;;;;38388:19:0;;;38361:7;38388:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;38277:147;35030:113;;;;;;;;;;-1:-1:-1;35030:113:0;;;;;:::i;:::-;;:::i;27725:28::-;;;;;;;;;;;;;;;;15729:65;;;;;;;;;;-1:-1:-1;15729:65:0;;;;-1:-1:-1;;;;;15729:65:0;;;32260:115;;;;;;;;;;-1:-1:-1;32260:115:0;;;;;:::i;:::-;;:::i;33328:273::-;;;;;;;;;;;;;:::i;34000:105::-;;;;;;;;;;-1:-1:-1;34000:105:0;;;;;:::i;:::-;;:::i;35256:126::-;;;;;;;;;;-1:-1:-1;35256:126:0;;;;;:::i;:::-;;:::i;32490:::-;;;;;;;;;;-1:-1:-1;32490:126:0;;;;;:::i;:::-;;:::i;15801:31::-;;;;;;;;;;-1:-1:-1;15801:31:0;;;;-1:-1:-1;;;;;15801:31:0;;;31710:27;;;;;;;;;;;;;;;;34111:117;;;;;;;;;;-1:-1:-1;34111:117:0;;;;;:::i;:::-;;:::i;13936:45::-;;;;;;;;;;-1:-1:-1;13936:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;37472:81;;;;;;;;;;-1:-1:-1;37540:5:0;;-1:-1:-1;;;;;37540:5:0;37472:81;;20444:97;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;;;;;;;;;20515:11:::1;:18:::0;;-1:-1:-1;;;;;;20515:18:0::1;-1:-1:-1::0;;;;;20515:18:0;;;::::1;::::0;;;::::1;::::0;;20444:97::o;23279:459::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;23396:9;23460:17:::1;23396:9:::0;23460:6;:17:::1;:::i;:::-;23449:4;23431:24;::::0;;;:9:::1;:24;::::0;;;;;:47:::1;;23423:76;;;::::0;-1:-1:-1;;;23423:76:0;;10864:2:1;23423:76:0::1;::::0;::::1;10846:21:1::0;10903:2;10883:18;;;10876:30;-1:-1:-1;;;10922:18:1;;;10915:46;10978:18;;23423:76:0::1;10662:340:1::0;23423:76:0::1;23539:17;23546:10:::0;23539:6;:17:::1;:::i;:::-;23528:4;23510:24;::::0;;;:9:::1;:24;::::0;;;;:47;;:24;;;:47:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;23573:6:0::1;::::0;-1:-1:-1;23568:163:0::1;23589:10;23585:1;:14;23568:163;;;23648:6;23621:9;:23;23631:9;;23641:1;23631:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23621:23:0::1;-1:-1:-1::0;;;;;23621:23:0::1;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;23698:9:0;;-1:-1:-1;23698:9:0;23708:1;23698:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23674:45:0::1;23691:4;-1:-1:-1::0;;;;;23674:45:0::1;-1:-1:-1::0;;;;;;;;;;;23712:6:0::1;23674:45;;;;8989:25:1::0;;8977:2;8962:18;;8835:185;23674:45:0::1;;;;;;;;23601:3:::0;::::1;::::0;::::1;:::i;:::-;;;;23568:163;;;;23364:374;23279:459:::0;;;:::o;20858:85::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;20923:5:::1;:12:::0;;-1:-1:-1;;;;;;20923:12:0::1;-1:-1:-1::0;;;;;20923:12:0;;;::::1;::::0;;;::::1;::::0;;20858:85::o;31777:102::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;31848:12:::1;:23:::0;;-1:-1:-1;;31848:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31777:102::o;38430:161::-;38507:4;38524:37;38533:10;38545:7;38554:6;38524:8;:37::i;:::-;-1:-1:-1;38579:4:0;38430:161;;;;;:::o;34234:675::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;34418:14:::1;34480::::0;34465;34433:30:::1;34447:16:::0;34433:11;:30:::1;:::i;:::-;:46;;;;:::i;:::-;:61;;;;:::i;:::-;34418:76;;34513:8;:13;;34523:3;34513:13;34505:64;;;::::0;-1:-1:-1;;;34505:64:0;;14308:2:1;34505:64:0::1;::::0;::::1;14290:21:1::0;14347:2;14327:18;;;14320:30;14386:34;14366:18;;;14359:62;-1:-1:-1;;;14437:18:1;;;14430:36;14483:19;;34505:64:0::1;14106:402:1::0;34505:64:0::1;34593:11;34580:10;;:24;;;;;;;;;;;;;;;;;;34633:16;34615:15;;:34;;;;;;;;;;;;;;;;;;34674:14;34660:13;;:28;;;;;;;;;;;;;;;;;;34713:14;34699:13;;:28;;;;;;;;;;;;;;;;;;34746:6;34738:7;;:14;;;;;;;;;;;;;;;;;;34772:7;34763:8;;:16;;;;;;;;;;;;;;;;;;34803:11;34790:12;;:24;;;;;;;;;;;;;;;;;;34843:2;34833:7;;;;;;;;;;;:12;;;:29;;;;-1:-1:-1::0;34849:8:0::1;::::0;34860:2:::1;34849:8;::::0;;::::1;;;:13;34833:29;:50;;;;-1:-1:-1::0;34866:12:0::1;::::0;34881:2:::1;34866:12:::0;;;::::1;;;:17;34833:50;34825:76;;;::::0;-1:-1:-1;;;34825:76:0;;12253:2:1;34825:76:0::1;::::0;::::1;12235:21:1::0;12292:2;12272:18;;;12265:30;-1:-1:-1;;;12311:18:1;;;12304:43;12364:18;;34825:76:0::1;12051:337:1::0;34825:76:0::1;34407:502;34234:675:::0;;;;;;;:::o;22598:274::-;13355:10;22677:12;13347:19;;;;;;;;;;;22677:12;;13347:19;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;22800:38:::1;::::0;-1:-1:-1;;;22800:38:0;;-1:-1:-1;;;;;7061:15:1;;22800:38:0::1;::::0;::::1;7043:34:1::0;22832:4:0::1;7093:18:1::0;;;7086:43;22738:42:0::1;::::0;;;22800:17:::1;::::0;6978:18:1;;22800:38:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22840:23;::::0;-1:-1:-1;;;22840:23:0;;-1:-1:-1;;;;;6787:32:1;;;22840:23:0::1;::::0;::::1;6769:51:1::0;22840:17:0;::::1;::::0;::::1;::::0;6742:18:1;;22840:23:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22792:72;;;;;22598:274:::0;;;:::o;36510:116::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;36592:17:::1;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;36592:26:0;;::::1;::::0;;;::::1;::::0;;36510:116::o;36886:151::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;36954:51:::1;::::0;36941:9:::1;::::0;36954:10:::1;::::0;36978:21:::1;::::0;36941:9;36954:51;36941:9;36954:51;36978:21;36954:10;:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36940:65;;;37024:4;37016:13;;;::::0;::::1;;36929:108;36886:151::o:0;36761:121::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36846:20:0::1;36869:5;36846:20:::0;;;:10:::1;:20;::::0;;;;:28;;-1:-1:-1;;36846:28:0::1;::::0;;36761:121::o;33883:111::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;33963:16:::1;:23:::0;;-1:-1:-1;;33963:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33883:111::o;14317:72::-;14376:13;14309:1;14376:2;:13;:::i;:::-;14356:33;;:17;:33;:::i;:::-;14317:72;:::o;38904:388::-;39004:4;39021:36;39031:6;39039:9;39050:6;39021:9;:36::i;:::-;-1:-1:-1;;;;;39095:19:0;;39068:24;39095:19;;;:11;:19;;;;;;;;39115:10;39095:31;;;;;;;;39145:26;;;;39137:59;;;;-1:-1:-1;;;39137:59:0;;12942:2:1;39137:59:0;;;12924:21:1;12981:2;12961:18;;;12954:30;-1:-1:-1;;;13000:18:1;;;12993:50;13060:18;;39137:59:0;12740:344:1;39137:59:0;39207:55;39216:6;39224:10;39236:25;39255:6;39236:16;:25;:::i;:::-;39207:8;:55::i;:::-;-1:-1:-1;39280:4:0;;38904:388;-1:-1:-1;;;;38904:388:0:o;21846:744::-;13600:6;;-1:-1:-1;;;13600:6:0;;;;13599:7;13591:29;;;;-1:-1:-1;;;13591:29:0;;13971:2:1;13591:29:0;;;13953:21:1;14010:1;13990:18;;;13983:29;-1:-1:-1;;;14028:18:1;;;14021:39;14077:18;;13591:29:0;13769:332:1;13591:29:0;13640:4;13631:13;;-1:-1:-1;;;;13631:13:0;-1:-1:-1;;;13631:13:0;;;;;;21912:12:::1;::::0;::::1;13631:13:::0;21912:12:::1;21904:39;;;::::0;-1:-1:-1;;;21904:39:0;;17828:2:1;21904:39:0::1;::::0;::::1;17810:21:1::0;17867:2;17847:18;;;17840:30;-1:-1:-1;;;17886:18:1;;;17879:44;17940:18;;21904:39:0::1;17626:338:1::0;21904:39:0::1;21971:10;21963:19;::::0;;;:7:::1;:19;::::0;;;;;::::1;;21962:20;21954:29;;;::::0;::::1;;22085;::::0;-1:-1:-1;;;22085:29:0;;22103:10:::1;22085:29;::::0;::::1;6769:51:1::0;22016:42:0::1;::::0;21994:13:::1;::::0;22016:42;;22085:17:::1;::::0;6742:18:1;;22085:29:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22133:44;::::0;-1:-1:-1;;;22133:44:0;;22151:10:::1;22133:44;::::0;::::1;7043:34:1::0;22171:4:0::1;7093:18:1::0;;;7086:43;22070:44:0;;-1:-1:-1;22070:44:0;;-1:-1:-1;;;;;22133:17:0;::::1;::::0;::::1;::::0;6978:18:1;;22133:44:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;22125:87;;;::::0;-1:-1:-1;;;22125:87:0;;16455:2:1;22125:87:0::1;::::0;::::1;16437:21:1::0;16494:2;16474:18;;;16467:30;-1:-1:-1;;;16513:18:1;;;16506:50;16573:18;;22125:87:0::1;16253:344:1::0;22125:87:0::1;22249:4;22231:24;::::0;;;:9:::1;:24;::::0;;;;;:35;-1:-1:-1;22231:35:0::1;22223:66;;;::::0;-1:-1:-1;;;22223:66:0;;12595:2:1;22223:66:0::1;::::0;::::1;12577:21:1::0;12634:2;12614:18;;;12607:30;-1:-1:-1;;;12653:18:1;;;12646:48;12711:18;;22223:66:0::1;12393:342:1::0;22223:66:0::1;22300:56;::::0;-1:-1:-1;;;22300:56:0;;22321:10:::1;22300:56;::::0;::::1;7380:34:1::0;22341:4:0::1;7430:18:1::0;;;7423:43;7482:18;;;7475:34;;;-1:-1:-1;;;;;22300:20:0;::::1;::::0;::::1;::::0;7315:18:1;;22300:56:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;22385:4:0::1;22367:24;::::0;;;:9:::1;:24;::::0;;;;:35;;22395:7;;22367:24;:35:::1;::::0;22395:7;;22367:35:::1;:::i;:::-;::::0;;;-1:-1:-1;;22423:10:0::1;22413:21;::::0;;;:9:::1;:21;::::0;;;;:32;;22438:7;;22413:21;:32:::1;::::0;22438:7;;22413:32:::1;:::i;:::-;::::0;;;-1:-1:-1;;22461:44:0::1;::::0;8989:25:1;;;22485:10:0::1;::::0;22478:4:::1;::::0;-1:-1:-1;;;;;;;;;;;22461:44:0;8977:2:1;8962:18;22461:44:0::1;;;;;;;-1:-1:-1::0;;22524:10:0::1;22516:19;::::0;;;:7:::1;:19;::::0;;;;:26;;-1:-1:-1;;22516:26:0::1;22538:4;22516:26:::0;;::::1;::::0;;;22553:12:::1;:29:::0;;;;::::1;::::0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;22553:29:0::1;::::0;;::::1;::::0;;;13667:14;;-1:-1:-1;;;;13667:14:0;;;21846:744::o;13193:106::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13270:13:0;;;::::1;:7;:13:::0;;;::::1;::::0;;;;;;:21;;-1:-1:-1;;13270:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13193:106::o;20549:93::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;20618:9:::1;:16:::0;;-1:-1:-1;;;;;;20618:16:0::1;-1:-1:-1::0;;;;;20618:16:0;;;::::1;::::0;;;::::1;::::0;;20549:93::o;19762:200::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;19850:6:::1;19828:18;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;19885:4:0::1;19867:24;::::0;;;:9:::1;:24;::::0;;;;:34;;19895:6;;19867:24;:34:::1;::::0;19895:6;;19867:34:::1;:::i;:::-;::::0;;;-1:-1:-1;;19917:37:0::1;::::0;8989:25:1;;;14807:42:0::1;::::0;19934:4:::1;::::0;-1:-1:-1;;;;;;;;;;;19917:37:0;8977:2:1;8962:18;19917:37:0::1;;;;;;;;19762:200:::0;:::o;20755:91::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;20823:8:::1;:15:::0;;-1:-1:-1;;;;;;20823:15:0::1;-1:-1:-1::0;;;;;20823:15:0;;;::::1;::::0;;;::::1;::::0;;20755:91::o;32062:159::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;32143:10:::1;32136:3;:17;;;;32128:38;;;::::0;-1:-1:-1;;;32128:38:0;;17492:2:1;32128:38:0::1;::::0;::::1;17474:21:1::0;17531:1;17511:18;;;17504:29;-1:-1:-1;;;17549:18:1;;;17542:38;17597:18;;32128:38:0::1;17290:331:1::0;32128:38:0::1;32192:15;:21:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;32192:21:0::1;-1:-1:-1::0;;32192:21:0;;::::1;::::0;;;::::1;::::0;;32062:159::o;39298:205::-;39406:10;39380:4;39427:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;39427:32:0;;;;;;;;;;39380:4;;39397:76;;39418:7;;39427:45;;39462:10;;39427:45;:::i;35149:101::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;35223:10:::1;:19:::0;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;35223:19:0;;::::1;::::0;;;::::1;::::0;;35149:101::o;21335:100::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;21407:12:::1;:20:::0;;;::::1;;-1:-1:-1::0;;;21407:20:0::1;-1:-1:-1::0;;;;21407:20:0;;::::1;::::0;;;::::1;::::0;;21335:100::o;35847:149::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;35944:22:::1;:44:::0;;-1:-1:-1;;;;;35944:44:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;35944:44:0;;::::1;::::0;;;::::1;::::0;;35847:149::o;35388:280::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;35521:13:::1;14309:1;35521:2;:13;:::i;:::-;35505:29;::::0;:15;:29:::1;:::i;:::-;35489:45:::0;-1:-1:-1;35571:13:0::1;14309:1;35571:2;:13;:::i;:::-;35558:26;::::0;:12;:26:::1;:::i;:::-;35595:12;:30:::0;;;;-1:-1:-1;35636:9:0::1;:24:::0;35388:280::o;19521:233::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;19588:16:::1;19607:12;;;;;;;;;-1:-1:-1::0;;;;;19607:12:0::1;19588:31;;19652:6;19630:18;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;19669:19:0;::::1;;::::0;;;:9:::1;:19;::::0;;;;:29;;19692:6;;19669:19;:29:::1;::::0;19692:6;;19669:29:::1;:::i;:::-;::::0;;;-1:-1:-1;;19714:32:0::1;::::0;8989:25:1;;;-1:-1:-1;;;;;19714:32:0;::::1;::::0;14807:42:::1;::::0;-1:-1:-1;;;;;;;;;;;19714:32:0;8977:2:1;8962:18;19714:32:0::1;;;;;;;19577:177;19521:233:::0;:::o;19271:240::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;19337:16:::1;19364:4;19337:32;;19409:6;19387:18;;:28;;;;;;;:::i;30804:155::-:0;30851:15;;30912:13;14309:1;30912:2;:13;:::i;:::-;30899:12;;:26;;;;:::i;:::-;30937:13;14309:1;30937:2;:13;:::i;:::-;30927:9;;:23;;;;:::i;:::-;30892:59;;;;30804:155;;:::o;35752:89::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;35812:14:::1;:21:::0;;-1:-1:-1;;35812:21:0::1;;;::::0;;35752:89::o;32624:142::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32720:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:38;;-1:-1:-1;;32720:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32624:142::o;19968:199::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;20057:6:::1;20035:18;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;20084:12:0::1;::::0;-1:-1:-1;;;20084:12:0;::::1;-1:-1:-1::0;;;;;20084:12:0::1;20074:23;::::0;;;:9:::1;:23;::::0;;;;:33;;20101:6;;20074:23;:33:::1;::::0;20101:6;;20074:33:::1;:::i;:::-;::::0;;;-1:-1:-1;;20132:12:0::1;::::0;20123:36:::1;::::0;8989:25:1;;;14807:42:0::1;::::0;-1:-1:-1;;;20132:12:0;::::1;-1:-1:-1::0;;;;;20132:12:0::1;::::0;-1:-1:-1;;;;;;;;;;;20123:36:0;8977:2:1;8962:18;20123:36:0::1;8835:185:1::0;21443:395:0;13600:6;;-1:-1:-1;;;13600:6:0;;;;13599:7;13591:29;;;;-1:-1:-1;;;13591:29:0;;13971:2:1;13591:29:0;;;13953:21:1;14010:1;13990:18;;;13983:29;-1:-1:-1;;;14028:18:1;;;14021:39;14077:18;;13591:29:0;13769:332:1;13591:29:0;13640:4;13631:13;;-1:-1:-1;;;;13631:13:0;-1:-1:-1;;;13631:13:0;;;21589:29:::1;::::0;-1:-1:-1;;;21589:29:0;;21607:10:::1;21589:29;::::0;::::1;6769:51:1::0;21520:42:0::1;::::0;-1:-1:-1;;21520:42:0;;21589:17:::1;::::0;6742:18:1;;21589:29:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21574:44;;21647:1;21637:7;:11;21629:45;;;::::0;-1:-1:-1;;;21629:45:0;;15764:2:1;21629:45:0::1;::::0;::::1;15746:21:1::0;15803:2;15783:18;;;15776:30;-1:-1:-1;;;15822:18:1;;;15815:51;15883:18;;21629:45:0::1;15562:345:1::0;21629:45:0::1;21693:44;::::0;-1:-1:-1;;;21693:44:0;;21711:10:::1;21693:44;::::0;::::1;7043:34:1::0;21731:4:0::1;7093:18:1::0;;;7086:43;21741:7:0;;-1:-1:-1;;;;;21693:17:0;::::1;::::0;::::1;::::0;6978:18:1;;21693:44:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:55;;21685:92;;;::::0;-1:-1:-1;;;21685:92:0;;11900:2:1;21685:92:0::1;::::0;::::1;11882:21:1::0;11939:2;11919:18;;;11912:30;11978:26;11958:18;;;11951:54;12022:18;;21685:92:0::1;11698:348:1::0;21685:92:0::1;-1:-1:-1::0;;;;;21788:15:0;::::1;;21812:4;21819:10;:7:::0;21827:2:::1;21819:10;:::i;:::-;21788:42;::::0;-1:-1:-1;;;;;;21788:42:0::1;::::0;;;;;;-1:-1:-1;;;;;7712:32:1;;;21788:42:0::1;::::0;::::1;7694:51:1::0;7761:18;;;7754:34;7667:18;;21788:42:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13667:6:0;:14;;-1:-1:-1;;;;13667:14:0;;;-1:-1:-1;21443:395:0:o;31268:287::-;-1:-1:-1;;;;;31396:25:0;;31360:7;31396:25;;;:9;:25;;;;;;31445:15;31435:25;;31432:74;;-1:-1:-1;31493:1:0;;31268:287;-1:-1:-1;;31268:287:0:o;31432:74::-;31523:24;31532:15;31523:8;:24;:::i;:::-;31516:31;31268:287;-1:-1:-1;;;31268:287:0:o;37266:99::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;37341:7:::1;:16:::0;;-1:-1:-1;;;;;;37341:16:0::1;-1:-1:-1::0;;;;;37341:16:0;;;::::1;::::0;;;::::1;::::0;;37266:99::o;33609:266::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;33686:10:::1;::::0;;33671:14:::1;33707:12:::0;;;;33780:45:::1;::::0;-1:-1:-1;;;33780:45:0;;33747:10:::1;33780:45;::::0;::::1;7694:51:1::0;;;7761:18;;;7754:34;;;33686:10:0;;33671:14;33794:4:::1;::::0;33780:29:::1;::::0;7667:18:1;;33780:45:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33768:57;;33844:4;33836:31;;;::::0;-1:-1:-1;;;33836:31:0;;18508:2:1;33836:31:0::1;::::0;::::1;18490:21:1::0;18547:2;18527:18;;;18520:30;-1:-1:-1;;;18566:18:1;;;18559:45;18621:18;;33836:31:0::1;18306:339:1::0;33836:31:0::1;33660:215;;;33609:266::o:0;39509:340::-;39652:10;39596:4;39640:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;39640:32:0;;;;;;;;;;39691:35;;;;39683:60;;;;-1:-1:-1;;;39683:60:0;;18852:2:1;39683:60:0;;;18834:21:1;18891:2;18871:18;;;18864:30;-1:-1:-1;;;18910:18:1;;;18903:42;18962:18;;39683:60:0;18650:336:1;39683:60:0;39754:65;39763:10;39775:7;39784:34;39803:15;39784:16;:34;:::i;39754:65::-;-1:-1:-1;39837:4:0;;39509:340;-1:-1:-1;;;39509:340:0:o;32774:267::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;32852:16:::1;::::0;;32837:14:::1;32879:18:::0;;;;32925:9:::1;::::0;32959:32:::1;::::0;32852:16;;-1:-1:-1;;;;;32925:9:0;;::::1;::::0;;;32852:16;;32959:32:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32945:46;;;33010:4;33002:31;;;::::0;-1:-1:-1;;;33002:31:0;;18508:2:1;33002:31:0::1;::::0;::::1;18490:21:1::0;18547:2;18527:18;;;18520:30;-1:-1:-1;;;18566:18:1;;;18559:45;18621:18;;33002:31:0::1;18306:339:1::0;38104:167:0;38184:4;38201:40;38211:10;38223:9;38234:6;38201:9;:40::i;34915:109::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;34993:14:::1;:23:::0;;-1:-1:-1;;34993:23:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;34915:109::o;36632:123::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36717:23:0::1;;::::0;;;:10:::1;:23;::::0;;;;:30;;-1:-1:-1;;36717:30:0::1;36743:4;36717:30;::::0;;36632:123::o;33047:275::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;33127:18:::1;::::0;;33112:14:::1;33156:20:::0;;;;33204:11:::1;::::0;33240:32:::1;::::0;33127:18;;-1:-1:-1;;;;;33204:11:0;;::::1;::::0;;;33127:18;;33240:32:::1;6413:205:1::0;21297:29:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21297:29:0;;-1:-1:-1;21297:29:0;:::o;36002:369::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;36099:12:::1;::::0;-1:-1:-1;;;;;36085:26:0;;::::1;-1:-1:-1::0;;;36099:12:0;;::::1;;36085:26;;36077:47;;;::::0;-1:-1:-1;;;36077:47:0;;13291:2:1;36077:47:0::1;::::0;::::1;13273:21:1::0;13330:1;13310:18;;;13303:29;-1:-1:-1;;;13348:18:1;;;13341:38;13396:18;;36077:47:0::1;13089:331:1::0;36077:47:0::1;36224:30;::::0;-1:-1:-1;;;36224:30:0;;36248:4:::1;36224:30;::::0;::::1;6769:51:1::0;36181:10:0;;36161:11:::1;::::0;-1:-1:-1;;;;;36224:15:0;::::1;::::0;::::1;::::0;6742:18:1;;36224:30:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36203:51;;36284:1;36273:10;:12;36265:49;;;::::0;-1:-1:-1;;;36265:49:0;;15411:2:1;36265:49:0::1;::::0;::::1;15393:21:1::0;15450:2;15430:18;;;15423:30;15489:26;15469:18;;;15462:54;15533:18;;36265:49:0::1;15209:348:1::0;36265:49:0::1;36325:38;::::0;-1:-1:-1;;;36325:38:0;;36340:10:::1;36325:38;::::0;::::1;7694:51:1::0;7761:18;;;7754:34;;;-1:-1:-1;;;;;36325:14:0;::::1;::::0;::::1;::::0;7667:18:1;;36325:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36066:305;;36002:369:::0;:::o;23752:476::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;23890:9;23869:18:::1;23918:303;23939:10;23935:1;:14;23918:303;;;24008:6;;24015:1;24008:9;;;;;;;:::i;:::-;;;;;;;23980;:24;23998:4;-1:-1:-1::0;;;;;23980:24:0::1;-1:-1:-1::0;;;;;23980:24:0::1;;;;;;;;;;;;;:37;;23972:66;;;::::0;-1:-1:-1;;;23972:66:0;;10864:2:1;23972:66:0::1;::::0;::::1;10846:21:1::0;10903:2;10883:18;;;10876:30;-1:-1:-1;;;10922:18:1;;;10915:46;10978:18;;23972:66:0::1;10662:340:1::0;23972:66:0::1;24081:6;;24088:1;24081:9;;;;;;;:::i;:::-;;;;;;;24053;:24;24071:4;-1:-1:-1::0;;;;;24053:24:0::1;-1:-1:-1::0;;;;;24053:24:0::1;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;24132:6:0;;-1:-1:-1;24132:6:0;24139:1;24132:9;;::::1;;;;;:::i;:::-;;;;;;;24105;:23;24115:9;;24125:1;24115:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24105:23:0::1;-1:-1:-1::0;;;;;24105:23:0::1;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;24185:9:0;;-1:-1:-1;24185:9:0;24195:1;24185:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24161:48:0::1;24178:4;-1:-1:-1::0;;;;;;;;;;;24199:6:0;;24206:1;24199:9;;::::1;;;;;:::i;:::-;;;;;;;24161:48;;;;8989:25:1::0;;8977:2;8962:18;;8835:185;24161:48:0::1;;;;;;;;23951:3:::0;::::1;::::0;::::1;:::i;:::-;;;;23918:303;;;;23858:370;23752:476:::0;;;;:::o;36377:127::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;36464:11:::1;:32:::0;;-1:-1:-1;;36464:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36377:127::o;31885:171::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;31986:3:::1;31967:18;;:22;;;;:::i;:::-;31959:3;:31;;31951:51;;;::::0;-1:-1:-1;;;31951:51:0;;10176:2:1;31951:51:0::1;::::0;::::1;10158:21:1::0;10215:1;10195:18;;;10188:29;-1:-1:-1;;;10233:18:1;;;10226:37;10280:18;;31951:51:0::1;9974:330:1::0;31951:51:0::1;32033:9;:15:::0;31885:171::o;35030:113::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;35110:16:::1;:25:::0;;::::1;::::0;;::::1;;;-1:-1:-1::0;;35110:25:0;;::::1;::::0;;;::::1;::::0;;35030:113::o;32260:115::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32343:16:0;;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:24;;-1:-1:-1;;32343:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32260:115::o;33328:273::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;33406:13:::1;::::0;;33391:14:::1;33430:15:::0;;;;33506:45:::1;::::0;-1:-1:-1;;;33506:45:0;;33473:10:::1;33506:45;::::0;::::1;7694:51:1::0;;;7761:18;;;7754:34;;;33406:13:0;;33391:14;33520:4:::1;::::0;33506:29:::1;::::0;7667:18:1;;33506:45:0::1;7520:274:1::0;34000:105:0;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;34072:16:::1;:25:::0;;;::::1;;;;-1:-1:-1::0;;34072:25:0;;::::1;::::0;;;::::1;::::0;;34000:105::o;35256:126::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;35342:32:::1;35361:12;:4:::0;35368:5:::1;35361:12;:::i;:::-;35342:18;:32::i;32490:126::-:0;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32582:18:0;;;::::1;;::::0;;;:9:::1;:18;::::0;;;;:26;;-1:-1:-1;;32582:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32490:126::o;34111:117::-;13355:10;13347:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;13382:5:0;;-1:-1:-1;;;;;13382:5:0;13370:10;:17;13347:40;13338:63;;;;-1:-1:-1;;;13338:63:0;;;;;;;:::i;:::-;34192:12:::1;:28:::0;34111:117::o;38597:301::-;-1:-1:-1;;;;;38691:20:0;;38683:50;;;;-1:-1:-1;;;38683:50:0;;11209:2:1;38683:50:0;;;11191:21:1;11248:2;11228:18;;;11221:30;-1:-1:-1;;;11267:18:1;;;11260:47;11324:18;;38683:50:0;11007:341:1;38683:50:0;-1:-1:-1;;;;;38752:21:0;;38744:49;;;;-1:-1:-1;;;38744:49:0;;14715:2:1;38744:49:0;;;14697:21:1;14754:2;14734:18;;;14727:30;-1:-1:-1;;;14773:18:1;;;14766:45;14828:18;;38744:49:0;14513:339:1;38744:49:0;-1:-1:-1;;;;;38804:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;38857:33;;8989:25:1;;;38857:33:0;;8962:18:1;38857:33:0;;;;;;;38597:301;;;:::o;17489:1505::-;-1:-1:-1;;;;;17585:20:0;;17577:51;;;;-1:-1:-1;;;17577:51:0;;9829:2:1;17577:51:0;;;9811:21:1;9868:2;9848:18;;;9841:30;-1:-1:-1;;;9887:18:1;;;9880:48;9945:18;;17577:51:0;9627:342:1;17577:51:0;-1:-1:-1;;;;;17647:23:0;;17639:52;;;;-1:-1:-1;;;17639:52:0;;11555:2:1;17639:52:0;;;11537:21:1;11594:2;11574:18;;;11567:30;-1:-1:-1;;;11613:18:1;;;11606:46;11669:18;;17639:52:0;11353:340:1;17639:52:0;17705:11;;;;17702:113;;;-1:-1:-1;;;;;17742:18:0;;;;;;:10;:18;;;;;;;;17741:19;:45;;;;-1:-1:-1;;;;;;17765:21:0;;;;;;:10;:21;;;;;;;;17764:22;17741:45;17733:70;;;;-1:-1:-1;;;17733:70:0;;16114:2:1;17733:70:0;;;16096:21:1;16153:2;16133:18;;;16126:30;-1:-1:-1;;;16172:18:1;;;16165:42;16224:18;;17733:70:0;15912:336:1;17733:70:0;-1:-1:-1;;;;;17844:17:0;;17825:15;17844:17;;;:9;:17;;;;;;;;;:41;;-1:-1:-1;;;;;;17865:20:0;;;;;;:9;:20;;;;;;;;17844:41;:60;;;-1:-1:-1;;;;;;17889:15:0;;:7;:15;;;;;;;;;;;;;17844:60;:82;;;-1:-1:-1;;;;;;17908:18:0;;:7;:18;;;;;;;;;;;;;17844:82;17825:102;-1:-1:-1;17938:23:0;-1:-1:-1;;;;;17963:21:0;;17979:4;17963:21;;:49;;-1:-1:-1;;;;;;17988:24:0;;18007:4;17988:24;17963:49;18063:12;;17938:75;;-1:-1:-1;18024:24:0;;-1:-1:-1;;;;;18053:22:0;;;-1:-1:-1;;;18063:12:0;;;;18053:22;:53;;;;-1:-1:-1;;;;;;18079:27:0;;14727:42;18079:27;18053:53;18052:123;;;-1:-1:-1;18134:12:0;;-1:-1:-1;;;;;18121:25:0;;;-1:-1:-1;;;18134:12:0;;;;18121:25;:53;;;;-1:-1:-1;;;;;;18150:24:0;;14727:42;18150:24;18121:53;18024:152;;18200:18;:41;;;;18222:19;18200:41;:55;;;;18245:10;18200:55;18197:790;;;18272:43;18289:6;18297:9;18308:6;18272:16;:43::i;:::-;18197:790;;;18361:14;;;;;;;18356:400;;18410:5;;-1:-1:-1;;;;;18400:15:0;;;18410:5;;18400:15;;;;:37;;-1:-1:-1;18432:5:0;;-1:-1:-1;;;;;18419:18:0;;;18432:5;;18419:18;;18400:37;18396:345;;;18466:10;;-1:-1:-1;;;18466:10:0;;;;18462:260;;;18526:9;-1:-1:-1;;;;;18510:28:0;18519:6;-1:-1:-1;;;;;18510:28:0;-1:-1:-1;;;;;;;;;;;18536:1:0;18510:28;;;;8989:25:1;;8977:2;8962:18;;8835:185;18510:28:0;;;;;;;;18565:7;;;17489:1505;;;:::o;18462:260::-;18657:14;;;;;;;18649:49;;;;-1:-1:-1;;;18649:49:0;;15059:2:1;18649:49:0;;;15041:21:1;15098:2;15078:18;;;15071:30;15137:25;15117:18;;;15110:53;15180:18;;18649:49:0;14857:347:1;18649:49:0;18789:12;;18770:10;;-1:-1:-1;;;;;18781:20:0;;;-1:-1:-1;;;18789:12:0;;;;18781:20;;:47;;-1:-1:-1;;;;;;18804:24:0;;14727:42;18804:24;18781:47;18866:12;;18770:58;;-1:-1:-1;18843:11:0;;-1:-1:-1;;;;;18855:23:0;;;-1:-1:-1;;;18866:12:0;;;;18855:23;;:53;;-1:-1:-1;;;;;;18881:27:0;;14727:42;18881:27;18855:53;18843:65;;18923:52;18938:6;18945:9;18955:6;18962:5;18968:6;18923:14;:52::i;28403:1544::-;28297:27;:34;;-1:-1:-1;;28297:34:0;28327:4;28297:34;;;28530:10:::1;::::0;28521:4:::1;28297:27:::0;28503:24;;;:9:::1;:24;::::0;;;;;28297:27;;28503:37:::1;::::0;::::1;:::i;:::-;28611:9;::::0;28479:61;;-1:-1:-1;28551:15:0::1;::::0;28611:9:::1;-1:-1:-1::0;;;28611:9:0;::::1;::::0;::::1;::::0;-1:-1:-1;;;28595:15:0;::::1;::::0;::::1;::::0;28567:27:::1;::::0;28581:13;;::::1;::::0;::::1;::::0;28567;;;::::1;;:27;:::i;:::-;:43;;;;:::i;:::-;:53;;;;:::i;:::-;28551:69;;;;28631:19;28651:9;;28631:29;;28688:8;28674:11;:22;28671:127;;;28716:12;::::0;::::1;;28713:74;;;-1:-1:-1::0;28763:8:0;28713:74:::1;28830:11;28814:15;:27;:40;;;-1:-1:-1::0;28843:11:0::1;::::0;::::1;::::0;28814:40:::1;28811:77;;;28870:7;;;;;28811:77;28937:13;::::0;28898:25:::1;::::0;28924:36:::1;::::0;::::1;::::0;28925:25:::1;::::0;28937:13;;::::1;;;28925:11:::0;:25:::1;:::i;:::-;28924:36;;;;:::i;:::-;29011:13;::::0;28898:62;;-1:-1:-1;28971:25:0::1;::::0;28998:36:::1;::::0;::::1;::::0;28999:25:::1;::::0;29011:13;;::::1;;;28999:11:::0;:25:::1;:::i;:::-;28998:36;;;;:::i;:::-;29082:10;::::0;28971:63;;-1:-1:-1;29045:22:0::1;::::0;29069:33:::1;::::0;::::1;::::0;29070:22:::1;::::0;-1:-1:-1;;;29082:10:0;::::1;;;29070:11:::0;:22:::1;:::i;:::-;29069:33;;;;:::i;:::-;29155:15;::::0;29045:57;;-1:-1:-1;29113:27:0::1;::::0;29142:38:::1;::::0;::::1;::::0;29143:27:::1;::::0;-1:-1:-1;;;29155:15:0;::::1;;;29143:11:::0;:27:::1;:::i;:::-;29142:38;;;;:::i;:::-;29228:9;::::0;29113:67;;-1:-1:-1;29191:21:0::1;::::0;29215:32:::1;::::0;::::1;::::0;29216:21:::1;::::0;-1:-1:-1;;;29228:9:0;::::1;;;29216:11:::0;:21:::1;:::i;:::-;29215:32;;;;:::i;:::-;29191:56:::0;-1:-1:-1;29258:16:0::1;29275:19;29293:1;29275:17:::0;:19:::1;:::i;:::-;29258:36:::0;-1:-1:-1;29305:19:0::1;29325:26;29258:36:::0;29325:17;:26:::1;:::i;:::-;29305:46:::0;-1:-1:-1;29362:17:0::1;29430:13:::0;29410:19;29380:29:::1;29392:17:::0;29305:46;29380:29:::1;:::i;:::-;:49;;;;:::i;:::-;:63;;;;:::i;:::-;29362:81:::0;-1:-1:-1;29482:21:0::1;29514:27;29362:81:::0;29514:16:::1;:27::i;:::-;29552:14;29568:41;29592:17:::0;29568:21:::1;:41;:::i;:::-;29552:58:::0;-1:-1:-1;29621:14:0::1;29659:9:::0;29639:18:::1;29646:11:::0;29552:58;29639:18:::1;:::i;:::-;29638:30;;;;:::i;:::-;29621:47;;29679:31;29693:8;29703:6;29679:13;:31::i;:::-;29721:20;29743:41;29767:17:::0;29743:21:::1;:41;:::i;:::-;29721:64;;29796:32;29815:12;29796:18;:32::i;:::-;29849:7;::::0;-1:-1:-1;;;;;29849:7:0::1;29839:18;::::0;;;:9:::1;:18;::::0;;;;:36;;29861:14;;29839:18;:36:::1;::::0;29861:14;;29839:36:::1;:::i;:::-;::::0;;;-1:-1:-1;;29915:7:0::1;::::0;29891:48:::1;::::0;8989:25:1;;;-1:-1:-1;;;;;29915:7:0;;::::1;::::0;29908:4:::1;::::0;-1:-1:-1;;;;;;;;;;;29891:48:0;8977:2:1;8962:18;29891:48:0::1;;;;;;;28468:1479;;;;;;;;;;;;;;;28342:1;-1:-1:-1::0;28354:27:0;:35;;-1:-1:-1;;28354:35:0;;;28403:1544::o;26312:347::-;-1:-1:-1;;;;;26431:17:0;;26407:21;26431:17;;;:9;:17;;;;;;26467:23;;;;26459:60;;;;-1:-1:-1;;;26459:60:0;;10511:2:1;26459:60:0;;;10493:21:1;10550:2;10530:18;;;10523:30;-1:-1:-1;;;10569:18:1;;;10562:54;10633:18;;26459:60:0;10309:348:1;26459:60:0;26533:27;26546:6;26553;26533:12;:27::i;:::-;26574:28;26584:9;26595:6;26574:9;:28::i;:::-;26634:9;-1:-1:-1;;;;;26618:33:0;26627:6;-1:-1:-1;;;;;26618:33:0;-1:-1:-1;;;;;;;;;;;26644:6:0;26618:33;;;;8989:25:1;;8977:2;8962:18;;8835:185;26618:33:0;;;;;;;;26396:263;26312:347;;;:::o;24505:1801::-;-1:-1:-1;;;;;24648:20:0;;;24621:24;24648:20;;;:9;:20;;;;;;;24703:17;;;;;;;;24739:23;;;;24731:60;;;;-1:-1:-1;;;24731:60:0;;10511:2:1;24731:60:0;;;10493:21:1;10550:2;10530:18;;;10523:30;-1:-1:-1;;;10569:18:1;;;10562:54;10633:18;;24731:60:0;10309:348:1;24731:60:0;24822:1;24812:9;;:11;;;;:::i;:::-;24800:9;:23;24834:9;24854:863;;;;-1:-1:-1;;;;;24883:29:0;;;;;;:21;:29;;;;;;;;24879:238;;-1:-1:-1;;;;;24951:17:0;;;;;;:9;:17;;;;;;24970:15;-1:-1:-1;24951:34:0;;:52;;-1:-1:-1;24987:16:0;;;;;;;24951:52;24943:82;;;;-1:-1:-1;;;24943:82:0;;19193:2:1;24943:82:0;;;19175:21:1;19232:2;19212:18;;;19205:30;-1:-1:-1;;;19251:18:1;;;19244:48;19309:18;;24943:82:0;18991:342:1;24943:82:0;25089:12;;25073:28;;:15;:28;:::i;:::-;-1:-1:-1;;;;;25055:17:0;;;;;;:9;:17;;;;;:46;24879:238;25155:9;;25147:6;:17;;25139:44;;;;-1:-1:-1;;;25139:44:0;;13627:2:1;25139:44:0;;;13609:21:1;13666:2;13646:18;;;13639:30;-1:-1:-1;;;13685:18:1;;;13678:45;13740:18;;25139:44:0;13425:339:1;25139:44:0;-1:-1:-1;25202:8:0;;;;;;;24854:863;;;25231:5;25228:489;;;25292:12;;25267:23;25284:6;25267:16;:23;:::i;:::-;:37;;25259:65;;;;-1:-1:-1;;;25259:65:0;;;;;;;:::i;:::-;25355:8;;25347:6;:16;;25339:45;;;;-1:-1:-1;;;25339:45:0;;;;;;;:::i;:::-;-1:-1:-1;25403:7:0;;;;25228:489;;;25483:12;;25458:23;25475:6;25458:16;:23;:::i;:::-;:37;;25450:65;;;;-1:-1:-1;;;25450:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25548:29:0;;;;;;:21;:29;;;;;;;;25544:130;;-1:-1:-1;;;;;25604:17:0;;;;;;:9;:17;;;;;;25623:15;-1:-1:-1;25604:34:0;;:52;;-1:-1:-1;25640:16:0;;;;;;;25604:52;25596:78;;;;-1:-1:-1;;;25596:78:0;;17149:2:1;25596:78:0;;;17131:21:1;17188:2;17168:18;;;17161:30;-1:-1:-1;;;17207:18:1;;;17200:44;17261:18;;25596:78:0;16947:338:1;25596:78:0;-1:-1:-1;25693:12:0;;;;;;;25228:489;25748:12;;-1:-1:-1;;;;;25740:20:0;;;-1:-1:-1;;;25748:12:0;;;;25740:20;;;;25739:43;;-1:-1:-1;25765:16:0;;;;25764:17;25739:43;:75;;;;-1:-1:-1;25786:27:0;;;;25785:28;25739:75;25736:119;;;25829:26;25848:6;25829:18;:26::i;:::-;25973:9;;25869:21;;25891:92;;25905:6;;25913:3;;25973:9;-1:-1:-1;;;25973:9:0;;;;;-1:-1:-1;;;25962:10:0;;;;;-1:-1:-1;;;25946:15:0;;;;;25918:27;;25932:13;;;;;;25918;;;;:27;:::i;:::-;:43;;;;:::i;:::-;:54;;;;:::i;:::-;:64;;;;:::i;:::-;25891:13;:92::i;:::-;25869:114;-1:-1:-1;25997:19:0;26017:22;25869:114;26017:6;:22;:::i;:::-;25997:42;;26053:27;26066:6;26073;26053:12;:27::i;:::-;26112:4;26094:24;;;;:9;:24;;;;;:41;;26122:13;;26094:24;:41;;26122:13;;26094:41;:::i;:::-;;;;-1:-1:-1;26149:33:0;;-1:-1:-1;26159:9:0;26170:11;26149:9;:33::i;:::-;26198:46;;8989:25:1;;;26223:4:0;;-1:-1:-1;;;;;26198:46:0;;;-1:-1:-1;;;;;;;;;;;26198:46:0;8977:2:1;8962:18;26198:46:0;;;;;;;26276:9;-1:-1:-1;;;;;26260:38:0;26269:6;-1:-1:-1;;;;;26260:38:0;-1:-1:-1;;;;;;;;;;;26286:11:0;26260:38;;;;8989:25:1;;8977:2;8962:18;;8835:185;26260:38:0;;;;;;;;24610:1696;;;;;24505:1801;;;;;:::o;29953:429::-;30046:6;;30014:48;;30031:4;;-1:-1:-1;;;;;30046:6:0;30055;30014:8;:48::i;:::-;30097:16;;;30111:1;30097:16;;;;;;;;30073:21;;30097:16;;;;;;;;;;-1:-1:-1;30097:16:0;30073:40;;30142:4;30124;30129:1;30124:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30124:23:0;;;:7;;;;;;;;;;:23;;;;30168:6;;:13;;;-1:-1:-1;;;30168:13:0;;;;:6;;;;;:11;;:13;;;;;30124:7;;30168:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30158:4;30163:1;30158:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30158:23:0;;;:7;;;;;;;;;:23;30192:6;;:182;;-1:-1:-1;;;30192:182:0;;:6;;;:57;;:182;;30264:6;;30192;;30301:4;;30328;;30348:15;;30192:182;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30388:381;30482:9;30470:10;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;30534:6:0;;30502:53;;30519:4;;-1:-1:-1;;;;;30534:6:0;30543:11;30502:8;:53::i;:::-;30566:6;;:195;;-1:-1:-1;;;30566:195:0;;30629:4;30566:195;;;8140:34:1;;;8190:18;;;8183:34;;;30566:6:0;8233:18:1;;;8226:34;;;8276:18;;;8269:34;8319:19;;;8312:44;30735:15:0;8372:19:1;;;8365:35;-1:-1:-1;;;;;30566:6:0;;;;:22;;30596:9;;8074:19:1;;30566:195:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;27792:388::-;27896:14;;27858:22;;27912:3;;27884:26;;27896:14;;27884:9;:26;:::i;:::-;27883:32;;;;:::i;:::-;27966:16;;27858:57;;-1:-1:-1;27926:24:0;;27984:3;;27954:28;;27966:16;;;;;27954:9;:28;:::i;:::-;27953:34;;;;:::i;:::-;28032:10;;27926:61;;-1:-1:-1;27998:18:0;;28044:3;;28020:22;;28032:10;;;;;28020:9;:22;:::i;:::-;28019:28;;;;:::i;:::-;27998:49;;28076:14;28058:16;;:32;;;;;;;:::i;:::-;;;;;;;;28121:16;28101:18;;:36;;;;;;;:::i;:::-;;;;;;;;28162:10;28148;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;27792:388:0:o;27257:158::-;-1:-1:-1;;;;;27349:15:0;;27331:17;27349:15;;;:9;:15;;;;;;:22;;27365:6;;27349:22;:::i;:::-;-1:-1:-1;;;;;27382:15:0;;;;;;;:9;:15;;;;;:25;;;;-1:-1:-1;;27257:158:0:o;27098:155::-;-1:-1:-1;;;;;27187:15:0;;27169:17;27187:15;;;:9;:15;;;;;;:22;;27203:6;;27187:22;:::i;26936:156::-;27026:7;27079:5;27065:10;27054:21;;27061:3;27054:10;;:6;:10;;;;:::i;:::-;:21;;;;:::i;:::-;27053:31;;;;:::i;:::-;27046:38;26936:156;-1:-1:-1;;;;26936:156:0:o;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:156::-;452:20;;512:4;501:16;;491:27;;481:55;;532:1;529;522:12;481:55;386:156;;;:::o;547:247::-;606:6;659:2;647:9;638:7;634:23;630:32;627:52;;;675:1;672;665:12;627:52;714:9;701:23;733:31;758:5;733:31;:::i;799:251::-;869:6;922:2;910:9;901:7;897:23;893:32;890:52;;;938:1;935;928:12;890:52;970:9;964:16;989:31;1014:5;989:31;:::i;1055:388::-;1123:6;1131;1184:2;1172:9;1163:7;1159:23;1155:32;1152:52;;;1200:1;1197;1190:12;1152:52;1239:9;1226:23;1258:31;1283:5;1258:31;:::i;:::-;1308:5;-1:-1:-1;1365:2:1;1350:18;;1337:32;1378:33;1337:32;1378:33;:::i;:::-;1430:7;1420:17;;;1055:388;;;;;:::o;1448:456::-;1525:6;1533;1541;1594:2;1582:9;1573:7;1569:23;1565:32;1562:52;;;1610:1;1607;1600:12;1562:52;1649:9;1636:23;1668:31;1693:5;1668:31;:::i;:::-;1718:5;-1:-1:-1;1775:2:1;1760:18;;1747:32;1788:33;1747:32;1788:33;:::i;:::-;1448:456;;1840:7;;-1:-1:-1;;;1894:2:1;1879:18;;;;1866:32;;1448:456::o;1909:382::-;1974:6;1982;2035:2;2023:9;2014:7;2010:23;2006:32;2003:52;;;2051:1;2048;2041:12;2003:52;2090:9;2077:23;2109:31;2134:5;2109:31;:::i;:::-;2159:5;-1:-1:-1;2216:2:1;2201:18;;2188:32;2229:30;2188:32;2229:30;:::i;2296:315::-;2364:6;2372;2425:2;2413:9;2404:7;2400:23;2396:32;2393:52;;;2441:1;2438;2431:12;2393:52;2480:9;2467:23;2499:31;2524:5;2499:31;:::i;:::-;2549:5;2601:2;2586:18;;;;2573:32;;-1:-1:-1;;;2296:315:1:o;2616:773::-;2738:6;2746;2754;2762;2815:2;2803:9;2794:7;2790:23;2786:32;2783:52;;;2831:1;2828;2821:12;2783:52;2871:9;2858:23;2900:18;2941:2;2933:6;2930:14;2927:34;;;2957:1;2954;2947:12;2927:34;2996:70;3058:7;3049:6;3038:9;3034:22;2996:70;:::i;:::-;3085:8;;-1:-1:-1;2970:96:1;-1:-1:-1;3173:2:1;3158:18;;3145:32;;-1:-1:-1;3189:16:1;;;3186:36;;;3218:1;3215;3208:12;3186:36;;3257:72;3321:7;3310:8;3299:9;3295:24;3257:72;:::i;:::-;2616:773;;;;-1:-1:-1;3348:8:1;-1:-1:-1;;;;2616:773:1:o;3394:241::-;3450:6;3503:2;3491:9;3482:7;3478:23;3474:32;3471:52;;;3519:1;3516;3509:12;3471:52;3558:9;3545:23;3577:28;3599:5;3577:28;:::i;3640:245::-;3707:6;3760:2;3748:9;3739:7;3735:23;3731:32;3728:52;;;3776:1;3773;3766:12;3728:52;3808:9;3802:16;3827:28;3849:5;3827:28;:::i;3890:272::-;3948:6;4001:2;3989:9;3980:7;3976:23;3972:32;3969:52;;;4017:1;4014;4007:12;3969:52;4056:9;4043:23;4106:6;4099:5;4095:18;4088:5;4085:29;4075:57;;4128:1;4125;4118:12;4167:180;4226:6;4279:2;4267:9;4258:7;4254:23;4250:32;4247:52;;;4295:1;4292;4285:12;4247:52;-1:-1:-1;4318:23:1;;4167:180;-1:-1:-1;4167:180:1:o;4352:184::-;4422:6;4475:2;4463:9;4454:7;4450:23;4446:32;4443:52;;;4491:1;4488;4481:12;4443:52;-1:-1:-1;4514:16:1;;4352:184;-1:-1:-1;4352:184:1:o;4541:505::-;4636:6;4644;4652;4705:2;4693:9;4684:7;4680:23;4676:32;4673:52;;;4721:1;4718;4711:12;4673:52;4757:9;4744:23;4734:33;;4818:2;4807:9;4803:18;4790:32;4845:18;4837:6;4834:30;4831:50;;;4877:1;4874;4867:12;4831:50;4916:70;4978:7;4969:6;4958:9;4954:22;4916:70;:::i;:::-;4541:505;;5005:8;;-1:-1:-1;4890:96:1;;-1:-1:-1;;;;4541:505:1:o;5051:248::-;5119:6;5127;5180:2;5168:9;5159:7;5155:23;5151:32;5148:52;;;5196:1;5193;5186:12;5148:52;-1:-1:-1;;5219:23:1;;;5289:2;5274:18;;;5261:32;;-1:-1:-1;5051:248:1:o;5304:306::-;5392:6;5400;5408;5461:2;5449:9;5440:7;5436:23;5432:32;5429:52;;;5477:1;5474;5467:12;5429:52;5506:9;5500:16;5490:26;;5556:2;5545:9;5541:18;5535:25;5525:35;;5600:2;5589:9;5585:18;5579:25;5569:35;;5304:306;;;;;:::o;5615:182::-;5672:6;5725:2;5713:9;5704:7;5700:23;5696:32;5693:52;;;5741:1;5738;5731:12;5693:52;5764:27;5781:9;5764:27;:::i;5802:606::-;5901:6;5909;5917;5925;5933;5941;5949;6002:3;5990:9;5981:7;5977:23;5973:33;5970:53;;;6019:1;6016;6009:12;5970:53;6042:27;6059:9;6042:27;:::i;:::-;6032:37;;6088:36;6120:2;6109:9;6105:18;6088:36;:::i;:::-;6078:46;;6143:36;6175:2;6164:9;6160:18;6143:36;:::i;:::-;6133:46;;6198:36;6230:2;6219:9;6215:18;6198:36;:::i;:::-;6188:46;;6253:37;6285:3;6274:9;6270:19;6253:37;:::i;:::-;6243:47;;6309:37;6341:3;6330:9;6326:19;6309:37;:::i;:::-;6299:47;;6365:37;6397:3;6386:9;6382:19;6365:37;:::i;:::-;6355:47;;5802:606;;;;;;;;;;:::o;9025:597::-;9137:4;9166:2;9195;9184:9;9177:21;9227:6;9221:13;9270:6;9265:2;9254:9;9250:18;9243:34;9295:1;9305:140;9319:6;9316:1;9313:13;9305:140;;;9414:14;;;9410:23;;9404:30;9380:17;;;9399:2;9376:26;9369:66;9334:10;;9305:140;;;9463:6;9460:1;9457:13;9454:91;;;9533:1;9528:2;9519:6;9508:9;9504:22;9500:31;9493:42;9454:91;-1:-1:-1;9606:2:1;9585:15;-1:-1:-1;;9581:29:1;9566:45;;;;9613:2;9562:54;;9025:597;-1:-1:-1;;;9025:597:1:o;16602:340::-;16804:2;16786:21;;;16843:2;16823:18;;;16816:30;-1:-1:-1;;;16877:2:1;16862:18;;16855:46;16933:2;16918:18;;16602:340::o;17969:332::-;18171:2;18153:21;;;18210:1;18190:18;;;18183:29;-1:-1:-1;;;18243:2:1;18228:18;;18221:39;18292:2;18277:18;;17969:332::o;19713:980::-;19975:4;20023:3;20012:9;20008:19;20054:6;20043:9;20036:25;20080:2;20118:6;20113:2;20102:9;20098:18;20091:34;20161:3;20156:2;20145:9;20141:18;20134:31;20185:6;20220;20214:13;20251:6;20243;20236:22;20289:3;20278:9;20274:19;20267:26;;20328:2;20320:6;20316:15;20302:29;;20349:1;20359:195;20373:6;20370:1;20367:13;20359:195;;;20438:13;;-1:-1:-1;;;;;20434:39:1;20422:52;;20529:15;;;;20494:12;;;;20470:1;20388:9;20359:195;;;-1:-1:-1;;;;;;;20610:32:1;;;;20605:2;20590:18;;20583:60;-1:-1:-1;;;20674:3:1;20659:19;20652:35;20571:3;19713:980;-1:-1:-1;;;19713:980:1:o;21752:128::-;21792:3;21823:1;21819:6;21816:1;21813:13;21810:39;;;21829:18;;:::i;:::-;-1:-1:-1;21865:9:1;;21752:128::o;21885:204::-;21923:3;21959:4;21956:1;21952:12;21991:4;21988:1;21984:12;22026:3;22020:4;22016:14;22011:3;22008:23;22005:49;;;22034:18;;:::i;:::-;22070:13;;21885:204;-1:-1:-1;;;21885:204:1:o;22094:217::-;22134:1;22160;22150:132;;22204:10;22199:3;22195:20;22192:1;22185:31;22239:4;22236:1;22229:15;22267:4;22264:1;22257:15;22150:132;-1:-1:-1;22296:9:1;;22094:217::o;22316:422::-;22405:1;22448:5;22405:1;22462:270;22483:7;22473:8;22470:21;22462:270;;;22542:4;22538:1;22534:6;22530:17;22524:4;22521:27;22518:53;;;22551:18;;:::i;:::-;22601:7;22591:8;22587:22;22584:55;;;22621:16;;;;22584:55;22700:22;;;;22660:15;;;;22462:270;;;22466:3;22316:422;;;;;:::o;22743:140::-;22801:5;22830:47;22871:4;22861:8;22857:19;22851:4;22937:5;22967:8;22957:80;;-1:-1:-1;23008:1:1;23022:5;;22957:80;23056:4;23046:76;;-1:-1:-1;23093:1:1;23107:5;;23046:76;23138:4;23156:1;23151:59;;;;23224:1;23219:130;;;;23131:218;;23151:59;23181:1;23172:10;;23195:5;;;23219:130;23256:3;23246:8;23243:17;23240:43;;;23263:18;;:::i;:::-;-1:-1:-1;;23319:1:1;23305:16;;23334:5;;23131:218;;23433:2;23423:8;23420:16;23414:3;23408:4;23405:13;23401:36;23395:2;23385:8;23382:16;23377:2;23371:4;23368:12;23364:35;23361:77;23358:159;;;-1:-1:-1;23470:19:1;;;23502:5;;23358:159;23549:34;23574:8;23568:4;23549:34;:::i;:::-;23619:6;23615:1;23611:6;23607:19;23598:7;23595:32;23592:58;;;23630:18;;:::i;:::-;23668:20;;22888:806;-1:-1:-1;;;22888:806:1:o;23699:168::-;23739:7;23805:1;23801;23797:6;23793:14;23790:1;23787:21;23782:1;23775:9;23768:17;23764:45;23761:71;;;23812:18;;:::i;:::-;-1:-1:-1;23852:9:1;;23699:168::o;23872:125::-;23912:4;23940:1;23937;23934:8;23931:34;;;23945:18;;:::i;:::-;-1:-1:-1;23982:9:1;;23872:125::o;24002:135::-;24041:3;-1:-1:-1;;24062:17:1;;24059:43;;;24082:18;;:::i;:::-;-1:-1:-1;24129:1:1;24118:13;;24002:135::o;24142:127::-;24203:10;24198:3;24194:20;24191:1;24184:31;24234:4;24231:1;24224:15;24258:4;24255:1;24248:15;24274:127;24335:10;24330:3;24326:20;24323:1;24316:31;24366:4;24363:1;24356:15;24390:4;24387:1;24380:15;24538:131;-1:-1:-1;;;;;24613:31:1;;24603:42;;24593:70;;24659:1;24656;24649:12;24674:118;24760:5;24753:13;24746:21;24739:5;24736:32;24726:60;;24782:1;24779;24772:12

Swarm Source

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