ETH Price: $2,643.14 (+1.70%)

Token

Trolls Token (TROLLS)
 

Overview

Max Total Supply

3,750,000,000 TROLLS

Holders

70

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,924,633.554203076 TROLLS

Value
$0.00
0xb8347263dbeda4e16120110e9590230ec095117e
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
TrollsToken

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-06
*/

/*  The internet is full of trolls, and in the realm of crypto, the population is especially concentrated. Come visit us at t.me/TrollsOfTelegram and see what type of troll you are and get rewarded with Ethereum. The Trolls token has a special wallet to reward those most active in telegram and/or the ones who exhibit the best troll repellent. 

    10% Tax with autoLP & a wallet to feed the trolls of telegram (the holders)
    The more active one is in Telegram & Twitter, the more ETH you will earn.

*/
/*  
    Trolls Token t.me/TelegramOfTrolls
    The internet is full of trolls, and in the realm of crypto,
    the population is especially concentrated.
    Come visit us at t.me/TrollsOfTelegram and see what type of troll you are
    and get rewarded with Ethereum from the special wallet for those most active
    in telegram and/or the ones who exhibit the best troll repellent. 

    🏵$TROLLS🏵 Launch Dec 6, 2021
    Total Supply: 3,750,000,000
    Max Txn: 3% (122,500,000)
    Max Wallet: 5%
    💎10% Tax featuring an Auto LP and the TROLL TAX to feed the trolls of Telegram. 
     
*/

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

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

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

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IUniswapV2Pair {
    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;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    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);
}

abstract contract IERC20Extented is IERC20 {
    function decimals() external view virtual returns (uint8);
    function name() external view virtual returns (string memory);
    function symbol() external view virtual returns (string memory);
}

contract TrollsToken is Context, IERC20, IERC20Extented, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Trolls Token";
    string private constant _symbol = "TROLLS";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant _tTotal = 3750 * 1e6 * 1e9; // 3,750,000,000
    uint256 public _priceImpact = 2;
    uint256 private _firstBlock;
    uint256 private _botBlocks;
    uint256 public _maxWalletAmount;
    uint256 private _maxSellAmountETH = 5 * 1e9; // 5 ETH
    uint256 private _minBuyETH = 0; //1 * 1e7; // 0.01 ETH
    uint256 private _minSellETH = 0; //1 * 1e7; // 0.01 ETH

    // fees
    uint256 public _liquidityFee = 40; // divided by 1000
    uint256 private _previousLiquidityFee = _liquidityFee;
    uint256 public _marketingFee = 40; // divided by 1000
    uint256 private _previousMarketingFee = _marketingFee;
    uint256 public _trollFee = 10; // divided by 1000
    uint256 private _previousTrollFee = _trollFee;
    uint256 private _cardsFee = 10; // divided by 1000
    uint256 private _previousCardsFee = _cardsFee;
    uint256 public _burnFee = 0; // divided by 1000
    uint256 private _previousBurnFee = _burnFee;
    
    uint256 private _marketingPercent = 750;
    uint256 private _trollPercent = 125;
    uint256 private _cardsPercent = 125;

    struct FeeBreakdown {
        uint256 tLiquidity;
        uint256 tMarketing;
        uint256 tTroll;
        uint256 tCards;
        uint256 tBurn;
        uint256 tAmount;
    }

    mapping(address => bool) private bots;
    address payable private _marketingAddress = payable(0xE85EC5e9b863eEcD8EfE12b77EcA2e2Cc8Fd1155);
    address payable private _trollAddress = payable(0x2008FbC22476fE372A8a449a832CEa4e3b517B1c);
    address payable private _cards;
    address payable constant private _burnAddress = payable(0x000000000000000000000000000000000000dEaD);
    address private presaleRouter;
    address private presaleAddress;
    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    uint256 private _maxTxAmount;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private presale = true;
    bool private pairSwapped = false;
    bool public _priceImpactSellLimitEnabled = false;
    bool public _ETHsellLimitEnabled = false;

    event EndedPresale(bool presale);
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    event PercentsUpdated(uint256 _marketingPercent, uint256 _trollPercent, uint256 _cardsPercent);
    event FeesUpdated(uint256 _marketingFee, uint256 _liquidityFee, uint256 _trollFee, uint256 _cardsFee, uint256 _burnFee);
    event PriceImpactUpdated(uint256 _priceImpact);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor(address cards) {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type(uint256).max);

        _maxTxAmount = _tTotal; // start off transaction limit at 100% of total supply
        _maxWalletAmount = _tTotal.div(1); // 100%
        _priceImpact = 100;
        cards = _cards;
        
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function airdrop(address[] memory airdropWallets, uint256[] memory amounts) external onlyOwner {
        require(airdropWallets.length < 200, "Can only airdrop 200 wallets per txn due to gas limits"); // allows for airdrop
        for(uint256 i = 0; i < airdropWallets.length; i++){
            address wallet = airdropWallets[i];
            uint256 amount = amounts[i];
            _transfer(msg.sender, wallet, amount);
        }
    }

    function name() override external pure returns (string memory) {
        return _name;
    }

    function symbol() override external pure returns (string memory) {
        return _symbol;
    }

    function decimals() override external pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() external pure override returns (uint256) {
        return _tTotal;
    }

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

    function isBot(address account) public view returns (bool) {
        return bots[account];
    }
    
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(_msgSender(), 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(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,"ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function removeAllFee() private {
        if (_marketingFee == 0 && _liquidityFee == 0 && _trollFee == 0 && _cardsFee == 0 && _burnFee == 0) return;
        _previousMarketingFee = _marketingFee;
        _previousLiquidityFee = _liquidityFee;
        _previousTrollFee = _trollFee;
        _previousCardsFee = _cardsFee;
        _previousBurnFee = _burnFee;
        
        _marketingFee = 0;
        _liquidityFee = 0;
        _trollFee = 0;
        _cardsFee = 0;
        _burnFee = 0;
    }

    function setBotFee() private {
        _previousMarketingFee = _marketingFee;
        _previousLiquidityFee = _liquidityFee;
        _previousTrollFee = _trollFee;
        _previousCardsFee = _cardsFee;
        _previousBurnFee = _burnFee;
        
        _marketingFee = 300;
        _liquidityFee = 300;
        _trollFee = 18;
        _cardsFee = 0;
        _burnFee = 0;
    }
    
    function restoreAllFee() private {
        _marketingFee = _previousMarketingFee;
        _liquidityFee = _previousLiquidityFee;
        _trollFee = _previousTrollFee;
        _cardsFee = _previousCardsFee;
        _burnFee = _previousBurnFee;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    // calculate price based on pair reserves
    function getTokenPriceETH(uint256 amount) external view returns(uint256) {
        IERC20Extented token0 = IERC20Extented(IUniswapV2Pair(uniswapV2Pair).token0());//Meliodas
        IERC20Extented token1 = IERC20Extented(IUniswapV2Pair(uniswapV2Pair).token1());//eth
        
        require(token0.decimals() != 0, "ERR: decimals cannot be zero");
        
        (uint112 Res0, uint112 Res1,) = IUniswapV2Pair(uniswapV2Pair).getReserves();
        if(pairSwapped) {
            token0 = IERC20Extented(IUniswapV2Pair(uniswapV2Pair).token1());//Meliodas
            token1 = IERC20Extented(IUniswapV2Pair(uniswapV2Pair).token0());//eth
            (Res1, Res0,) = IUniswapV2Pair(uniswapV2Pair).getReserves();
        }

        uint res1 = Res1*(10**token0.decimals());
        return((amount*res1)/(Res0*(10**token0.decimals()))); // return amount of token1 needed to buy token0
    }
    
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        bool takeFee = true;

        if (from != owner() && to != owner() && !presale && from != address(this) && to != address(this)) {
            require(tradingOpen);
            if (from != presaleRouter && from != presaleAddress) {
                require(amount <= _maxTxAmount);
            }
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {//buys

                if (block.timestamp <= _firstBlock.add(_botBlocks) && from != presaleRouter && from != presaleAddress) {
                    bots[to] = true;
                }
                
                uint256 ethAmount = this.getTokenPriceETH(amount);
                
                require(ethAmount >= _minBuyETH, "you must buy at least min ETH worth of token");
                require(balanceOf(to).add(amount) <= _maxWalletAmount, "wallet balance after transfer must be less than max wallet amount");
            }
            
            if (!inSwap && from != uniswapV2Pair) { //sells, transfers
                require(!bots[from] && !bots[to]);
                
                uint256 ethAmount = this.getTokenPriceETH(amount);
                
                require(ethAmount >= _minSellETH, "you must sell at least the min ETH worth of token");

                if (_ETHsellLimitEnabled) {
                    
                    require(ethAmount <= _maxSellAmountETH, 'you cannot sell more than the max ETH amount per transaction');

                }
                
                else if (_priceImpactSellLimitEnabled) {
                    
                    require(amount <= balanceOf(uniswapV2Pair).mul(_priceImpact).div(100)); // price impact limit

                }
                
                if(to != uniswapV2Pair) {
                    
                    require(balanceOf(to).add(amount) <= _maxWalletAmount, "wallet balance after transfer must be less than max wallet amount");

                }

                uint256 contractTokenBalance = balanceOf(address(this));

                if (contractTokenBalance > 0) {

                    swapAndLiquify(contractTokenBalance);
                
                }
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                    
            }
        }

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to] || presale ) {
            takeFee = false;
        }

        else if (bots[from] || bots[to]) {
            setBotFee();
            takeFee = true;
        }

        if (presale) {
            require(from == owner() || from == presaleRouter || from == presaleAddress);
        }
        
        _tokenTransfer(from, to, amount, takeFee);
        restoreAllFee();
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
              address(this),
              tokenAmount,
              0, // slippage is unavoidable
              0, // slippage is unavoidable
              owner(),
              block.timestamp
          );
    }
  
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 autoLPamount = _liquidityFee.mul(contractTokenBalance).div(_marketingFee.add(_trollFee).add(_cardsFee).add(_liquidityFee));

        // split the contract balance into halves
        uint256 half =  autoLPamount.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(otherHalf); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = ((address(this).balance.sub(initialBalance)).mul(half)).div(otherHalf);

        
        addLiquidity(half, newBalance);
    }

    function sendETHToFee(uint256 amount) private {
        _trollAddress.transfer(amount.mul(_trollPercent).div(1000));
        _cards.transfer(amount.mul(_cardsPercent).div(1000));
        _marketingAddress.transfer(amount.mul(_marketingPercent).div(1000));
    }

    function openTrading(uint256 botBlocks) private {
        _firstBlock = block.timestamp;
        _botBlocks = botBlocks;
        tradingOpen = true;
    }

    function manualSwap() external onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance > 0) {
            swapTokensForEth(contractBalance);
        }
    }

    function manualSend() external onlyOwner() {
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0) {
            sendETHToFee(contractETHBalance);
        }
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if (!takeFee) { 
                removeAllFee();
        }
        _transferStandard(sender, recipient, amount);
        restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 amount) private {
        FeeBreakdown memory fees;
        fees.tMarketing = amount.mul(_marketingFee).div(1000);
        fees.tLiquidity = amount.mul(_liquidityFee).div(1000);
        fees.tTroll = amount.mul(_trollFee).div(1000);
        fees.tCards = amount.mul(_cardsFee).div(1000);
        fees.tBurn = amount.mul(_burnFee).div(1000);
        
        fees.tAmount = amount.sub(fees.tMarketing).sub(fees.tLiquidity).sub(fees.tTroll).sub(fees.tCards).sub(fees.tBurn);
        
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(fees.tAmount);
        _balances[address(this)] = _balances[address(this)].add(fees.tMarketing.add(fees.tLiquidity).add(fees.tTroll).add(fees.tCards));
        _balances[_burnAddress] = _balances[_burnAddress].add(fees.tBurn);
        
        emit Transfer(sender, recipient, fees.tAmount);
    }
    
    receive() external payable {}

    function excludeFromFee(address account) public onlyOwner() {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) external onlyOwner() {
        _isExcludedFromFee[account] = false;
    }
    
    function removeBot(address account) external onlyOwner() {
        bots[account] = false;
    }

    function addBot(address account) external onlyOwner() {
        bots[account] = true;
    }
    
    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount > _tTotal.div(10000), "Amount must be greater than 0.01% of supply");
        require(maxTxAmount <= _tTotal, "Amount must be less than or equal to totalSupply");
        _maxTxAmount = maxTxAmount;
        emit MaxTxAmountUpdated(_maxTxAmount);
    }

    function setMaxWalletAmount(uint256 maxWalletAmount) external onlyOwner() {
        require(maxWalletAmount > _tTotal.div(200), "Amount must be greater than 0.5% of supply");
        require(maxWalletAmount <= _tTotal, "Amount must be less than or equal to totalSupply");
        _maxWalletAmount = maxWalletAmount;
    }

    function setTaxes(uint256 marketingFee, uint256 liquidityFee, uint256 trollFee, uint256 cardsFee, uint256 burnFee) external onlyOwner() {
        uint256 totalFee = marketingFee.add(liquidityFee).add(trollFee).add(cardsFee).add(burnFee);
        require(totalFee.div(10) < 50, "Sum of fees must be less than 50");

        _marketingFee = marketingFee;
        _liquidityFee = liquidityFee;
        _trollFee = trollFee;
        _cardsFee = cardsFee;
        _burnFee = burnFee;
        
        _previousMarketingFee = _marketingFee;
        _previousLiquidityFee = _liquidityFee;
        _previousTrollFee = _trollFee;
        _previousCardsFee = _cardsFee;
        _previousBurnFee = _burnFee;
        
        uint256 totalETHfees = _marketingFee.add(_trollFee).add(_cardsFee);
        
        _marketingPercent = (_marketingFee.mul(1000)).div(totalETHfees);
        _trollPercent = (_trollFee.mul(1000)).div(totalETHfees);
        _cardsPercent = (_cardsFee.mul(1000)).div(totalETHfees);
        
        emit FeesUpdated(_marketingFee, _liquidityFee, _trollFee, _cardsFee, _burnFee);
        
    }

    function setPercents(uint256 marketingPercent, uint256 trollPercent, uint256 cardsPercent) external onlyOwner() {
        _marketingPercent = marketingPercent;
        _trollPercent = trollPercent;
        _cardsPercent = cardsPercent;

        emit PercentsUpdated(_marketingPercent, _trollPercent, _cardsPercent);
    }

    function setPriceImpact(uint256 priceImpact) external onlyOwner() {
        require(priceImpact <= 100, "max price impact must be less than or equal to 100");
        require(priceImpact > 0, "cant prevent sells, choose value greater than 0");
        _priceImpact = priceImpact;
        emit PriceImpactUpdated(_priceImpact);
    }

    function endPresale(uint256 botBlocks) external onlyOwner() {
        require(presale == true, "presale already ended");
        presale = false;
        openTrading(botBlocks);
        emit EndedPresale(presale);
    }

    function updatePairSwapped(bool swapped) external onlyOwner() {
        pairSwapped = swapped;
    }
    
    function updateMinBuySellETH(uint256 minBuyETH, uint256 minSellETH) external onlyOwner() {
        require(minBuyETH <= 1e7, "cant make the limit higher than 0.1 ETH");
        require(minSellETH <= 1e7, "cant make the limit higher than 0.1 ETH");
        _minBuyETH = minBuyETH;
        _minSellETH = minSellETH;
    }
    
    function updateMaxSellAmountETH(uint256 maxSellETH) external onlyOwner() {
        require(maxSellETH >= 1e9, "cant make the limit lower than 1 ETH");
        _maxSellAmountETH = maxSellETH;
    }
    
    function updateCards(address payable cards) external onlyOwner() {
        _cards = cards;
    }
    
    function updateMarketingAddress(address payable marketingAddress) external onlyOwner() {
        _marketingAddress = marketingAddress;
    }
    
    function updateTrollAddress(address payable trollAddress) external onlyOwner() {
        _trollAddress = trollAddress;
    }
    
    function enableETHsellLimit() external onlyOwner() {
        require(_ETHsellLimitEnabled == false, "already enabled");
        _ETHsellLimitEnabled = true;
        _priceImpactSellLimitEnabled = false;
    }
    
    function disableETHsellLimit() external onlyOwner() {
        require(_ETHsellLimitEnabled == true, "already disabled");
        _ETHsellLimitEnabled = false;
    }
    
    function enablePriceImpactSellLimit() external onlyOwner() {
        require(_priceImpactSellLimitEnabled == false, "already enabled");
        _priceImpactSellLimitEnabled = true;
        _ETHsellLimitEnabled = false;
    }
    
    function disablePriceImpactSellLimit() external onlyOwner() {
        require(_priceImpactSellLimitEnabled == true, "already disabled");
        _priceImpactSellLimitEnabled = false;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"cards","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"presale","type":"bool"}],"name":"EndedPresale","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_trollFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_cardsFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_marketingPercent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_trollPercent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_cardsPercent","type":"uint256"}],"name":"PercentsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_priceImpact","type":"uint256"}],"name":"PriceImpactUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_ETHsellLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_priceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_priceImpactSellLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_trollFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disableETHsellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disablePriceImpactSellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableETHsellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enablePriceImpactSellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"botBlocks","type":"uint256"}],"name":"endPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getTokenPriceETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingPercent","type":"uint256"},{"internalType":"uint256","name":"trollPercent","type":"uint256"},{"internalType":"uint256","name":"cardsPercent","type":"uint256"}],"name":"setPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpact","type":"uint256"}],"name":"setPriceImpact","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"trollFee","type":"uint256"},{"internalType":"uint256","name":"cardsFee","type":"uint256"},{"internalType":"uint256","name":"burnFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"cards","type":"address"}],"name":"updateCards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingAddress","type":"address"}],"name":"updateMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSellETH","type":"uint256"}],"name":"updateMaxSellAmountETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minBuyETH","type":"uint256"},{"internalType":"uint256","name":"minSellETH","type":"uint256"}],"name":"updateMinBuySellETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapped","type":"bool"}],"name":"updatePairSwapped","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"trollAddress","type":"address"}],"name":"updateTrollAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600260055564012a05f2006009556000600a818155600b8290556028600c819055600d819055600e819055600f5560108190556011819055601281905560135560148190556015556102ee601655607d6017819055601855601a80546001600160a01b031990811673e85ec5e9b863eecd8efe12b77eca2e2cc8fd115517909155601b8054909116732008fbc22476fe372a8a449a832cea4e3b517b1c1790556022805465ffffffffffff191662010000179055348015620000c557600080fd5b5060405162003c1338038062003c13833981016040819052620000e891620005cd565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915562000167308267340aad21b3b7000062000414565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc9190620005cd565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002409190620005cd565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200028e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b49190620005cd565b602080546001600160a01b0319166001600160a01b03928316908117909155601f5460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af11580156200031c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003429190620005f8565b5067340aad21b3b7000060218190555062000375600167340aad21b3b700006200054060201b62001b481790919060201c565b6008556064600555601c5433600081815260026020908152604080832067340aad21b3b700009081905583546001600160a01b039081168552600484528285208054600160ff19918216811790925530875284872080549091169091179055915190815294169550919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000697565b6001600160a01b0383166200047c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620004df5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000473565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006200058a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200059160201b60201c565b9392505050565b60008183620005b55760405162461bcd60e51b81526004016200047391906200061c565b506000620005c4848662000674565b95945050505050565b600060208284031215620005e057600080fd5b81516001600160a01b03811681146200058a57600080fd5b6000602082840312156200060b57600080fd5b815180151581146200058a57600080fd5b600060208083528351808285015260005b818110156200064b578581018301518582016040015282016200062d565b818111156200065e576000604083870101525b50601f01601f1916929092016040019392505050565b6000826200069257634e487b7160e01b600052601260045260246000fd5b500490565b61356c80620006a76000396000f3fe6080604052600436106102765760003560e01c80636bc87c3a1161014f578063b1ec2164116100c1578063ec28438a1161007a578063ec28438a146107a6578063efe8a45e146107c6578063f2fde38b146107e6578063f429389014610806578063f8ace3f41461081b578063ffecf5161461083b57600080fd5b8063b1ec2164146106df578063bfa31ff9146106ff578063c0b0fda214610715578063cdda3e541461072b578063dd62ed3e14610740578063ea2f0b371461078657600080fd5b806391ff8d481161011357806391ff8d481461061a57806395d89b41146106305780639edf96cb1461065f5780639f92aa9c1461067f578063a9059cbb1461069f578063abda6292146106bf57600080fd5b80636bc87c3a146105855780636c0a24eb1461059b57806370a08231146105b157806385c7b67b146105e75780638da5cb5b146105fc57600080fd5b80633bbac579116101e857806359175c76116101ac57806359175c76146104cd5780635e3d3007146104ee5780635fcefa42146105105780635fecd9261461053057806367243482146105505780636ac56ced1461057057600080fd5b80633bbac57914610407578063437823ec1461044057806349bd5a5e1461046057806351bc3c851461049857806356209b29146104ad57600080fd5b80632369bf831161023a5780632369bf831461034b57806323b872dd1461036b57806327a14fc21461038b5780632b929aa8146103ab578063313ce567146103cb57806334596c16146103e757600080fd5b80630286ac171461028257806306fdde0314610299578063095ea7b3146102e057806318160ddd1461031057806322976e0d1461033557600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b5061029761085b565b005b3480156102a557600080fd5b5060408051808201909152600c81526b2a3937b63639902a37b5b2b760a11b60208201525b6040516102d79190612d44565b60405180910390f35b3480156102ec57600080fd5b506103006102fb366004612dae565b6108f1565b60405190151581526020016102d7565b34801561031c57600080fd5b5067340aad21b3b700005b6040519081526020016102d7565b34801561034157600080fd5b50610327600e5481565b34801561035757600080fd5b50610297610366366004612dda565b610908565b34801561037757600080fd5b50610300610386366004612df7565b610954565b34801561039757600080fd5b506102976103a6366004612e38565b6109bd565b3480156103b757600080fd5b506102976103c6366004612e38565b610a88565b3480156103d757600080fd5b50604051600981526020016102d7565b3480156103f357600080fd5b50610297610402366004612e51565b610bc2565b34801561041357600080fd5b50610300610422366004612dda565b6001600160a01b031660009081526019602052604090205460ff1690565b34801561044c57600080fd5b5061029761045b366004612dda565b610c0a565b34801561046c57600080fd5b50602054610480906001600160a01b031681565b6040516001600160a01b0390911681526020016102d7565b3480156104a457600080fd5b50610297610c58565b3480156104b957600080fd5b506102976104c8366004612dda565b610ca4565b3480156104d957600080fd5b5060225461030090600160281b900460ff1681565b3480156104fa57600080fd5b5060225461030090640100000000900460ff1681565b34801561051c57600080fd5b5061029761052b366004612e73565b610cf0565b34801561053c57600080fd5b5061029761054b366004612dda565b610e8b565b34801561055c57600080fd5b5061029761056b366004612f84565b610ed6565b34801561057c57600080fd5b50610297610fdd565b34801561059157600080fd5b50610327600c5481565b3480156105a757600080fd5b5061032760085481565b3480156105bd57600080fd5b506103276105cc366004612dda565b6001600160a01b031660009081526002602052604090205490565b3480156105f357600080fd5b5061029761106c565b34801561060857600080fd5b506000546001600160a01b0316610480565b34801561062657600080fd5b5061032760105481565b34801561063c57600080fd5b5060408051808201909152600681526554524f4c4c5360d01b60208201526102ca565b34801561066b57600080fd5b5061029761067a366004612e38565b6110f8565b34801561068b57600080fd5b5061032761069a366004612e38565b6111cd565b3480156106ab57600080fd5b506103006106ba366004612dae565b611672565b3480156106cb57600080fd5b506102976106da366004612e38565b61167f565b3480156106eb57600080fd5b506102976106fa366004613046565b61170e565b34801561070b57600080fd5b5061032760055481565b34801561072157600080fd5b5061032760145481565b34801561073757600080fd5b50610297611789565b34801561074c57600080fd5b5061032761075b366004613068565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561079257600080fd5b506102976107a1366004612dda565b611815565b3480156107b257600080fd5b506102976107c1366004612e38565b611860565b3480156107d257600080fd5b506102976107e13660046130a1565b61195d565b3480156107f257600080fd5b50610297610801366004612dda565b6119dc565b34801561081257600080fd5b50610297611a74565b34801561082757600080fd5b50610297610836366004612dda565b611aae565b34801561084757600080fd5b50610297610856366004612dda565b611afa565b6000546001600160a01b0316331461088e5760405162461bcd60e51b8152600401610885906130cd565b60405180910390fd5b602254600160281b900460ff16156108da5760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e48195b98589b1959608a1b6044820152606401610885565b6022805465ffff000000001916600160281b179055565b60006108fe338484611b91565b5060015b92915050565b6000546001600160a01b031633146109325760405162461bcd60e51b8152600401610885906130cd565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610961848484611cb5565b6109b384336109ae8560405180606001604052806028815260200161350f602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061248c565b611b91565b5060019392505050565b6000546001600160a01b031633146109e75760405162461bcd60e51b8152600401610885906130cd565b6109fa67340aad21b3b7000060c8611b48565b8111610a5b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e3525604482015269206f6620737570706c7960b01b6064820152608401610885565b67340aad21b3b70000811115610a835760405162461bcd60e51b815260040161088590613102565b600855565b6000546001600160a01b03163314610ab25760405162461bcd60e51b8152600401610885906130cd565b6064811115610b1e5760405162461bcd60e51b815260206004820152603260248201527f6d617820707269636520696d70616374206d757374206265206c6573732074686044820152710616e206f7220657175616c20746f203130360741b6064820152608401610885565b60008111610b865760405162461bcd60e51b815260206004820152602f60248201527f63616e742070726576656e742073656c6c732c2063686f6f73652076616c756560448201526e02067726561746572207468616e203608c1b6064820152608401610885565b60058190556040518181527f585981c0db15e25002a67c38e62f983f189bb219fae23eb213566640fbae5e3c906020015b60405180910390a150565b6000546001600160a01b03163314610bec5760405162461bcd60e51b8152600401610885906130cd565b6022805491151563010000000263ff00000019909216919091179055565b6000546001600160a01b03163314610c345760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610c825760405162461bcd60e51b8152600401610885906130cd565b306000908152600260205260409020548015610ca157610ca1816124c6565b50565b6000546001600160a01b03163314610cce5760405162461bcd60e51b8152600401610885906130cd565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d1a5760405162461bcd60e51b8152600401610885906130cd565b6000610d3482610d2e858188818c8c61263a565b9061263a565b90506032610d4382600a611b48565b10610d905760405162461bcd60e51b815260206004820181905260248201527f53756d206f662066656573206d757374206265206c657373207468616e2035306044820152606401610885565b600e869055600c859055601084905560128390556014829055600f869055600d8590556011849055601383905560158290556000610dd284610d2e898861263a565b9050610df581610def6103e8600e5461269990919063ffffffff16565b90611b48565b601655601054610e0d908290610def906103e8612699565b601755601254610e25908290610def906103e8612699565b601855600e54600c546010546012546014546040805195865260208601949094528484019290925260608401526080830152517f96b67df2c4648b38ada47da86f80d0a256df93150752a7b365ca487cab934e649181900360a00190a150505050505050565b6000546001600160a01b03163314610eb55760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b03166000908152601960205260409020805460ff19169055565b6000546001600160a01b03163314610f005760405162461bcd60e51b8152600401610885906130cd565b60c8825110610f705760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610885565b60005b8251811015610fd8576000838281518110610f9057610f90613152565b602002602001015190506000838381518110610fae57610fae613152565b60200260200101519050610fc3338383611cb5565b50508080610fd09061317e565b915050610f73565b505050565b6000546001600160a01b031633146110075760405162461bcd60e51b8152600401610885906130cd565b602254640100000000900460ff16156110545760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e48195b98589b1959608a1b6044820152606401610885565b6022805465ffff000000001916640100000000179055565b6000546001600160a01b031633146110965760405162461bcd60e51b8152600401610885906130cd565b602254600160281b900460ff1615156001146110e75760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48191a5cd8589b195960821b6044820152606401610885565b6022805465ff000000000019169055565b6000546001600160a01b031633146111225760405162461bcd60e51b8152600401610885906130cd565b60225462010000900460ff1615156001146111775760405162461bcd60e51b81526020600482015260156024820152741c1c995cd85b1948185b1c9958591e48195b991959605a1b6044820152606401610885565b6022805442600655600783905562ff00ff191660011790556022546040516201000090910460ff16151581527fbad30b8287730cfd8b6df18f878abbd745dc20365bfec848056cad8e6c17b91b90602001610bb7565b6020805460408051630dfe168160e01b8152905160009384936001600160a01b031692630dfe168192600480830193928290030181865afa158015611216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123a9190613199565b602080546040805163d21220a760e01b815290519394506000936001600160a01b039092169263d21220a7926004808401938290030181865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613199565b9050816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130d91906131b6565b60ff1661135c5760405162461bcd60e51b815260206004820152601c60248201527f4552523a20646563696d616c732063616e6e6f74206265207a65726f000000006044820152606401610885565b600080602060009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156113b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d691906131f5565b5060225491935091506301000000900460ff161561154f57602080546040805163d21220a760e01b815290516001600160a01b039092169263d21220a7926004808401938290030181865afa158015611433573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114579190613199565b9350602060009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d09190613199565b9250602060009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154991906131f5565b50925090505b6000846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561158f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b391906131b6565b6115be90600a613329565b6115d1906001600160701b038416613338565b9050846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611611573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163591906131b6565b61164090600a613329565b611653906001600160701b038516613338565b61165d8289613338565b6116679190613357565b979650505050505050565b60006108fe338484611cb5565b6000546001600160a01b031633146116a95760405162461bcd60e51b8152600401610885906130cd565b633b9aca008110156117095760405162461bcd60e51b8152602060048201526024808201527f63616e74206d616b6520746865206c696d6974206c6f776572207468616e20316044820152630408aa8960e31b6064820152608401610885565b600955565b6000546001600160a01b031633146117385760405162461bcd60e51b8152600401610885906130cd565b6298968082111561175b5760405162461bcd60e51b815260040161088590613379565b6298968081111561177e5760405162461bcd60e51b815260040161088590613379565b600a91909155600b55565b6000546001600160a01b031633146117b35760405162461bcd60e51b8152600401610885906130cd565b602254640100000000900460ff1615156001146118055760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48191a5cd8589b195960821b6044820152606401610885565b6022805464ff0000000019169055565b6000546001600160a01b0316331461183f5760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b0316331461188a5760405162461bcd60e51b8152600401610885906130cd565b61189e67340aad21b3b70000612710611b48565b81116119005760405162461bcd60e51b815260206004820152602b60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e303160448201526a25206f6620737570706c7960a81b6064820152608401610885565b67340aad21b3b700008111156119285760405162461bcd60e51b815260040161088590613102565b60218190556040518181527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf90602001610bb7565b6000546001600160a01b031633146119875760405162461bcd60e51b8152600401610885906130cd565b60168390556017829055601881905560408051848152602081018490529081018290527f27224e2696b8b5ac8d85f4e227d20f3116a7d3b066e62b3d355dfeebd302231a9060600160405180910390a1505050565b6000546001600160a01b03163314611a065760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b038116611a6b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610885565b610ca181612718565b6000546001600160a01b03163314611a9e5760405162461bcd60e51b8152600401610885906130cd565b478015610ca157610ca181612768565b6000546001600160a01b03163314611ad85760405162461bcd60e51b8152600401610885906130cd565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b245760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b03166000908152601960205260409020805460ff19166001179055565b6000611b8a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612861565b9392505050565b6001600160a01b038316611bf35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610885565b6001600160a01b038216611c545760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610885565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d195760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610885565b6001600160a01b038216611d7b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610885565b60008111611ddd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610885565b6001611df16000546001600160a01b031690565b6001600160a01b0316846001600160a01b031614158015611e2057506000546001600160a01b03848116911614155b8015611e35575060225462010000900460ff16155b8015611e4a57506001600160a01b0384163014155b8015611e5f57506001600160a01b0383163014155b156123175760225460ff16611e7357600080fd5b601d546001600160a01b03858116911614801590611e9f5750601e546001600160a01b03858116911614155b15611eb357602154821115611eb357600080fd5b6020546001600160a01b038581169116148015611ede5750601f546001600160a01b03848116911614155b1561206457600754600654611ef29161263a565b4211158015611f0f5750601d546001600160a01b03858116911614155b8015611f295750601e546001600160a01b03858116911614155b15611f52576001600160a01b0383166000908152601960205260409020805460ff191660011790555b6040516327e4aaa760e21b8152600481018390526000903090639f92aa9c90602401602060405180830381865afa158015611f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb591906133c0565b9050600a5481101561201e5760405162461bcd60e51b815260206004820152602c60248201527f796f75206d75737420627579206174206c65617374206d696e2045544820776f60448201526b393a341037b3103a37b5b2b760a11b6064820152608401610885565b60085461204484610d2e876001600160a01b031660009081526002602052604090205490565b11156120625760405162461bcd60e51b8152600401610885906133d9565b505b602254610100900460ff1615801561208a57506020546001600160a01b03858116911614155b15612317576001600160a01b03841660009081526019602052604090205460ff161580156120d157506001600160a01b03831660009081526019602052604090205460ff16155b6120da57600080fd5b6040516327e4aaa760e21b8152600481018390526000903090639f92aa9c90602401602060405180830381865afa158015612119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213d91906133c0565b9050600b548110156121ab5760405162461bcd60e51b815260206004820152603160248201527f796f75206d7573742073656c6c206174206c6561737420746865206d696e20456044820152702a24103bb7b93a341037b3103a37b5b2b760791b6064820152608401610885565b602254600160281b900460ff161561223a576009548111156122355760405162461bcd60e51b815260206004820152603c60248201527f796f752063616e6e6f742073656c6c206d6f7265207468616e20746865206d6160448201527f782045544820616d6f756e7420706572207472616e73616374696f6e000000006064820152608401610885565b61228b565b602254640100000000900460ff161561228b57600554602080546001600160a01b031660009081526002909152604090205461227f91606491610def91905b90612699565b83111561228b57600080fd5b6020546001600160a01b038581169116146122e4576008546122c684610d2e876001600160a01b031660009081526002602052604090205490565b11156122e45760405162461bcd60e51b8152600401610885906133d9565b306000908152600260205260409020548015612303576123038161288f565b4780156123135761231347612768565b5050505b6001600160a01b03841660009081526004602052604090205460ff168061235657506001600160a01b03831660009081526004602052604090205460ff165b80612369575060225462010000900460ff165b15612376575060006123fc565b6001600160a01b03841660009081526019602052604090205460ff16806123b557506001600160a01b03831660009081526019602052604090205460ff165b156123fc576123f8600e8054600f55600c8054600d5560108054601155601280546013556014805460155561012c94859055939092558190556000908190559055565b5060015b60225462010000900460ff1615612457576000546001600160a01b03858116911614806124365750601d546001600160a01b038581169116145b8061244e5750601e546001600160a01b038581169116145b61245757600080fd5b61246384848484612919565b612486600f54600e55600d54600c55601154601055601354601255601554601455565b50505050565b600081848411156124b05760405162461bcd60e51b81526004016108859190612d44565b5060006124bd8486613440565b95945050505050565b6022805461ff001916610100179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061250a5761250a613152565b6001600160a01b03928316602091820292909201810191909152601f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612563573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125879190613199565b8160018151811061259a5761259a613152565b6001600160a01b039283166020918202929092010152601f546125c09130911684611b91565b601f5460405163791ac94760e01b81526001600160a01b039091169063791ac947906125f9908590600090869030904290600401613457565b600060405180830381600087803b15801561261357600080fd5b505af1158015612627573d6000803e3d6000fd5b50506022805461ff001916905550505050565b60008061264783856134c8565b905083811015611b8a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610885565b6000826126a857506000610902565b60006126b48385613338565b9050826126c18583613357565b14611b8a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610885565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b601b546017546001600160a01b03909116906108fc90612791906103e890610def908690612699565b6040518115909202916000818181858888f193505050501580156127b9573d6000803e3d6000fd5b50601c546018546001600160a01b03909116906108fc906127e3906103e890610def908690612699565b6040518115909202916000818181858888f1935050505015801561280b573d6000803e3d6000fd5b50601a546016546001600160a01b03909116906108fc90612835906103e890610def908690612699565b6040518115909202916000818181858888f1935050505015801561285d573d6000803e3d6000fd5b5050565b600081836128825760405162461bcd60e51b81526004016108859190612d44565b5060006124bd8486613357565b6022805461ff001916610100179055600c54601254601054600e546000936128d0936128c3939192610d2e9283919061263a565b600c54610def9085612699565b905060006128df826002611b48565b905060006128ed8483612931565b9050476128f9826124c6565b600061290d83610def866122794787612931565b90506126278482612973565b8061292657612926612a48565b612463848484612aba565b6000611b8a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061248c565b601f5461298b9030906001600160a01b031684611b91565b601f546001600160a01b031663f305d7198230856000806129b46000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612a1c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a4191906134e0565b5050505050565b600e54158015612a585750600c54155b8015612a645750601054155b8015612a705750601254155b8015612a7c5750601454155b15612a8357565b600e8054600f55600c8054600d55601080546011556012805460135560148054601555600094859055928490559083905582905555565b612af36040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b612b0e6103e8610def600e548561269990919063ffffffff16565b6020820152600c54612b29906103e890610def908590612699565b8152601054612b41906103e890610def908590612699565b6040820152601254612b5c906103e890610def908590612699565b6060820152601454612b77906103e890610def908590612699565b608082018190526060820151604083015183516020850151612bae9493612ba8939092849283919082908b90612931565b90612931565b60a08201526001600160a01b038416600090815260026020526040902054612bd69083612931565b6001600160a01b038086166000908152600260205260408082209390935560a084015191861681529190912054612c0c9161263a565b60026000856001600160a01b03166001600160a01b0316815260200190815260200160002081905550612c79612c638260600151610d2e8460400151610d2e8660000151876020015161263a90919063ffffffff16565b306000908152600260205260409020549061263a565b30600090815260026020526040812091909155608082015161dead9091527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54612cc29161263a565b61dead60005260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5560a08101516040516001600160a01b0385811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91612d369190815260200190565b60405180910390a350505050565b600060208083528351808285015260005b81811015612d7157858101830151858201604001528201612d55565b81811115612d83576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610ca157600080fd5b60008060408385031215612dc157600080fd5b8235612dcc81612d99565b946020939093013593505050565b600060208284031215612dec57600080fd5b8135611b8a81612d99565b600080600060608486031215612e0c57600080fd5b8335612e1781612d99565b92506020840135612e2781612d99565b929592945050506040919091013590565b600060208284031215612e4a57600080fd5b5035919050565b600060208284031215612e6357600080fd5b81358015158114611b8a57600080fd5b600080600080600060a08688031215612e8b57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612eed57612eed612eae565b604052919050565b600067ffffffffffffffff821115612f0f57612f0f612eae565b5060051b60200190565b600082601f830112612f2a57600080fd5b81356020612f3f612f3a83612ef5565b612ec4565b82815260059290921b84018101918181019086841115612f5e57600080fd5b8286015b84811015612f795780358352918301918301612f62565b509695505050505050565b60008060408385031215612f9757600080fd5b823567ffffffffffffffff80821115612faf57600080fd5b818501915085601f830112612fc357600080fd5b81356020612fd3612f3a83612ef5565b82815260059290921b84018101918181019089841115612ff257600080fd5b948201945b8386101561301957853561300a81612d99565b82529482019490820190612ff7565b9650508601359250508082111561302f57600080fd5b5061303c85828601612f19565b9150509250929050565b6000806040838503121561305957600080fd5b50508035926020909101359150565b6000806040838503121561307b57600080fd5b823561308681612d99565b9150602083013561309681612d99565b809150509250929050565b6000806000606084860312156130b657600080fd5b505081359360208301359350604090920135919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526030908201527f416d6f756e74206d757374206265206c657373207468616e206f72206571756160408201526f6c20746f20746f74616c537570706c7960801b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561319257613192613168565b5060010190565b6000602082840312156131ab57600080fd5b8151611b8a81612d99565b6000602082840312156131c857600080fd5b815160ff81168114611b8a57600080fd5b80516001600160701b03811681146131f057600080fd5b919050565b60008060006060848603121561320a57600080fd5b613213846131d9565b9250613221602085016131d9565b9150604084015163ffffffff8116811461323a57600080fd5b809150509250925092565b600181815b8085111561328057816000190482111561326657613266613168565b8085161561327357918102915b93841c939080029061324a565b509250929050565b60008261329757506001610902565b816132a457506000610902565b81600181146132ba57600281146132c4576132e0565b6001915050610902565b60ff8411156132d5576132d5613168565b50506001821b610902565b5060208310610133831016604e8410600b8410161715613303575081810a610902565b61330d8383613245565b806000190482111561332157613321613168565b029392505050565b6000611b8a60ff841683613288565b600081600019048311821515161561335257613352613168565b500290565b60008261337457634e487b7160e01b600052601260045260246000fd5b500490565b60208082526027908201527f63616e74206d616b6520746865206c696d697420686967686572207468616e206040820152660605c62408aa8960cb1b606082015260800190565b6000602082840312156133d257600080fd5b5051919050565b60208082526041908201527f77616c6c65742062616c616e6365206166746572207472616e73666572206d7560408201527f7374206265206c657373207468616e206d61782077616c6c657420616d6f756e6060820152601d60fa1b608082015260a00190565b60008282101561345257613452613168565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156134a75784516001600160a01b031683529383019391830191600101613482565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156134db576134db613168565b500190565b6000806000606084860312156134f557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122016e7a5d32834e3ec1476f0e1ff0c1397ad0b4703df208310e213b949e5b52b2364736f6c634300080a0033000000000000000000000000b03fc7872f63d6b15cbd661234cc2946def83792

Deployed Bytecode

0x6080604052600436106102765760003560e01c80636bc87c3a1161014f578063b1ec2164116100c1578063ec28438a1161007a578063ec28438a146107a6578063efe8a45e146107c6578063f2fde38b146107e6578063f429389014610806578063f8ace3f41461081b578063ffecf5161461083b57600080fd5b8063b1ec2164146106df578063bfa31ff9146106ff578063c0b0fda214610715578063cdda3e541461072b578063dd62ed3e14610740578063ea2f0b371461078657600080fd5b806391ff8d481161011357806391ff8d481461061a57806395d89b41146106305780639edf96cb1461065f5780639f92aa9c1461067f578063a9059cbb1461069f578063abda6292146106bf57600080fd5b80636bc87c3a146105855780636c0a24eb1461059b57806370a08231146105b157806385c7b67b146105e75780638da5cb5b146105fc57600080fd5b80633bbac579116101e857806359175c76116101ac57806359175c76146104cd5780635e3d3007146104ee5780635fcefa42146105105780635fecd9261461053057806367243482146105505780636ac56ced1461057057600080fd5b80633bbac57914610407578063437823ec1461044057806349bd5a5e1461046057806351bc3c851461049857806356209b29146104ad57600080fd5b80632369bf831161023a5780632369bf831461034b57806323b872dd1461036b57806327a14fc21461038b5780632b929aa8146103ab578063313ce567146103cb57806334596c16146103e757600080fd5b80630286ac171461028257806306fdde0314610299578063095ea7b3146102e057806318160ddd1461031057806322976e0d1461033557600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b5061029761085b565b005b3480156102a557600080fd5b5060408051808201909152600c81526b2a3937b63639902a37b5b2b760a11b60208201525b6040516102d79190612d44565b60405180910390f35b3480156102ec57600080fd5b506103006102fb366004612dae565b6108f1565b60405190151581526020016102d7565b34801561031c57600080fd5b5067340aad21b3b700005b6040519081526020016102d7565b34801561034157600080fd5b50610327600e5481565b34801561035757600080fd5b50610297610366366004612dda565b610908565b34801561037757600080fd5b50610300610386366004612df7565b610954565b34801561039757600080fd5b506102976103a6366004612e38565b6109bd565b3480156103b757600080fd5b506102976103c6366004612e38565b610a88565b3480156103d757600080fd5b50604051600981526020016102d7565b3480156103f357600080fd5b50610297610402366004612e51565b610bc2565b34801561041357600080fd5b50610300610422366004612dda565b6001600160a01b031660009081526019602052604090205460ff1690565b34801561044c57600080fd5b5061029761045b366004612dda565b610c0a565b34801561046c57600080fd5b50602054610480906001600160a01b031681565b6040516001600160a01b0390911681526020016102d7565b3480156104a457600080fd5b50610297610c58565b3480156104b957600080fd5b506102976104c8366004612dda565b610ca4565b3480156104d957600080fd5b5060225461030090600160281b900460ff1681565b3480156104fa57600080fd5b5060225461030090640100000000900460ff1681565b34801561051c57600080fd5b5061029761052b366004612e73565b610cf0565b34801561053c57600080fd5b5061029761054b366004612dda565b610e8b565b34801561055c57600080fd5b5061029761056b366004612f84565b610ed6565b34801561057c57600080fd5b50610297610fdd565b34801561059157600080fd5b50610327600c5481565b3480156105a757600080fd5b5061032760085481565b3480156105bd57600080fd5b506103276105cc366004612dda565b6001600160a01b031660009081526002602052604090205490565b3480156105f357600080fd5b5061029761106c565b34801561060857600080fd5b506000546001600160a01b0316610480565b34801561062657600080fd5b5061032760105481565b34801561063c57600080fd5b5060408051808201909152600681526554524f4c4c5360d01b60208201526102ca565b34801561066b57600080fd5b5061029761067a366004612e38565b6110f8565b34801561068b57600080fd5b5061032761069a366004612e38565b6111cd565b3480156106ab57600080fd5b506103006106ba366004612dae565b611672565b3480156106cb57600080fd5b506102976106da366004612e38565b61167f565b3480156106eb57600080fd5b506102976106fa366004613046565b61170e565b34801561070b57600080fd5b5061032760055481565b34801561072157600080fd5b5061032760145481565b34801561073757600080fd5b50610297611789565b34801561074c57600080fd5b5061032761075b366004613068565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561079257600080fd5b506102976107a1366004612dda565b611815565b3480156107b257600080fd5b506102976107c1366004612e38565b611860565b3480156107d257600080fd5b506102976107e13660046130a1565b61195d565b3480156107f257600080fd5b50610297610801366004612dda565b6119dc565b34801561081257600080fd5b50610297611a74565b34801561082757600080fd5b50610297610836366004612dda565b611aae565b34801561084757600080fd5b50610297610856366004612dda565b611afa565b6000546001600160a01b0316331461088e5760405162461bcd60e51b8152600401610885906130cd565b60405180910390fd5b602254600160281b900460ff16156108da5760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e48195b98589b1959608a1b6044820152606401610885565b6022805465ffff000000001916600160281b179055565b60006108fe338484611b91565b5060015b92915050565b6000546001600160a01b031633146109325760405162461bcd60e51b8152600401610885906130cd565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610961848484611cb5565b6109b384336109ae8560405180606001604052806028815260200161350f602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061248c565b611b91565b5060019392505050565b6000546001600160a01b031633146109e75760405162461bcd60e51b8152600401610885906130cd565b6109fa67340aad21b3b7000060c8611b48565b8111610a5b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e3525604482015269206f6620737570706c7960b01b6064820152608401610885565b67340aad21b3b70000811115610a835760405162461bcd60e51b815260040161088590613102565b600855565b6000546001600160a01b03163314610ab25760405162461bcd60e51b8152600401610885906130cd565b6064811115610b1e5760405162461bcd60e51b815260206004820152603260248201527f6d617820707269636520696d70616374206d757374206265206c6573732074686044820152710616e206f7220657175616c20746f203130360741b6064820152608401610885565b60008111610b865760405162461bcd60e51b815260206004820152602f60248201527f63616e742070726576656e742073656c6c732c2063686f6f73652076616c756560448201526e02067726561746572207468616e203608c1b6064820152608401610885565b60058190556040518181527f585981c0db15e25002a67c38e62f983f189bb219fae23eb213566640fbae5e3c906020015b60405180910390a150565b6000546001600160a01b03163314610bec5760405162461bcd60e51b8152600401610885906130cd565b6022805491151563010000000263ff00000019909216919091179055565b6000546001600160a01b03163314610c345760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610c825760405162461bcd60e51b8152600401610885906130cd565b306000908152600260205260409020548015610ca157610ca1816124c6565b50565b6000546001600160a01b03163314610cce5760405162461bcd60e51b8152600401610885906130cd565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d1a5760405162461bcd60e51b8152600401610885906130cd565b6000610d3482610d2e858188818c8c61263a565b9061263a565b90506032610d4382600a611b48565b10610d905760405162461bcd60e51b815260206004820181905260248201527f53756d206f662066656573206d757374206265206c657373207468616e2035306044820152606401610885565b600e869055600c859055601084905560128390556014829055600f869055600d8590556011849055601383905560158290556000610dd284610d2e898861263a565b9050610df581610def6103e8600e5461269990919063ffffffff16565b90611b48565b601655601054610e0d908290610def906103e8612699565b601755601254610e25908290610def906103e8612699565b601855600e54600c546010546012546014546040805195865260208601949094528484019290925260608401526080830152517f96b67df2c4648b38ada47da86f80d0a256df93150752a7b365ca487cab934e649181900360a00190a150505050505050565b6000546001600160a01b03163314610eb55760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b03166000908152601960205260409020805460ff19169055565b6000546001600160a01b03163314610f005760405162461bcd60e51b8152600401610885906130cd565b60c8825110610f705760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610885565b60005b8251811015610fd8576000838281518110610f9057610f90613152565b602002602001015190506000838381518110610fae57610fae613152565b60200260200101519050610fc3338383611cb5565b50508080610fd09061317e565b915050610f73565b505050565b6000546001600160a01b031633146110075760405162461bcd60e51b8152600401610885906130cd565b602254640100000000900460ff16156110545760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e48195b98589b1959608a1b6044820152606401610885565b6022805465ffff000000001916640100000000179055565b6000546001600160a01b031633146110965760405162461bcd60e51b8152600401610885906130cd565b602254600160281b900460ff1615156001146110e75760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48191a5cd8589b195960821b6044820152606401610885565b6022805465ff000000000019169055565b6000546001600160a01b031633146111225760405162461bcd60e51b8152600401610885906130cd565b60225462010000900460ff1615156001146111775760405162461bcd60e51b81526020600482015260156024820152741c1c995cd85b1948185b1c9958591e48195b991959605a1b6044820152606401610885565b6022805442600655600783905562ff00ff191660011790556022546040516201000090910460ff16151581527fbad30b8287730cfd8b6df18f878abbd745dc20365bfec848056cad8e6c17b91b90602001610bb7565b6020805460408051630dfe168160e01b8152905160009384936001600160a01b031692630dfe168192600480830193928290030181865afa158015611216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123a9190613199565b602080546040805163d21220a760e01b815290519394506000936001600160a01b039092169263d21220a7926004808401938290030181865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613199565b9050816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130d91906131b6565b60ff1661135c5760405162461bcd60e51b815260206004820152601c60248201527f4552523a20646563696d616c732063616e6e6f74206265207a65726f000000006044820152606401610885565b600080602060009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156113b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d691906131f5565b5060225491935091506301000000900460ff161561154f57602080546040805163d21220a760e01b815290516001600160a01b039092169263d21220a7926004808401938290030181865afa158015611433573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114579190613199565b9350602060009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d09190613199565b9250602060009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154991906131f5565b50925090505b6000846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561158f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b391906131b6565b6115be90600a613329565b6115d1906001600160701b038416613338565b9050846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611611573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163591906131b6565b61164090600a613329565b611653906001600160701b038516613338565b61165d8289613338565b6116679190613357565b979650505050505050565b60006108fe338484611cb5565b6000546001600160a01b031633146116a95760405162461bcd60e51b8152600401610885906130cd565b633b9aca008110156117095760405162461bcd60e51b8152602060048201526024808201527f63616e74206d616b6520746865206c696d6974206c6f776572207468616e20316044820152630408aa8960e31b6064820152608401610885565b600955565b6000546001600160a01b031633146117385760405162461bcd60e51b8152600401610885906130cd565b6298968082111561175b5760405162461bcd60e51b815260040161088590613379565b6298968081111561177e5760405162461bcd60e51b815260040161088590613379565b600a91909155600b55565b6000546001600160a01b031633146117b35760405162461bcd60e51b8152600401610885906130cd565b602254640100000000900460ff1615156001146118055760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48191a5cd8589b195960821b6044820152606401610885565b6022805464ff0000000019169055565b6000546001600160a01b0316331461183f5760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b0316331461188a5760405162461bcd60e51b8152600401610885906130cd565b61189e67340aad21b3b70000612710611b48565b81116119005760405162461bcd60e51b815260206004820152602b60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e303160448201526a25206f6620737570706c7960a81b6064820152608401610885565b67340aad21b3b700008111156119285760405162461bcd60e51b815260040161088590613102565b60218190556040518181527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf90602001610bb7565b6000546001600160a01b031633146119875760405162461bcd60e51b8152600401610885906130cd565b60168390556017829055601881905560408051848152602081018490529081018290527f27224e2696b8b5ac8d85f4e227d20f3116a7d3b066e62b3d355dfeebd302231a9060600160405180910390a1505050565b6000546001600160a01b03163314611a065760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b038116611a6b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610885565b610ca181612718565b6000546001600160a01b03163314611a9e5760405162461bcd60e51b8152600401610885906130cd565b478015610ca157610ca181612768565b6000546001600160a01b03163314611ad85760405162461bcd60e51b8152600401610885906130cd565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b245760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b03166000908152601960205260409020805460ff19166001179055565b6000611b8a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612861565b9392505050565b6001600160a01b038316611bf35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610885565b6001600160a01b038216611c545760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610885565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d195760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610885565b6001600160a01b038216611d7b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610885565b60008111611ddd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610885565b6001611df16000546001600160a01b031690565b6001600160a01b0316846001600160a01b031614158015611e2057506000546001600160a01b03848116911614155b8015611e35575060225462010000900460ff16155b8015611e4a57506001600160a01b0384163014155b8015611e5f57506001600160a01b0383163014155b156123175760225460ff16611e7357600080fd5b601d546001600160a01b03858116911614801590611e9f5750601e546001600160a01b03858116911614155b15611eb357602154821115611eb357600080fd5b6020546001600160a01b038581169116148015611ede5750601f546001600160a01b03848116911614155b1561206457600754600654611ef29161263a565b4211158015611f0f5750601d546001600160a01b03858116911614155b8015611f295750601e546001600160a01b03858116911614155b15611f52576001600160a01b0383166000908152601960205260409020805460ff191660011790555b6040516327e4aaa760e21b8152600481018390526000903090639f92aa9c90602401602060405180830381865afa158015611f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb591906133c0565b9050600a5481101561201e5760405162461bcd60e51b815260206004820152602c60248201527f796f75206d75737420627579206174206c65617374206d696e2045544820776f60448201526b393a341037b3103a37b5b2b760a11b6064820152608401610885565b60085461204484610d2e876001600160a01b031660009081526002602052604090205490565b11156120625760405162461bcd60e51b8152600401610885906133d9565b505b602254610100900460ff1615801561208a57506020546001600160a01b03858116911614155b15612317576001600160a01b03841660009081526019602052604090205460ff161580156120d157506001600160a01b03831660009081526019602052604090205460ff16155b6120da57600080fd5b6040516327e4aaa760e21b8152600481018390526000903090639f92aa9c90602401602060405180830381865afa158015612119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213d91906133c0565b9050600b548110156121ab5760405162461bcd60e51b815260206004820152603160248201527f796f75206d7573742073656c6c206174206c6561737420746865206d696e20456044820152702a24103bb7b93a341037b3103a37b5b2b760791b6064820152608401610885565b602254600160281b900460ff161561223a576009548111156122355760405162461bcd60e51b815260206004820152603c60248201527f796f752063616e6e6f742073656c6c206d6f7265207468616e20746865206d6160448201527f782045544820616d6f756e7420706572207472616e73616374696f6e000000006064820152608401610885565b61228b565b602254640100000000900460ff161561228b57600554602080546001600160a01b031660009081526002909152604090205461227f91606491610def91905b90612699565b83111561228b57600080fd5b6020546001600160a01b038581169116146122e4576008546122c684610d2e876001600160a01b031660009081526002602052604090205490565b11156122e45760405162461bcd60e51b8152600401610885906133d9565b306000908152600260205260409020548015612303576123038161288f565b4780156123135761231347612768565b5050505b6001600160a01b03841660009081526004602052604090205460ff168061235657506001600160a01b03831660009081526004602052604090205460ff165b80612369575060225462010000900460ff165b15612376575060006123fc565b6001600160a01b03841660009081526019602052604090205460ff16806123b557506001600160a01b03831660009081526019602052604090205460ff165b156123fc576123f8600e8054600f55600c8054600d5560108054601155601280546013556014805460155561012c94859055939092558190556000908190559055565b5060015b60225462010000900460ff1615612457576000546001600160a01b03858116911614806124365750601d546001600160a01b038581169116145b8061244e5750601e546001600160a01b038581169116145b61245757600080fd5b61246384848484612919565b612486600f54600e55600d54600c55601154601055601354601255601554601455565b50505050565b600081848411156124b05760405162461bcd60e51b81526004016108859190612d44565b5060006124bd8486613440565b95945050505050565b6022805461ff001916610100179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061250a5761250a613152565b6001600160a01b03928316602091820292909201810191909152601f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612563573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125879190613199565b8160018151811061259a5761259a613152565b6001600160a01b039283166020918202929092010152601f546125c09130911684611b91565b601f5460405163791ac94760e01b81526001600160a01b039091169063791ac947906125f9908590600090869030904290600401613457565b600060405180830381600087803b15801561261357600080fd5b505af1158015612627573d6000803e3d6000fd5b50506022805461ff001916905550505050565b60008061264783856134c8565b905083811015611b8a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610885565b6000826126a857506000610902565b60006126b48385613338565b9050826126c18583613357565b14611b8a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610885565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b601b546017546001600160a01b03909116906108fc90612791906103e890610def908690612699565b6040518115909202916000818181858888f193505050501580156127b9573d6000803e3d6000fd5b50601c546018546001600160a01b03909116906108fc906127e3906103e890610def908690612699565b6040518115909202916000818181858888f1935050505015801561280b573d6000803e3d6000fd5b50601a546016546001600160a01b03909116906108fc90612835906103e890610def908690612699565b6040518115909202916000818181858888f1935050505015801561285d573d6000803e3d6000fd5b5050565b600081836128825760405162461bcd60e51b81526004016108859190612d44565b5060006124bd8486613357565b6022805461ff001916610100179055600c54601254601054600e546000936128d0936128c3939192610d2e9283919061263a565b600c54610def9085612699565b905060006128df826002611b48565b905060006128ed8483612931565b9050476128f9826124c6565b600061290d83610def866122794787612931565b90506126278482612973565b8061292657612926612a48565b612463848484612aba565b6000611b8a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061248c565b601f5461298b9030906001600160a01b031684611b91565b601f546001600160a01b031663f305d7198230856000806129b46000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612a1c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a4191906134e0565b5050505050565b600e54158015612a585750600c54155b8015612a645750601054155b8015612a705750601254155b8015612a7c5750601454155b15612a8357565b600e8054600f55600c8054600d55601080546011556012805460135560148054601555600094859055928490559083905582905555565b612af36040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b612b0e6103e8610def600e548561269990919063ffffffff16565b6020820152600c54612b29906103e890610def908590612699565b8152601054612b41906103e890610def908590612699565b6040820152601254612b5c906103e890610def908590612699565b6060820152601454612b77906103e890610def908590612699565b608082018190526060820151604083015183516020850151612bae9493612ba8939092849283919082908b90612931565b90612931565b60a08201526001600160a01b038416600090815260026020526040902054612bd69083612931565b6001600160a01b038086166000908152600260205260408082209390935560a084015191861681529190912054612c0c9161263a565b60026000856001600160a01b03166001600160a01b0316815260200190815260200160002081905550612c79612c638260600151610d2e8460400151610d2e8660000151876020015161263a90919063ffffffff16565b306000908152600260205260409020549061263a565b30600090815260026020526040812091909155608082015161dead9091527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54612cc29161263a565b61dead60005260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5560a08101516040516001600160a01b0385811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91612d369190815260200190565b60405180910390a350505050565b600060208083528351808285015260005b81811015612d7157858101830151858201604001528201612d55565b81811115612d83576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610ca157600080fd5b60008060408385031215612dc157600080fd5b8235612dcc81612d99565b946020939093013593505050565b600060208284031215612dec57600080fd5b8135611b8a81612d99565b600080600060608486031215612e0c57600080fd5b8335612e1781612d99565b92506020840135612e2781612d99565b929592945050506040919091013590565b600060208284031215612e4a57600080fd5b5035919050565b600060208284031215612e6357600080fd5b81358015158114611b8a57600080fd5b600080600080600060a08688031215612e8b57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612eed57612eed612eae565b604052919050565b600067ffffffffffffffff821115612f0f57612f0f612eae565b5060051b60200190565b600082601f830112612f2a57600080fd5b81356020612f3f612f3a83612ef5565b612ec4565b82815260059290921b84018101918181019086841115612f5e57600080fd5b8286015b84811015612f795780358352918301918301612f62565b509695505050505050565b60008060408385031215612f9757600080fd5b823567ffffffffffffffff80821115612faf57600080fd5b818501915085601f830112612fc357600080fd5b81356020612fd3612f3a83612ef5565b82815260059290921b84018101918181019089841115612ff257600080fd5b948201945b8386101561301957853561300a81612d99565b82529482019490820190612ff7565b9650508601359250508082111561302f57600080fd5b5061303c85828601612f19565b9150509250929050565b6000806040838503121561305957600080fd5b50508035926020909101359150565b6000806040838503121561307b57600080fd5b823561308681612d99565b9150602083013561309681612d99565b809150509250929050565b6000806000606084860312156130b657600080fd5b505081359360208301359350604090920135919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526030908201527f416d6f756e74206d757374206265206c657373207468616e206f72206571756160408201526f6c20746f20746f74616c537570706c7960801b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561319257613192613168565b5060010190565b6000602082840312156131ab57600080fd5b8151611b8a81612d99565b6000602082840312156131c857600080fd5b815160ff81168114611b8a57600080fd5b80516001600160701b03811681146131f057600080fd5b919050565b60008060006060848603121561320a57600080fd5b613213846131d9565b9250613221602085016131d9565b9150604084015163ffffffff8116811461323a57600080fd5b809150509250925092565b600181815b8085111561328057816000190482111561326657613266613168565b8085161561327357918102915b93841c939080029061324a565b509250929050565b60008261329757506001610902565b816132a457506000610902565b81600181146132ba57600281146132c4576132e0565b6001915050610902565b60ff8411156132d5576132d5613168565b50506001821b610902565b5060208310610133831016604e8410600b8410161715613303575081810a610902565b61330d8383613245565b806000190482111561332157613321613168565b029392505050565b6000611b8a60ff841683613288565b600081600019048311821515161561335257613352613168565b500290565b60008261337457634e487b7160e01b600052601260045260246000fd5b500490565b60208082526027908201527f63616e74206d616b6520746865206c696d697420686967686572207468616e206040820152660605c62408aa8960cb1b606082015260800190565b6000602082840312156133d257600080fd5b5051919050565b60208082526041908201527f77616c6c65742062616c616e6365206166746572207472616e73666572206d7560408201527f7374206265206c657373207468616e206d61782077616c6c657420616d6f756e6060820152601d60fa1b608082015260a00190565b60008282101561345257613452613168565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156134a75784516001600160a01b031683529383019391830191600101613482565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156134db576134db613168565b500190565b6000806000606084860312156134f557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122016e7a5d32834e3ec1476f0e1ff0c1397ad0b4703df208310e213b949e5b52b2364736f6c634300080a0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000b03fc7872f63d6b15cbd661234cc2946def83792

-----Decoded View---------------
Arg [0] : cards (address): 0xB03Fc7872f63D6B15cBD661234Cc2946DeF83792

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b03fc7872f63d6b15cbd661234cc2946def83792


Deployed Bytecode Sourcemap

8404:20754:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28321:212;;;;;;;;;;;;;:::i;:::-;;12775:94;;;;;;;;;;-1:-1:-1;12856:5:0;;;;;;;;;;;;-1:-1:-1;;;12856:5:0;;;;12775:94;;;;;;;:::i;:::-;;;;;;;;13757:163;;;;;;;;;;-1:-1:-1;13757:163:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;13757:163:0;1072:187:1;13085:97:0;;;;;;;;;;-1:-1:-1;8875:16:0;13085:97;;;1410:25:1;;;1398:2;1383:18;13085:97:0;1264:177:1;9372:33:0;;;;;;;;;;;;;;;;28029:142;;;;;;;;;;-1:-1:-1;28029:142:0;;;;;:::i;:::-;;:::i;13928:312::-;;;;;;;;;;-1:-1:-1;13928:312:0;;;;;:::i;:::-;;:::i;24876:325::-;;;;;;;;;;-1:-1:-1;24876:325:0;;;;;:::i;:::-;;:::i;26681:337::-;;;;;;;;;;-1:-1:-1;26681:337:0;;;;;:::i;:::-;;:::i;12983:94::-;;;;;;;;;;-1:-1:-1;12983:94:0;;8646:1;2494:36:1;;2482:2;2467:18;12983:94:0;2352:184:1;27258:102:0;;;;;;;;;;-1:-1:-1;27258:102:0;;;;;:::i;:::-;;:::i;13317:98::-;;;;;;;;;;-1:-1:-1;13317:98:0;;;;;:::i;:::-;-1:-1:-1;;;;;13394:13:0;13370:4;13394:13;;;:4;:13;;;;;;;;;13317:98;24059:113;;;;;;;;;;-1:-1:-1;24059:113:0;;;;;:::i;:::-;;:::i;10650:28::-;;;;;;;;;;-1:-1:-1;10650:28:0;;;;-1:-1:-1;;;;;10650:28:0;;;;;;-1:-1:-1;;;;;3235:32:1;;;3217:51;;3205:2;3190:18;10650:28:0;3071:203:1;22334:207:0;;;;;;;;;;;;;:::i;27919:98::-;;;;;;;;;;-1:-1:-1;27919:98:0;;;;;:::i;:::-;;:::i;10923:40::-;;;;;;;;;;-1:-1:-1;10923:40:0;;;;-1:-1:-1;;;10923:40:0;;;;;;10868:48;;;;;;;;;;-1:-1:-1;10868:48:0;;;;;;;;;;;25209:1129;;;;;;;;;;-1:-1:-1;25209:1129:0;;;;;:::i;:::-;;:::i;24306:97::-;;;;;;;;;;-1:-1:-1;24306:97:0;;;;;:::i;:::-;;:::i;12322:445::-;;;;;;;;;;-1:-1:-1;12322:445:0;;;;;:::i;:::-;;:::i;28724:228::-;;;;;;;;;;;;;:::i;9253:33::-;;;;;;;;;;;;;;;;9020:31;;;;;;;;;;;;;;;;13190:119;;;;;;;;;;-1:-1:-1;13190:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;13283:18:0;13256:7;13283:18;;;:9;:18;;;;;;;13190:119;28545:167;;;;;;;;;;;;;:::i;3507:79::-;;;;;;;;;;-1:-1:-1;3545:7:0;3572:6;-1:-1:-1;;;;;3572:6:0;3507:79;;9491:29;;;;;;;;;;;;;;;;12877:98;;;;;;;;;;-1:-1:-1;12960:7:0;;;;;;;;;;;;-1:-1:-1;;;12960:7:0;;;;12877:98;;27026:224;;;;;;;;;;-1:-1:-1;27026:224:0;;;;;:::i;:::-;;:::i;15821:901::-;;;;;;;;;;-1:-1:-1;15821:901:0;;;;;:::i;:::-;;:::i;13427:169::-;;;;;;;;;;-1:-1:-1;13427:169:0;;;;;:::i;:::-;;:::i;27708:199::-;;;;;;;;;;-1:-1:-1;27708:199:0;;;;;:::i;:::-;;:::i;27372:324::-;;;;;;;;;;-1:-1:-1;27372:324:0;;;;;:::i;:::-;;:::i;8915:31::-;;;;;;;;;;;;;;;;9706:27;;;;;;;;;;;;;;;;28964:191;;;;;;;;;;;;;:::i;13604:145::-;;;;;;;;;;-1:-1:-1;13604:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;13714:18:0;;;13687:7;13714:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13604:145;24180:114;;;;;;;;;;-1:-1:-1;24180:114:0;;;;;:::i;:::-;;:::i;24516:352::-;;;;;;;;;;-1:-1:-1;24516:352:0;;;;;:::i;:::-;;:::i;26346:327::-;;;;;;;;;;-1:-1:-1;26346:327:0;;;;;:::i;:::-;;:::i;3725:201::-;;;;;;;;;;-1:-1:-1;3725:201:0;;;;;:::i;:::-;;:::i;22549:209::-;;;;;;;;;;;;;:::i;28183:126::-;;;;;;;;;;-1:-1:-1;28183:126:0;;;;;:::i;:::-;;:::i;24411:93::-;;;;;;;;;;-1:-1:-1;24411:93:0;;;;;:::i;:::-;;:::i;28321:212::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;;;;;;;;;28391:20:::1;::::0;-1:-1:-1;;;28391:20:0;::::1;;;:29;28383:57;;;::::0;-1:-1:-1;;;28383:57:0;;7755:2:1;28383:57:0::1;::::0;::::1;7737:21:1::0;7794:2;7774:18;;;7767:30;-1:-1:-1;;;7813:18:1;;;7806:45;7868:18;;28383:57:0::1;7553:339:1::0;28383:57:0::1;28451:20;:27:::0;;-1:-1:-1;;28489:36:0;-1:-1:-1;;;28489:36:0;;;28321:212::o;13757:163::-;13834:4;13851:39;1308:10;13874:7;13883:6;13851:8;:39::i;:::-;-1:-1:-1;13908:4:0;13757:163;;;;;:::o;28029:142::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;28127:17:::1;:36:::0;;-1:-1:-1;;;;;;28127:36:0::1;-1:-1:-1::0;;;;;28127:36:0;;;::::1;::::0;;;::::1;::::0;;28029:142::o;13928:312::-;14028:4;14045:36;14055:6;14063:9;14074:6;14045:9;:36::i;:::-;14092:118;14101:6;1308:10;14121:88;14159:6;14121:88;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14121:19:0;;;;;;:11;:19;;;;;;;;1308:10;14121:33;;;;;;;;;;:37;:88::i;:::-;14092:8;:118::i;:::-;-1:-1:-1;14228:4:0;13928:312;;;;;:::o;24876:325::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;24987:16:::1;8875;24999:3;24987:11;:16::i;:::-;24969:15;:34;24961:89;;;::::0;-1:-1:-1;;;24961:89:0;;8099:2:1;24961:89:0::1;::::0;::::1;8081:21:1::0;8138:2;8118:18;;;8111:30;8177:34;8157:18;;;8150:62;-1:-1:-1;;;8228:18:1;;;8221:40;8278:19;;24961:89:0::1;7897:406:1::0;24961:89:0::1;8875:16;25069:15;:26;;25061:87;;;;-1:-1:-1::0;;;25061:87:0::1;;;;;;;:::i;:::-;25159:16;:34:::0;24876:325::o;26681:337::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;26781:3:::1;26766:11;:18;;26758:81;;;::::0;-1:-1:-1;;;26758:81:0;;8927:2:1;26758:81:0::1;::::0;::::1;8909:21:1::0;8966:2;8946:18;;;8939:30;9005:34;8985:18;;;8978:62;-1:-1:-1;;;9056:18:1;;;9049:48;9114:19;;26758:81:0::1;8725:414:1::0;26758:81:0::1;26872:1;26858:11;:15;26850:75;;;::::0;-1:-1:-1;;;26850:75:0;;9346:2:1;26850:75:0::1;::::0;::::1;9328:21:1::0;9385:2;9365:18;;;9358:30;9424:34;9404:18;;;9397:62;-1:-1:-1;;;9475:18:1;;;9468:45;9530:19;;26850:75:0::1;9144:411:1::0;26850:75:0::1;26936:12;:26:::0;;;26978:32:::1;::::0;1410:25:1;;;26978:32:0::1;::::0;1398:2:1;1383:18;26978:32:0::1;;;;;;;;26681:337:::0;:::o;27258:102::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;27331:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;27331:21:0;;::::1;::::0;;;::::1;::::0;;27258:102::o;24059:113::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24130:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;24130:34:0::1;24160:4;24130:34;::::0;;24059:113::o;22334:207::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;22432:4:::1;22388:23;13283:18:::0;;;:9;:18;;;;;;22453:19;;22449:85:::1;;22489:33;22506:15;22489:16;:33::i;:::-;22377:164;22334:207::o:0;27919:98::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;27995:6:::1;:14:::0;;-1:-1:-1;;;;;;27995:14:0::1;-1:-1:-1::0;;;;;27995:14:0;;;::::1;::::0;;;::::1;::::0;;27919:98::o;25209:1129::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;25356:16:::1;25375:71;25438:7:::0;25375:58:::1;25424:8:::0;25375:58;25410:8;25375:58;:12;25392;25375:16:::1;:30::i;:::-;:34:::0;::::1;:44::i;:71::-;25356:90:::0;-1:-1:-1;25484:2:0::1;25465:16;25356:90:::0;25478:2:::1;25465:12;:16::i;:::-;:21;25457:66;;;::::0;-1:-1:-1;;;25457:66:0;;9762:2:1;25457:66:0::1;::::0;::::1;9744:21:1::0;;;9781:18;;;9774:30;9840:34;9820:18;;;9813:62;9892:18;;25457:66:0::1;9560:356:1::0;25457:66:0::1;25536:13;:28:::0;;;25575:13:::1;:28:::0;;;25614:9:::1;:20:::0;;;25645:9:::1;:20:::0;;;25676:8:::1;:18:::0;;;25715:21:::1;:37:::0;;;25763:21:::1;:37:::0;;;25811:17:::1;:29:::0;;;25851:17:::1;:29:::0;;;25891:16:::1;:27:::0;;;-1:-1:-1;25962:43:0::1;25657:8:::0;25962:28:::1;25552:12:::0;25626:8;25962:17:::1;:28::i;:43::-;25939:66;;26046:43;26076:12;26047:23;26065:4;26047:13;;:17;;:23;;;;:::i;:::-;26046:29:::0;::::1;:43::i;:::-;26026:17;:63:::0;26117:9:::1;::::0;26116:39:::1;::::0;26142:12;;26117:19:::1;::::0;26131:4:::1;26117:13;:19::i;26116:39::-;26100:13;:55:::0;26183:9:::1;::::0;26182:39:::1;::::0;26208:12;;26183:19:::1;::::0;26197:4:::1;26183:13;:19::i;26182:39::-;26166:13;:55:::0;26259:13:::1;::::0;26274::::1;::::0;26289:9:::1;::::0;26300::::1;::::0;26311:8:::1;::::0;26247:73:::1;::::0;;10180:25:1;;;10236:2;10221:18;;10214:34;;;;10264:18;;;10257:34;;;;10322:2;10307:18;;10300:34;10365:3;10350:19;;10343:35;26247:73:0;::::1;::::0;;;;10167:3:1;26247:73:0;;::::1;25345:993;;25209:1129:::0;;;;;:::o;24306:97::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24374:13:0::1;24390:5;24374:13:::0;;;:4:::1;:13;::::0;;;;:21;;-1:-1:-1;;24374:21:0::1;::::0;;24306:97::o;12322:445::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;12460:3:::1;12436:14;:21;:27;12428:94;;;::::0;-1:-1:-1;;;12428:94:0;;10591:2:1;12428:94:0::1;::::0;::::1;10573:21:1::0;10630:2;10610:18;;;10603:30;10669:34;10649:18;;;10642:62;-1:-1:-1;;;10720:18:1;;;10713:52;10782:19;;12428:94:0::1;10389:418:1::0;12428:94:0::1;12559:9;12555:205;12578:14;:21;12574:1;:25;12555:205;;;12620:14;12637;12652:1;12637:17;;;;;;;;:::i;:::-;;;;;;;12620:34;;12669:14;12686:7;12694:1;12686:10;;;;;;;;:::i;:::-;;;;;;;12669:27;;12711:37;12721:10;12733:6;12741;12711:9;:37::i;:::-;12605:155;;12601:3;;;;;:::i;:::-;;;;12555:205;;;;12322:445:::0;;:::o;28724:228::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;28802:28:::1;::::0;;;::::1;;;:37;28794:65;;;::::0;-1:-1:-1;;;28794:65:0;;7755:2:1;28794:65:0::1;::::0;::::1;7737:21:1::0;7794:2;7774:18;;;7767:30;-1:-1:-1;;;7813:18:1;;;7806:45;7868:18;;28794:65:0::1;7553:339:1::0;28794:65:0::1;28870:28;:35:::0;;-1:-1:-1;;28916:28:0;28870:35;28916:28;;;28724:228::o;28545:167::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;28616:20:::1;::::0;-1:-1:-1;;;28616:20:0;::::1;;;:28;;28640:4;28616:28;28608:57;;;::::0;-1:-1:-1;;;28608:57:0;;11418:2:1;28608:57:0::1;::::0;::::1;11400:21:1::0;11457:2;11437:18;;;11430:30;-1:-1:-1;;;11476:18:1;;;11469:46;11532:18;;28608:57:0::1;11216:340:1::0;28608:57:0::1;28676:20;:28:::0;;-1:-1:-1;;28676:28:0::1;::::0;;28545:167::o;27026:224::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;27105:7:::1;::::0;;;::::1;;;:15;;27116:4;27105:15;27097:49;;;::::0;-1:-1:-1;;;27097:49:0;;11763:2:1;27097:49:0::1;::::0;::::1;11745:21:1::0;11802:2;11782:18;;;11775:30;-1:-1:-1;;;11821:18:1;;;11814:51;11882:18;;27097:49:0::1;11561:345:1::0;27097:49:0::1;27157:7;:15:::0;;22241;22227:11;:29;22267:10;:22;;;-1:-1:-1;;22300:18:0;-1:-1:-1;22300:18:0;;;27234:7:::1;::::0;27221:21:::1;::::0;27234:7;;;::::1;;;1237:14:1::0;1230:22;1212:41;;27221:21:0::1;::::0;1200:2:1;1185:18;27221:21:0::1;1072:187:1::0;15821:901:0;15959:13;;;15944:38;;;-1:-1:-1;;;15944:38:0;;;;15885:7;;;;-1:-1:-1;;;;;15959:13:0;;15944:36;;:38;;;;;15959:13;15944:38;;;;;15959:13;15944:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16058:13;;;16043:38;;;-1:-1:-1;;;16043:38:0;;;;15905:78;;-1:-1:-1;16004:21:0;;-1:-1:-1;;;;;16058:13:0;;;;16043:36;;:38;;;;;;;;;;16058:13;16043:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16004:78;;16116:6;-1:-1:-1;;;;;16116:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:22;;16108:63;;;;-1:-1:-1;;;16108:63:0;;12647:2:1;16108:63:0;;;12629:21:1;12686:2;12666:18;;;12659:30;12725;12705:18;;;12698:58;12773:18;;16108:63:0;12445:352:1;16108:63:0;16193:12;16207;16239:13;;;;;;;;;-1:-1:-1;;;;;16239:13:0;-1:-1:-1;;;;;16224:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;16281:11:0;;16192:75;;-1:-1:-1;16192:75:0;-1:-1:-1;16281:11:0;;;;;16278:273;;;16348:13;;;16333:38;;;-1:-1:-1;;;16333:38:0;;;;-1:-1:-1;;;;;16348:13:0;;;;16333:36;;:38;;;;;;;;;;16348:13;16333:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16309:63;;16436:13;;;;;;;;;-1:-1:-1;;;;;16436:13:0;-1:-1:-1;;;;;16421:36:0;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16397:63;;16511:13;;;;;;;;;-1:-1:-1;;;;;16511:13:0;-1:-1:-1;;;;;16496:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;16480:59:0;-1:-1:-1;16480:59:0;-1:-1:-1;16278:273:0;16563:9;16585:6;-1:-1:-1;;;;;16585:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16581:21;;:2;:21;:::i;:::-;16575:28;;-1:-1:-1;;;;;16575:28:0;;;:::i;:::-;16563:40;;16646:6;-1:-1:-1;;;;;16646:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16642:21;;:2;:21;:::i;:::-;16636:28;;-1:-1:-1;;;;;16636:28:0;;;:::i;:::-;16622:11;16629:4;16622:6;:11;:::i;:::-;16621:44;;;;:::i;:::-;16614:52;15821:901;-1:-1:-1;;;;;;;15821:901:0:o;13427:169::-;13507:4;13524:42;1308:10;13548:9;13559:6;13524:9;:42::i;27708:199::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;27814:3:::1;27800:10;:17;;27792:66;;;::::0;-1:-1:-1;;;27792:66:0;;15430:2:1;27792:66:0::1;::::0;::::1;15412:21:1::0;15469:2;15449:18;;;15442:30;15508:34;15488:18;;;15481:62;-1:-1:-1;;;15559:18:1;;;15552:34;15603:19;;27792:66:0::1;15228:400:1::0;27792:66:0::1;27869:17;:30:::0;27708:199::o;27372:324::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;27493:3:::1;27480:9;:16;;27472:68;;;;-1:-1:-1::0;;;27472:68:0::1;;;;;;;:::i;:::-;27573:3;27559:10;:17;;27551:69;;;;-1:-1:-1::0;;;27551:69:0::1;;;;;;;:::i;:::-;27631:10;:22:::0;;;;27664:11:::1;:24:::0;27372:324::o;28964:191::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;29043:28:::1;::::0;;;::::1;;;:36;;29075:4;29043:36;29035:65;;;::::0;-1:-1:-1;;;29035:65:0;;11418:2:1;29035:65:0::1;::::0;::::1;11400:21:1::0;11457:2;11437:18;;;11430:30;-1:-1:-1;;;11476:18:1;;;11469:46;11532:18;;29035:65:0::1;11216:340:1::0;29035:65:0::1;29111:28;:36:::0;;-1:-1:-1;;29111:36:0::1;::::0;;28964:191::o;24180:114::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24251:27:0::1;24281:5;24251:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;24251:35:0::1;::::0;;24180:114::o;24516:352::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;24615:18:::1;8875:16;24627:5;24615:11;:18::i;:::-;24601:11;:32;24593:88;;;::::0;-1:-1:-1;;;24593:88:0;;16243:2:1;24593:88:0::1;::::0;::::1;16225:21:1::0;16282:2;16262:18;;;16255:30;16321:34;16301:18;;;16294:62;-1:-1:-1;;;16372:18:1;;;16365:41;16423:19;;24593:88:0::1;16041:407:1::0;24593:88:0::1;8875:16;24700:11;:22;;24692:83;;;;-1:-1:-1::0;;;24692:83:0::1;;;;;;;:::i;:::-;24786:12;:26:::0;;;24828:32:::1;::::0;1410:25:1;;;24828:32:0::1;::::0;1398:2:1;1383:18;24828:32:0::1;1264:177:1::0;26346:327:0;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;26469:17:::1;:36:::0;;;26516:13:::1;:28:::0;;;26555:13:::1;:28:::0;;;26601:64:::1;::::0;;16655:25:1;;;16711:2;16696:18;;16689:34;;;16739:18;;;16732:34;;;26601:64:0::1;::::0;16643:2:1;16628:18;26601:64:0::1;;;;;;;26346:327:::0;;;:::o;3725:201::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3814:22:0;::::1;3806:73;;;::::0;-1:-1:-1;;;3806:73:0;;16979:2:1;3806:73:0::1;::::0;::::1;16961:21:1::0;17018:2;16998:18;;;16991:30;17057:34;17037:18;;;17030:62;-1:-1:-1;;;17108:18:1;;;17101:36;17154:19;;3806:73:0::1;16777:402:1::0;3806:73:0::1;3890:28;3909:8;3890:18;:28::i;22549:209::-:0;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;22632:21:::1;22668:22:::0;;22664:87:::1;;22707:32;22720:18;22707:12;:32::i;28183:126::-:0;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;28273:13:::1;:28:::0;;-1:-1:-1;;;;;;28273:28:0::1;-1:-1:-1::0;;;;;28273:28:0;;;::::1;::::0;;;::::1;::::0;;28183:126::o;24411:93::-;3634:6;;-1:-1:-1;;;;;3634:6:0;1308:10;3634:22;3626:67;;;;-1:-1:-1;;;3626:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24476:13:0::1;;::::0;;;:4:::1;:13;::::0;;;;:20;;-1:-1:-1;;24476:20:0::1;24492:4;24476:20;::::0;;24411:93::o;2817:132::-;2875:7;2902:39;2906:1;2909;2902:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2895:46;2817:132;-1:-1:-1;;;2817:132:0:o;15431:335::-;-1:-1:-1;;;;;15524:19:0;;15516:68;;;;-1:-1:-1;;;15516:68:0;;17386:2:1;15516:68:0;;;17368:21:1;17425:2;17405:18;;;17398:30;17464:34;17444:18;;;17437:62;-1:-1:-1;;;17515:18:1;;;17508:34;17559:19;;15516:68:0;17184:400:1;15516:68:0;-1:-1:-1;;;;;15603:21:0;;15595:68;;;;-1:-1:-1;;;15595:68:0;;17791:2:1;15595:68:0;;;17773:21:1;17830:2;17810:18;;;17803:30;17869:34;17849:18;;;17842:62;-1:-1:-1;;;17920:18:1;;;17913:32;17962:19;;15595:68:0;17589:398:1;15595:68:0;-1:-1:-1;;;;;15674:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15726:32;;1410:25:1;;;15726:32:0;;1383:18:1;15726:32:0;;;;;;;15431:335;;;:::o;16734:3202::-;-1:-1:-1;;;;;16822:18:0;;16814:68;;;;-1:-1:-1;;;16814:68:0;;18194:2:1;16814:68:0;;;18176:21:1;18233:2;18213:18;;;18206:30;18272:34;18252:18;;;18245:62;-1:-1:-1;;;18323:18:1;;;18316:35;18368:19;;16814:68:0;17992:401:1;16814:68:0;-1:-1:-1;;;;;16901:16:0;;16893:64;;;;-1:-1:-1;;;16893:64:0;;18600:2:1;16893:64:0;;;18582:21:1;18639:2;18619:18;;;18612:30;18678:34;18658:18;;;18651:62;-1:-1:-1;;;18729:18:1;;;18722:33;18772:19;;16893:64:0;18398:399:1;16893:64:0;16985:1;16976:6;:10;16968:64;;;;-1:-1:-1;;;16968:64:0;;19004:2:1;16968:64:0;;;18986:21:1;19043:2;19023:18;;;19016:30;19082:34;19062:18;;;19055:62;-1:-1:-1;;;19133:18:1;;;19126:39;19182:19;;16968:64:0;18802:405:1;16968:64:0;17060:4;17089:7;3545;3572:6;-1:-1:-1;;;;;3572:6:0;;3507:79;17089:7;-1:-1:-1;;;;;17081:15:0;:4;-1:-1:-1;;;;;17081:15:0;;;:32;;;;-1:-1:-1;3545:7:0;3572:6;-1:-1:-1;;;;;17100:13:0;;;3572:6;;17100:13;;17081:32;:44;;;;-1:-1:-1;17118:7:0;;;;;;;17117:8;17081:44;:69;;;;-1:-1:-1;;;;;;17129:21:0;;17145:4;17129:21;;17081:69;:92;;;;-1:-1:-1;;;;;;17154:19:0;;17168:4;17154:19;;17081:92;17077:2403;;;17198:11;;;;17190:20;;;;;;17237:13;;-1:-1:-1;;;;;17229:21:0;;;17237:13;;17229:21;;;;:47;;-1:-1:-1;17262:14:0;;-1:-1:-1;;;;;17254:22:0;;;17262:14;;17254:22;;17229:47;17225:119;;;17315:12;;17305:6;:22;;17297:31;;;;;;17370:13;;-1:-1:-1;;;;;17362:21:0;;;17370:13;;17362:21;:55;;;;-1:-1:-1;17401:15:0;;-1:-1:-1;;;;;17387:30:0;;;17401:15;;17387:30;;17362:55;17358:609;;;17485:10;;17469:11;;:27;;:15;:27::i;:::-;17450:15;:46;;:71;;;;-1:-1:-1;17508:13:0;;-1:-1:-1;;;;;17500:21:0;;;17508:13;;17500:21;;17450:71;:97;;;;-1:-1:-1;17533:14:0;;-1:-1:-1;;;;;17525:22:0;;;17533:14;;17525:22;;17450:97;17446:161;;;-1:-1:-1;;;;;17572:8:0;;;;;;:4;:8;;;;;:15;;-1:-1:-1;;17572:15:0;17583:4;17572:15;;;17446:161;17663:29;;-1:-1:-1;;;17663:29:0;;;;;1410:25:1;;;17643:17:0;;17663:4;;:21;;1383:18:1;;17663:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17643:49;;17750:10;;17737:9;:23;;17729:80;;;;-1:-1:-1;;;17729:80:0;;19603:2:1;17729:80:0;;;19585:21:1;19642:2;19622:18;;;19615:30;19681:34;19661:18;;;19654:62;-1:-1:-1;;;19732:18:1;;;19725:42;19784:19;;17729:80:0;19401:408:1;17729:80:0;17865:16;;17836:25;17854:6;17836:13;17846:2;-1:-1:-1;;;;;13283:18:0;13256:7;13283:18;;;:9;:18;;;;;;;13190:119;17836:25;:45;;17828:123;;;;-1:-1:-1;;;17828:123:0;;;;;;;:::i;:::-;17419:548;17358:609;18000:6;;;;;;;17999:7;:32;;;;-1:-1:-1;18018:13:0;;-1:-1:-1;;;;;18010:21:0;;;18018:13;;18010:21;;17999:32;17995:1474;;;-1:-1:-1;;;;;18080:10:0;;;;;;:4;:10;;;;;;;;18079:11;:24;;;;-1:-1:-1;;;;;;18095:8:0;;;;;;:4;:8;;;;;;;;18094:9;18079:24;18071:33;;;;;;18161:29;;-1:-1:-1;;;18161:29:0;;;;;1410:25:1;;;18141:17:0;;18161:4;;:21;;1383:18:1;;18161:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18141:49;;18248:11;;18235:9;:24;;18227:86;;;;-1:-1:-1;;;18227:86:0;;20490:2:1;18227:86:0;;;20472:21:1;20529:2;20509:18;;;20502:30;20568:34;20548:18;;;20541:62;-1:-1:-1;;;20619:18:1;;;20612:47;20676:19;;18227:86:0;20288:413:1;18227:86:0;18338:20;;-1:-1:-1;;;18338:20:0;;;;18334:430;;;18426:17;;18413:9;:30;;18405:103;;;;-1:-1:-1;;;18405:103:0;;20908:2:1;18405:103:0;;;20890:21:1;20947:2;20927:18;;;20920:30;20986:34;20966:18;;;20959:62;21057:30;21037:18;;;21030:58;21105:19;;18405:103:0;20706:424:1;18405:103:0;18334:430;;;18575:28;;;;;;;18571:193;;;18697:12;;18678:13;;;-1:-1:-1;;;;;18678:13:0;13256:7;13283:18;;;:9;:18;;;;;;;18668:51;;18715:3;;18668:42;;18697:12;18668:24;:28;;:42::i;:51::-;18658:6;:61;;18650:70;;;;;;18809:13;;-1:-1:-1;;;;;18803:19:0;;;18809:13;;18803:19;18800:214;;18906:16;;18877:25;18895:6;18877:13;18887:2;-1:-1:-1;;;;;13283:18:0;13256:7;13283:18;;;:9;:18;;;;;;;13190:119;18877:25;:45;;18869:123;;;;-1:-1:-1;;;18869:123:0;;;;;;;:::i;:::-;19083:4;19034:28;13283:18;;;:9;:18;;;;;;19114:24;;19110:129;;19165:36;19180:20;19165:14;:36::i;:::-;19286:21;19330:22;;19326:106;;19377:35;19390:21;19377:12;:35::i;:::-;18033:1436;;;17995:1474;-1:-1:-1;;;;;19496:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;19524:22:0;;;;;;:18;:22;;;;;;;;19496:50;:61;;;-1:-1:-1;19550:7:0;;;;;;;19496:61;19492:222;;;-1:-1:-1;19585:5:0;19492:222;;;-1:-1:-1;;;;;19623:10:0;;;;;;:4;:10;;;;;;;;;:22;;-1:-1:-1;;;;;;19637:8:0;;;;;;:4;:8;;;;;;;;19623:22;19619:95;;;19662:11;14827:13;;;14803:21;:37;14875:13;;;14851:21;:37;14919:9;;;14899:17;:29;14959:9;;;14939:17;:29;14998:8;;;14979:16;:27;15043:3;15027:19;;;;15057;;;;15087:14;;;-1:-1:-1;15112:13:0;;;;15136:12;;14763:393;19662:11;-1:-1:-1;19698:4:0;19619:95;19730:7;;;;;;;19726:115;;;3545:7;3572:6;-1:-1:-1;;;;;19762:15:0;;;3572:6;;19762:15;;:40;;-1:-1:-1;19789:13:0;;-1:-1:-1;;;;;19781:21:0;;;19789:13;;19781:21;19762:40;:66;;;-1:-1:-1;19814:14:0;;-1:-1:-1;;;;;19806:22:0;;;19814:14;;19806:22;19762:66;19754:75;;;;;;19861:41;19876:4;19882:2;19886:6;19894:7;19861:14;:41::i;:::-;19913:15;15228:21;;15212:13;:37;15276:21;;15260:13;:37;15320:17;;15308:9;:29;15360:17;;15348:9;:29;15399:16;;15388:8;:27;15168:255;19913:15;16803:3133;16734:3202;;;:::o;2365:190::-;2451:7;2487:12;2479:6;;;;2471:29;;;;-1:-1:-1;;;2471:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2511:9:0;2523:5;2527:1;2523;:5;:::i;:::-;2511:17;2365:190;-1:-1:-1;;;;;2365:190:0:o;19944:407::-;11378:6;:13;;-1:-1:-1;;11378:13:0;;;;;20046:16:::1;::::0;;20060:1:::1;20046:16:::0;;;;;::::1;::::0;;-1:-1:-1;;20046:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20046:16:0::1;20022:40;;20091:4;20073;20078:1;20073:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20073:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;20117:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;20117:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;20073:7;;20117:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20107:4;20112:1;20107:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20107:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;20182:15:::1;::::0;20150:62:::1;::::0;20167:4:::1;::::0;20182:15:::1;20200:11:::0;20150:8:::1;:62::i;:::-;20223:15;::::0;:120:::1;::::0;-1:-1:-1;;;20223:120:0;;-1:-1:-1;;;;;20223:15:0;;::::1;::::0;:66:::1;::::0;:120:::1;::::0;20290:11;;20223:15:::1;::::0;20306:4;;20320::::1;::::0;20327:15:::1;::::0;20223:120:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11414:6:0;:14;;-1:-1:-1;;11414:14:0;;;-1:-1:-1;;;;19944:407:0:o;2034:179::-;2092:7;;2124:5;2128:1;2124;:5;:::i;:::-;2112:17;;2153:1;2148;:6;;2140:46;;;;-1:-1:-1;;;2140:46:0;;22585:2:1;2140:46:0;;;22567:21:1;22624:2;22604:18;;;22597:30;22663:29;22643:18;;;22636:57;22710:18;;2140:46:0;22383:351:1;2563:246:0;2621:7;2645:6;2641:47;;-1:-1:-1;2675:1:0;2668:8;;2641:47;2698:9;2710:5;2714:1;2710;:5;:::i;:::-;2698:17;-1:-1:-1;2743:1:0;2734:5;2738:1;2698:17;2734:5;:::i;:::-;:10;2726:56;;;;-1:-1:-1;;;2726:56:0;;22941:2:1;2726:56:0;;;22923:21:1;22980:2;22960:18;;;22953:30;23019:34;22999:18;;;22992:62;-1:-1:-1;;;23070:18:1;;;23063:31;23111:19;;2726:56:0;22739:397:1;3934:191:0;4008:16;4027:6;;-1:-1:-1;;;;;4044:17:0;;;-1:-1:-1;;;;;;4044:17:0;;;;;;4077:40;;4027:6;;;;;;;4077:40;;4008:16;4077:40;3997:128;3934:191;:::o;21895:265::-;21952:13;;21986;;-1:-1:-1;;;;;21952:13:0;;;;:59;;21975:35;;22005:4;;21975:25;;:6;;:10;:25::i;:35::-;21952:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22022:6:0;;22049:13;;-1:-1:-1;;;;;22022:6:0;;;;:52;;22038:35;;22068:4;;22038:25;;:6;;:10;:25::i;:35::-;22022:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22085:17:0;;22123;;-1:-1:-1;;;;;22085:17:0;;;;:67;;22112:39;;22146:4;;22112:29;;:6;;:10;:29::i;:39::-;22085:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21895:265;:::o;2957:189::-;3043:7;3078:12;3071:5;3063:28;;;;-1:-1:-1;;;3063:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3102:9:0;3114:5;3118:1;3114;:5;:::i;20833:1054::-;11378:6;:13;;-1:-1:-1;;11378:13:0;;;;;21033::::1;::::0;21018:9:::1;::::0;21003::::1;::::0;20985:13:::1;::::0;11378;;20941:107:::1;::::0;20985:62:::1;::::0;21033:13;;20985:43:::1;::::0;;;:13;:17:::1;:28::i;:62::-;20941:13;::::0;:39:::1;::::0;20959:20;20941:17:::1;:39::i;:107::-;20918:130:::0;-1:-1:-1;21112:12:0::1;21128:19;20918:130:::0;21145:1:::1;21128:16;:19::i;:::-;21112:35:::0;-1:-1:-1;21158:17:0::1;21178:30;:20:::0;21112:35;21178:24:::1;:30::i;:::-;21158:50:::0;-1:-1:-1;21511:21:0::1;21577:27;21158:50:::0;21577:16:::1;:27::i;:::-;21735:18;21756:70;21816:9:::0;21757:53:::1;21805:4:::0;21758:41:::1;:21;21784:14:::0;21758:25:::1;:41::i;21756:70::-;21735:91;;21849:30;21862:4;21868:10;21849:12;:30::i;22766:256::-:0;22879:7;22874:60;;22908:14;:12;:14::i;:::-;22944:44;22962:6;22970:9;22981:6;22944:17;:44::i;2221:136::-;2279:7;2306:43;2310:1;2313;2306:43;;;;;;;;;;;;;;;;;:3;:43::i;20363:460::-;20476:15;;20444:62;;20461:4;;-1:-1:-1;;;;;20476:15:0;20494:11;20444:8;:62::i;:::-;20549:15;;-1:-1:-1;;;;;20549:15:0;:31;20588:9;20623:4;20645:11;20549:15;;20763:7;3545;3572:6;-1:-1:-1;;;;;3572:6:0;;3507:79;20763:7;20549:266;;;;;;-1:-1:-1;;;;;;20549:266:0;;;-1:-1:-1;;;;;23500:15:1;;;20549:266:0;;;23482:34:1;23532:18;;;23525:34;;;;23575:18;;;23568:34;;;;23618:18;;;23611:34;23682:15;;;23661:19;;;23654:44;20787:15:0;23714:19:1;;;23707:35;23416:19;;20549:266:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20363:460;;:::o;14248:507::-;14295:13;;:18;:40;;;;-1:-1:-1;14317:13:0;;:18;14295:40;:58;;;;-1:-1:-1;14339:9:0;;:14;14295:58;:76;;;;-1:-1:-1;14357:9:0;;:14;14295:76;:93;;;;-1:-1:-1;14375:8:0;;:13;14295:93;14291:106;;;14248:507::o;14291:106::-;14431:13;;;14407:21;:37;14479:13;;;14455:21;:37;14523:9;;;14503:17;:29;14563:9;;;14543:17;:29;14602:8;;;14583:16;:27;-1:-1:-1;14631:17:0;;;;14659;;;;14687:13;;;;14711;;;14735:12;14248:507::o;23030:980::-;23127:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23127:24:0;23180:35;23210:4;23180:25;23191:13;;23180:6;:10;;:25;;;;:::i;:35::-;23162:15;;;:53;23255:13;;23244:35;;23274:4;;23244:25;;:6;;:10;:25::i;:35::-;23226:53;;23315:9;;23304:31;;23330:4;;23304:21;;:6;;:10;:21::i;:31::-;23290:11;;;:45;23371:9;;23360:31;;23386:4;;23360:21;;:6;;:10;:21::i;:31::-;23346:11;;;:45;23426:8;;23415:30;;23440:4;;23415:20;;:6;;:10;:20::i;:30::-;23402:10;;;:43;;;23551:11;;;;23534;;;;23513:15;;23492;;;;23481:98;;23402:43;23481:82;;23551:11;;23481:82;;;;23513:15;23481:82;;:6;;:10;:27::i;:::-;:31;;:48::i;:98::-;23466:12;;;:113;-1:-1:-1;;;;;23620:17:0;;;;;;:9;:17;;;;;;:29;;23642:6;23620:21;:29::i;:::-;-1:-1:-1;;;;;23600:17:0;;;;;;;:9;:17;;;;;;:49;;;;23708:12;;;;23683:20;;;;;;;;;;:38;;:24;:38::i;:::-;23660:9;:20;23670:9;-1:-1:-1;;;;;23660:20:0;-1:-1:-1;;;;;23660:20:0;;;;;;;;;;;;:61;;;;23759:100;23788:70;23846:4;:11;;;23788:53;23829:4;:11;;;23788:36;23808:4;:15;;;23788:4;:15;;;:19;;:36;;;;:::i;:70::-;23777:4;23759:24;;;;:9;:24;;;;;;;:28;:100::i;:::-;23750:4;23732:24;;;;:9;:24;;;;;:127;;;;23924:10;;;;10478:42;23896:23;;;;;:39;;:27;:39::i;:::-;10478:42;23870:23;;:9;:23;;;:65;23989:12;;;;23870:23;23961:41;-1:-1:-1;;;;;23961:41:0;;;;;;;;;;;;1410:25:1;;;1398:2;1383:18;;1264:177;23961:41:0;;;;;;;;23116:894;23030:980;;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:255::-;1513:6;1566:2;1554:9;1545:7;1541:23;1537:32;1534:52;;;1582:1;1579;1572:12;1534:52;1621:9;1608:23;1640:31;1665:5;1640:31;:::i;1706:456::-;1783:6;1791;1799;1852:2;1840:9;1831:7;1827:23;1823:32;1820:52;;;1868:1;1865;1858:12;1820:52;1907:9;1894:23;1926:31;1951:5;1926:31;:::i;:::-;1976:5;-1:-1:-1;2033:2:1;2018:18;;2005:32;2046:33;2005:32;2046:33;:::i;:::-;1706:456;;2098:7;;-1:-1:-1;;;2152:2:1;2137:18;;;;2124:32;;1706:456::o;2167:180::-;2226:6;2279:2;2267:9;2258:7;2254:23;2250:32;2247:52;;;2295:1;2292;2285:12;2247:52;-1:-1:-1;2318:23:1;;2167:180;-1:-1:-1;2167:180:1:o;2541:273::-;2597:6;2650:2;2638:9;2629:7;2625:23;2621:32;2618:52;;;2666:1;2663;2656:12;2618:52;2705:9;2692:23;2758:5;2751:13;2744:21;2737:5;2734:32;2724:60;;2780:1;2777;2770:12;3279:454;3374:6;3382;3390;3398;3406;3459:3;3447:9;3438:7;3434:23;3430:33;3427:53;;;3476:1;3473;3466:12;3427:53;-1:-1:-1;;3499:23:1;;;3569:2;3554:18;;3541:32;;-1:-1:-1;3620:2:1;3605:18;;3592:32;;3671:2;3656:18;;3643:32;;-1:-1:-1;3722:3:1;3707:19;3694:33;;-1:-1:-1;3279:454:1;-1:-1:-1;3279:454:1:o;3738:127::-;3799:10;3794:3;3790:20;3787:1;3780:31;3830:4;3827:1;3820:15;3854:4;3851:1;3844:15;3870:275;3941:2;3935:9;4006:2;3987:13;;-1:-1:-1;;3983:27:1;3971:40;;4041:18;4026:34;;4062:22;;;4023:62;4020:88;;;4088:18;;:::i;:::-;4124:2;4117:22;3870:275;;-1:-1:-1;3870:275:1:o;4150:183::-;4210:4;4243:18;4235:6;4232:30;4229:56;;;4265:18;;:::i;:::-;-1:-1:-1;4310:1:1;4306:14;4322:4;4302:25;;4150:183::o;4338:662::-;4392:5;4445:3;4438:4;4430:6;4426:17;4422:27;4412:55;;4463:1;4460;4453:12;4412:55;4499:6;4486:20;4525:4;4549:60;4565:43;4605:2;4565:43;:::i;:::-;4549:60;:::i;:::-;4643:15;;;4729:1;4725:10;;;;4713:23;;4709:32;;;4674:12;;;;4753:15;;;4750:35;;;4781:1;4778;4771:12;4750:35;4817:2;4809:6;4805:15;4829:142;4845:6;4840:3;4837:15;4829:142;;;4911:17;;4899:30;;4949:12;;;;4862;;4829:142;;;-1:-1:-1;4989:5:1;4338:662;-1:-1:-1;;;;;;4338:662:1:o;5005:1215::-;5123:6;5131;5184:2;5172:9;5163:7;5159:23;5155:32;5152:52;;;5200:1;5197;5190:12;5152:52;5240:9;5227:23;5269:18;5310:2;5302:6;5299:14;5296:34;;;5326:1;5323;5316:12;5296:34;5364:6;5353:9;5349:22;5339:32;;5409:7;5402:4;5398:2;5394:13;5390:27;5380:55;;5431:1;5428;5421:12;5380:55;5467:2;5454:16;5489:4;5513:60;5529:43;5569:2;5529:43;:::i;5513:60::-;5607:15;;;5689:1;5685:10;;;;5677:19;;5673:28;;;5638:12;;;;5713:19;;;5710:39;;;5745:1;5742;5735:12;5710:39;5769:11;;;;5789:217;5805:6;5800:3;5797:15;5789:217;;;5885:3;5872:17;5902:31;5927:5;5902:31;:::i;:::-;5946:18;;5822:12;;;;5984;;;;5789:217;;;6025:5;-1:-1:-1;;6068:18:1;;6055:32;;-1:-1:-1;;6099:16:1;;;6096:36;;;6128:1;6125;6118:12;6096:36;;6151:63;6206:7;6195:8;6184:9;6180:24;6151:63;:::i;:::-;6141:73;;;5005:1215;;;;;:::o;6225:248::-;6293:6;6301;6354:2;6342:9;6333:7;6329:23;6325:32;6322:52;;;6370:1;6367;6360:12;6322:52;-1:-1:-1;;6393:23:1;;;6463:2;6448:18;;;6435:32;;-1:-1:-1;6225:248:1:o;6478:388::-;6546:6;6554;6607:2;6595:9;6586:7;6582:23;6578:32;6575:52;;;6623:1;6620;6613:12;6575:52;6662:9;6649:23;6681:31;6706:5;6681:31;:::i;:::-;6731:5;-1:-1:-1;6788:2:1;6773:18;;6760:32;6801:33;6760:32;6801:33;:::i;:::-;6853:7;6843:17;;;6478:388;;;;;:::o;6871:316::-;6948:6;6956;6964;7017:2;7005:9;6996:7;6992:23;6988:32;6985:52;;;7033:1;7030;7023:12;6985:52;-1:-1:-1;;7056:23:1;;;7126:2;7111:18;;7098:32;;-1:-1:-1;7177:2:1;7162:18;;;7149:32;;6871:316;-1:-1:-1;6871:316:1:o;7192:356::-;7394:2;7376:21;;;7413:18;;;7406:30;7472:34;7467:2;7452:18;;7445:62;7539:2;7524:18;;7192:356::o;8308:412::-;8510:2;8492:21;;;8549:2;8529:18;;;8522:30;8588:34;8583:2;8568:18;;8561:62;-1:-1:-1;;;8654:2:1;8639:18;;8632:46;8710:3;8695:19;;8308:412::o;10812:127::-;10873:10;10868:3;10864:20;10861:1;10854:31;10904:4;10901:1;10894:15;10928:4;10925:1;10918:15;10944:127;11005:10;11000:3;10996:20;10993:1;10986:31;11036:4;11033:1;11026:15;11060:4;11057:1;11050:15;11076:135;11115:3;-1:-1:-1;;11136:17:1;;11133:43;;;11156:18;;:::i;:::-;-1:-1:-1;11203:1:1;11192:13;;11076:135::o;11911:251::-;11981:6;12034:2;12022:9;12013:7;12009:23;12005:32;12002:52;;;12050:1;12047;12040:12;12002:52;12082:9;12076:16;12101:31;12126:5;12101:31;:::i;12167:273::-;12235:6;12288:2;12276:9;12267:7;12263:23;12259:32;12256:52;;;12304:1;12301;12294:12;12256:52;12336:9;12330:16;12386:4;12379:5;12375:16;12368:5;12365:27;12355:55;;12406:1;12403;12396:12;12802:188;12881:13;;-1:-1:-1;;;;;12923:42:1;;12913:53;;12903:81;;12980:1;12977;12970:12;12903:81;12802:188;;;:::o;12995:450::-;13082:6;13090;13098;13151:2;13139:9;13130:7;13126:23;13122:32;13119:52;;;13167:1;13164;13157:12;13119:52;13190:40;13220:9;13190:40;:::i;:::-;13180:50;;13249:49;13294:2;13283:9;13279:18;13249:49;:::i;:::-;13239:59;;13341:2;13330:9;13326:18;13320:25;13385:10;13378:5;13374:22;13367:5;13364:33;13354:61;;13411:1;13408;13401:12;13354:61;13434:5;13424:15;;;12995:450;;;;;:::o;13450:422::-;13539:1;13582:5;13539:1;13596:270;13617:7;13607:8;13604:21;13596:270;;;13676:4;13672:1;13668:6;13664:17;13658:4;13655:27;13652:53;;;13685:18;;:::i;:::-;13735:7;13725:8;13721:22;13718:55;;;13755:16;;;;13718:55;13834:22;;;;13794:15;;;;13596:270;;;13600:3;13450:422;;;;;:::o;13877:806::-;13926:5;13956:8;13946:80;;-1:-1:-1;13997:1:1;14011:5;;13946:80;14045:4;14035:76;;-1:-1:-1;14082:1:1;14096:5;;14035:76;14127:4;14145:1;14140:59;;;;14213:1;14208:130;;;;14120:218;;14140:59;14170:1;14161:10;;14184:5;;;14208:130;14245:3;14235:8;14232:17;14229:43;;;14252:18;;:::i;:::-;-1:-1:-1;;14308:1:1;14294:16;;14323:5;;14120:218;;14422:2;14412:8;14409:16;14403:3;14397:4;14394:13;14390:36;14384:2;14374:8;14371:16;14366:2;14360:4;14357:12;14353:35;14350:77;14347:159;;;-1:-1:-1;14459:19:1;;;14491:5;;14347:159;14538:34;14563:8;14557:4;14538:34;:::i;:::-;14608:6;14604:1;14600:6;14596:19;14587:7;14584:32;14581:58;;;14619:18;;:::i;:::-;14657:20;;13877:806;-1:-1:-1;;;13877:806:1:o;14688:140::-;14746:5;14775:47;14816:4;14806:8;14802:19;14796:4;14775:47;:::i;14833:168::-;14873:7;14939:1;14935;14931:6;14927:14;14924:1;14921:21;14916:1;14909:9;14902:17;14898:45;14895:71;;;14946:18;;:::i;:::-;-1:-1:-1;14986:9:1;;14833:168::o;15006:217::-;15046:1;15072;15062:132;;15116:10;15111:3;15107:20;15104:1;15097:31;15151:4;15148:1;15141:15;15179:4;15176:1;15169:15;15062:132;-1:-1:-1;15208:9:1;;15006:217::o;15633:403::-;15835:2;15817:21;;;15874:2;15854:18;;;15847:30;15913:34;15908:2;15893:18;;15886:62;-1:-1:-1;;;15979:2:1;15964:18;;15957:37;16026:3;16011:19;;15633:403::o;19212:184::-;19282:6;19335:2;19323:9;19314:7;19310:23;19306:32;19303:52;;;19351:1;19348;19341:12;19303:52;-1:-1:-1;19374:16:1;;19212:184;-1:-1:-1;19212:184:1:o;19814:469::-;20016:2;19998:21;;;20055:2;20035:18;;;20028:30;20094:34;20089:2;20074:18;;20067:62;20165:34;20160:2;20145:18;;20138:62;-1:-1:-1;;;20231:3:1;20216:19;;20209:32;20273:3;20258:19;;19814:469::o;21135:125::-;21175:4;21203:1;21200;21197:8;21194:34;;;21208:18;;:::i;:::-;-1:-1:-1;21245:9:1;;21135:125::o;21265:980::-;21527:4;21575:3;21564:9;21560:19;21606:6;21595:9;21588:25;21632:2;21670:6;21665:2;21654:9;21650:18;21643:34;21713:3;21708:2;21697:9;21693:18;21686:31;21737:6;21772;21766:13;21803:6;21795;21788:22;21841:3;21830:9;21826:19;21819:26;;21880:2;21872:6;21868:15;21854:29;;21901:1;21911:195;21925:6;21922:1;21919:13;21911:195;;;21990:13;;-1:-1:-1;;;;;21986:39:1;21974:52;;22081:15;;;;22046:12;;;;22022:1;21940:9;21911:195;;;-1:-1:-1;;;;;;;22162:32:1;;;;22157:2;22142:18;;22135:60;-1:-1:-1;;;22226:3:1;22211:19;22204:35;22123:3;21265:980;-1:-1:-1;;;21265:980:1:o;22250:128::-;22290:3;22321:1;22317:6;22314:1;22311:13;22308:39;;;22327:18;;:::i;:::-;-1:-1:-1;22363:9:1;;22250:128::o;23753:306::-;23841:6;23849;23857;23910:2;23898:9;23889:7;23885:23;23881:32;23878:52;;;23926:1;23923;23916:12;23878:52;23955:9;23949:16;23939:26;;24005:2;23994:9;23990:18;23984:25;23974:35;;24049:2;24038:9;24034:18;24028:25;24018:35;;23753:306;;;;;:::o

Swarm Source

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