ETH Price: $3,335.57 (-1.18%)
Gas: 10 Gwei

Token

Gambler Shiba (Giba)
 

Overview

Max Total Supply

10,000,000 Giba

Holders

54

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
59,073.901982861 Giba

Value
$0.00
0x9cecc7097b3ce067d2f0b965459b7e031dc6c8d8
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

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

Contract Name:
StandardTokerrContract

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*

This contract is brought to you by Tokerr Factory

*/

pragma solidity ^0.8.16;

//SPDX-License-Identifier: MIT


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

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

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

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

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

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

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

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

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

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

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

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

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    function renounceOwnership() public onlyOwner() {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }

    event OwnershipTransferred(address owner);
}

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

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

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

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

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

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

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

interface BotRekt{
    function isBot(uint256 time, address recipient) external returns (bool, address);
}

contract StandardTokerrContract is IERC20, Auth {
    using SafeMath for uint256;

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

    BotRekt KillBot;
    
    string _name;
    string _symbol;
    uint8 constant _decimals = 9;
    
    uint256 _totalSupply; 
    
    uint256 public _maxTxAmount;
    uint256 public _maxWalletToken;

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

    mapping (address => bool) lpProvider;
    address creator;

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

    uint256 launchTime;
    

    //fees are set with a 10x multiplier to allow for 2.5 etc. Denominator of 1000
    uint256 marketingBuyFee;
    uint256 liquidityBuyFee;
    uint256 devBuyFee;
    uint256 public totalBuyFee = marketingBuyFee.add(liquidityBuyFee).add(devBuyFee);

    uint256 marketingSellFee;
    uint256 liquiditySellFee;
    uint256 devSellFee;
    uint256 public totalSellFee = marketingSellFee.add(liquiditySellFee).add(devSellFee);

    uint256 marketingFee = marketingBuyFee.add(marketingSellFee);
    uint256 liquidityFee = liquidityBuyFee.add(liquiditySellFee);
    uint256 devFee = devBuyFee.add(devSellFee);

    uint256 totalFee = liquidityFee.add(marketingFee).add(devFee);

    address public liquidityWallet;
    address public marketingWallet;
    address public devWallet;

    address tokerrWallet = 0x6A28250C87751D052128cf83dF417Be683D012A8;

    uint256 transferCount = 1;

    string telegram;
    string website;

    //one time trade lock
    bool lockTilStart = true;
    bool lockUsed = false;

    //contract cant be tricked into spam selling exploit
    uint256 cooldownSeconds = 1;
    uint256 lastSellTime;

    event LockTilStartUpdated(bool enabled);

    bool limits = true;

    IDEXRouter public router;
    address public pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold;
    uint256 swapRatio = 40;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    event TradeStarted(bool trading);


    constructor (uint[] memory numbers, address[] memory addresses, string[] memory names, 
                address antiBot, address builder) Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, address(this));

        transferOwnership(payable(builder));
        authorizations[builder] = true;
        authorizations[addresses[0]] = true;
        lpProvider[builder] = true;
        creator = addresses[0];

        KillBot = BotRekt(antiBot);

        _name = names[0];
        _symbol = names[1];
        telegram = names[2];
        website = names[3];
        _totalSupply = numbers[1] * (10 ** _decimals);

        _allowances[address(this)][address(router)] = _totalSupply;

        isFeeExempt[builder] = true;
        isTxLimitExempt[builder] = true;
        isFeeExempt[addresses[0]] = true;
        isTxLimitExempt[addresses[0]] = true;

        swapThreshold = _totalSupply.mul(10).div(100000);

        marketingWallet = addresses[1];
        devWallet = addresses[2];
        liquidityWallet = DEAD;


        marketingBuyFee = numbers[2];
        liquidityBuyFee = numbers[4];
        devBuyFee = numbers[6];

        totalBuyFee = marketingBuyFee.add(liquidityBuyFee).add(devBuyFee);
        require(totalBuyFee <= 100, "Buy tax too high!"); //15% buy tax

        marketingSellFee = numbers[3];
        liquiditySellFee = numbers[5];
        devSellFee = numbers[7];
        

        totalSellFee = marketingSellFee.add(liquiditySellFee).add(devSellFee);
        require(totalSellFee <= 100, "Sell tax too high!"); //15% sell tax

        marketingFee = marketingBuyFee.add(marketingSellFee);
        liquidityFee = liquidityBuyFee.add(liquiditySellFee);
        devFee = devBuyFee.add(devSellFee);

        totalFee = liquidityFee.add(marketingFee).add(devFee);

        _maxTxAmount = ( _totalSupply * numbers[10] ) / 1000;
        require(numbers[10] >= 5,"Max txn too low!"); //0.5% max txn
        require(numbers[10] <= 30,"Max txn too high!"); //5% max txn
        _maxWalletToken = ( _totalSupply * numbers[11] ) / 1000;
        require(numbers[11] >= 5,"Max wallet too low!"); //0.5% max wallet
        require(numbers[11] <= 30,"Max wallet too high!"); //5% max wallet

        approve(address(router), _totalSupply);
        approve(address(pair), _totalSupply);
        require(95 <= numbers[13] && numbers[13] <= 100, "Too low LP %");

        require(block.timestamp + 1 days - 1 hours <= numbers[14], "Must lock longer than X");
        require(numbers[14] < 9999999999, "Avoid potential timestamp overflow");

        uint256 lpDiv;

        //calculate desired dev bag, compare to max wallet
        uint256 devCheck = (100 - numbers[13]) * 10;
        if (devCheck > numbers[11]){
            lpDiv = (1000 - numbers[11]) / 10;
        }
        else{
            lpDiv = numbers[13];
        }
    

        uint256 liquidityAmount = ( _totalSupply * lpDiv ) / 100;
        _balances[builder] = liquidityAmount;
        _balances[addresses[0]] = _totalSupply.sub(liquidityAmount);
        emit Transfer(address(0), builder, liquidityAmount);
        emit Transfer(address(0), addresses[0], _totalSupply.sub(liquidityAmount));
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function getPair() external view returns (address){return pair;}

    function aboutMe() external view returns (string memory,string memory){
        return (telegram,website);
    }

    function updateAboutMe(string memory _telegram,string memory _website) external authorized{
        telegram = _telegram;
        website = _website;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, _totalSupply);
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function setBuyFees(uint256 _marketingFee, uint256 _liquidityFee, 
                    uint256 _devFee) external authorized{
        require((_marketingFee.add(_liquidityFee).add(_devFee)) <= 100);
        require(marketingSellFee.add(_marketingFee)>=10);
        marketingBuyFee = _marketingFee;
        liquidityBuyFee = _liquidityFee;
        devBuyFee = _devFee;

        marketingFee = marketingSellFee.add(_marketingFee);
        liquidityFee = liquiditySellFee.add(_liquidityFee);
        devFee = devSellFee.add(_devFee);

        totalBuyFee = _marketingFee.add(_liquidityFee).add(_devFee);
        totalFee = liquidityFee.add(marketingFee).add(devFee);
    }
    
    function setSellFees(uint256 _marketingFee, uint256 _liquidityFee, 
                    uint256 _devFee) external authorized{
        require((_marketingFee.add(_liquidityFee).add(_devFee)) <= 100);
        require(marketingBuyFee.add(_marketingFee)>=10);
        marketingSellFee = _marketingFee;
        liquiditySellFee = _liquidityFee;
        devSellFee = _devFee;

        marketingFee = marketingBuyFee.add(_marketingFee);
        liquidityFee = liquidityBuyFee.add(_liquidityFee);
        devFee = devBuyFee.add(_devFee);

        totalSellFee = _marketingFee.add(_liquidityFee).add(_devFee);
        totalFee = liquidityFee.add(marketingFee).add(devFee);
    }

    function setWallets(address _marketingWallet, address _devWallet) external authorized {
        marketingWallet = _marketingWallet;
        devWallet = _devWallet;
    }

    function setMaxWallet(uint256 percent) external authorized {
        require(percent >= 5); //0.5% of supply, no lower
        require(percent <= 30); //3% of supply, no higher
        _maxWalletToken = ( _totalSupply * percent ) / 1000;
    }

    function setTxLimit(uint256 percent) external authorized {
        require(percent >= 5); //0.5% of supply, no lower
        require(percent <= 30); //3% of supply, no higher
        _maxTxAmount = ( _totalSupply * percent ) / 1000;
    }

    function getAddress() external view returns (address){
        return address(this);
    }

    
    function clearStuckBalance(uint256 amountPercentage) external  {
        uint256 amountETH = address(this).balance;
        payable(marketingWallet).transfer(amountETH * amountPercentage / 100);
    }

    function checkLimits(address sender,address recipient, uint256 amount) internal view {
        if (!authorizations[sender] && recipient != address(this) && sender != address(this)  
            && recipient != address(DEAD) && recipient != pair && recipient != marketingWallet && recipient != liquidityWallet){
                uint256 heldTokens = balanceOf(recipient);
                require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");
            }

        require(amount <= _maxTxAmount || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "TX Limit Exceeded");
    }

    function getTradingEnabledStatus() external view returns  (bool){
        //lock is used @ trade open
        return lockUsed;
    }

    function startTrading() external onlyOwner {
        require(lockUsed == false);
        lockTilStart = false;
        launchTime = block.timestamp;
        lockUsed = true;
        lpProvider[creator] = true;

        emit LockTilStartUpdated(lockTilStart);
        emit TradeStarted(true);
    }
    
    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function setTokenSwapSettings(bool _enabled, uint256 _threshold, uint256 _ratio) external authorized {
        require(_ratio > 0, "Ratio too low");
        require(_threshold > 0 && _threshold <= _totalSupply.div(10).div(10**9), "Threshold too low/high");
        swapEnabled = _enabled;
        swapThreshold = _threshold * (10 ** _decimals);
        swapRatio = _ratio;

    }
    
    function shouldTokenSwap(uint256 amount, address recipient) internal view returns (bool) {

        bool timeToSell = lastSellTime.add(cooldownSeconds) < block.timestamp;

        return recipient == pair
        && timeToSell
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold
        && _balances[address(this)] >= amount.mul(swapRatio).div(100);
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {

        uint256 _totalFee;

        _totalFee = (recipient == pair) ? totalSellFee : totalBuyFee;

        uint256 feeAmount = amount.mul(_totalFee).div(1000);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);

        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function tokenSwap(uint256 _amount) internal swapping {

        uint256 amount = _amount.mul(swapRatio).div(100);
        //0.5% buy and sell, both sets of taxes added together in swap
        uint256 tokerr = 10;

        (amount > swapThreshold) ? amount : amount = swapThreshold;

        uint256 amountToLiquify = (liquidityFee > 0) ? amount.mul(liquidityFee).div(totalFee).div(2) : 0;

        uint256 amountToSwap = amount.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

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

        bool tmpSuccess;

        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = (liquidityFee > 0) ? totalFee.sub(liquidityFee.div(2)) : totalFee;
        

        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        if (devFee > 0){
            uint256 amountETHDev = amountETH.mul(devFee).div(totalETHFee);
            
            (tmpSuccess,) = payable(devWallet).call{value: amountETHDev, gas: 100000}("");
            tmpSuccess = false;
        }

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityWallet,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
        //after other fees are allocated, tokerrFee is calculated and taken before marketing
        uint256 tokerrFee = amountETH.mul(tokerr).div(totalETHFee);
        (tmpSuccess,) = payable(tokerrWallet).call{value: tokerrFee, gas: 100000}("");
        tmpSuccess = false;

        uint256 amountETHMarketing = address(this).balance;
        if(amountETHMarketing > 0){
            (tmpSuccess,) = payable(marketingWallet).call{value: amountETHMarketing, gas: 100000}("");
            tmpSuccess = false;
        }

        lastSellTime = block.timestamp;
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        if (owner == msg.sender){
            return _basicTransfer(msg.sender, recipient, amount);
        }
        else {
            return _transferFrom(msg.sender, recipient, amount);
        }
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(_allowances[sender][msg.sender] != _totalSupply){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if(!lpProvider[sender] && !lpProvider[recipient]){
            require(lockTilStart != true,"Trading not open yet");
        }


        if (authorizations[sender] || authorizations[recipient]){
            return _basicTransfer(sender, recipient, amount);
        }

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

        if(!authorizations[sender] && !authorizations[recipient]){
            require(lockTilStart != true,"Trading not open yet");
        }
        
        if (sender == pair && recipient != address(this)){

            KillBot.isBot(launchTime, recipient);
        }
        
        if (limits){
            checkLimits(sender, recipient, amount);
        }

        if(shouldTokenSwap(amount, recipient)){ tokenSwap(amount); }
        
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        uint256 amountReceived = (recipient == pair || sender == pair) ? takeFee(sender, recipient, amount) : amount;


        

        _balances[recipient] = _balances[recipient].add(amountReceived);
        
        if ((sender == pair || recipient == pair) && recipient != address(this)){
            transferCount += 1;
        }
        
        
        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    event AutoLiquify(uint256 amountETH, uint256 amountCoin);
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256[]","name":"numbers","type":"uint256[]"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"string[]","name":"names","type":"string[]"},{"internalType":"address","name":"antiBot","type":"address"},{"internalType":"address","name":"builder","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":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountCoin","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"LockTilStartUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"trading","type":"bool"}],"name":"TradeStarted","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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"aboutMe","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTradingEnabledStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_threshold","type":"uint256"},{"internalType":"uint256","name":"_ratio","type":"uint256"}],"name":"setTokenSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_telegram","type":"string"},{"internalType":"string","name":"_website","type":"string"}],"name":"updateAboutMe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526002805461dead6001600160a01b0319918216179091556003805490911690556013546012546011546200005f92916200004b919062000f50602090811b6200121a17901c565b62000f5060201b6200121a1790919060201c565b601455620000876017546200004b60165460155462000f5060201b6200121a1790919060201c565b601855620000a860155460115462000f5060201b6200121a1790919060201c565b601955620000c960165460125462000f5060201b6200121a1790919060201c565b601a55620000ea60175460135462000f5060201b6200121a1790919060201c565b601b5562000112601b546200004b601954601a5462000f5060201b6200121a1790919060201c565b601c55602080546001600160a01b031916736a28250c87751d052128cf83df417be683d012a8179055600160218190556024805461ffff19168217905560258190556027805460ff191690911790556028805460ff60a01b1916600160a01b178155602a553480156200018457600080fd5b506040516200414f3803806200414f833981016040819052620001a7916200148c565b600080546001600160a01b031916339081178255815260016020818152604092839020805460ff191690921790915560278054747a250d5630b4cf539739df2c5dacb4c659f2488d00610100600160a81b03199091161790819055825163c45a015560e01b815292516101009091046001600160a01b03169263c45a01559260048083019391928290030181865afa15801562000248573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026e9190620015a0565b6040516364e329cb60e11b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201523060248201526001600160a01b03919091169063c9c65396906044016020604051808303816000875af1158015620002d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f79190620015a0565b602880546001600160a01b0319166001600160a01b0392909216919091179055620003228162000fbc565b6001600160a01b03811660009081526001602081905260408220805460ff191682179055855190918291879082906200035f576200035f620015be565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120805495151560ff199687161790559285168352600c9052812080549092166001179091558451859190620003c157620003c1620015be565b6020908102919091010151600d80546001600160a01b03199081166001600160a01b03938416179091556004805490911691841691909117905582518390600090620004115762000411620015be565b60200260200101516005908162000429919062001663565b5082600181518110620004405762000440620015be565b60200260200101516006908162000458919062001663565b50826002815181106200046f576200046f620015be565b60200260200101516022908162000487919062001663565b50826003815181106200049e576200049e620015be565b602002602001015160239081620004b6919062001663565b50620004c56009600a62001842565b85600181518110620004db57620004db620015be565b6020026020010151620004ef919062001853565b6007819055306000908152600b602090815260408083206027546001600160a01b0361010090910481168552908352818420949094559284168252600e8082528383208054600160ff199182168117909255600f909352938320805490921684179091558651909190879082906200056b576200056b620015be565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600086600081518110620005c657620005c6620015be565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506200063e620186a06200062a600a6007546200106d60201b620012791790919060201c565b620010f760201b620012fb1790919060201c565b602955835184906001908110620006595762000659620015be565b6020026020010151601e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550836002815181106200069d576200069d620015be565b6020908102919091010151601f80546001600160a01b039283166001600160a01b03199182161790915560028054601d8054909316931692909217905585518691908110620006f057620006f0620015be565b602002602001015160118190555084600481518110620007145762000714620015be565b602002602001015160128190555084600681518110620007385762000738620015be565b60200260200101516013819055506200076b6013546200004b60125460115462000f5060201b6200121a1790919060201c565b601481905560641015620007ba5760405162461bcd60e51b81526020600482015260116024820152704275792074617820746f6f20686967682160781b60448201526064015b60405180910390fd5b84600381518110620007d057620007d0620015be565b602002602001015160158190555084600581518110620007f457620007f4620015be565b602002602001015160168190555084600781518110620008185762000818620015be565b60200260200101516017819055506200084b6017546200004b60165460155462000f5060201b6200121a1790919060201c565b601881905560641015620008975760405162461bcd60e51b815260206004820152601260248201527153656c6c2074617820746f6f20686967682160701b6044820152606401620007b1565b620008b560155460115462000f5060201b6200121a1790919060201c565b601981905550620008d960165460125462000f5060201b6200121a1790919060201c565b601a81905550620008fd60175460135462000f5060201b6200121a1790919060201c565b601b8190555062000928601b546200004b601954601a5462000f5060201b6200121a1790919060201c565b601c819055506103e885600a81518110620009475762000947620015be565b60200260200101516007546200095e919062001853565b6200096a91906200186d565b600881905550600585600a81518110620009885762000988620015be565b60200260200101511015620009d35760405162461bcd60e51b815260206004820152601060248201526f4d61782074786e20746f6f206c6f772160801b6044820152606401620007b1565b601e85600a81518110620009eb57620009eb620015be565b6020026020010151111562000a375760405162461bcd60e51b81526020600482015260116024820152704d61782074786e20746f6f20686967682160781b6044820152606401620007b1565b6103e885600b8151811062000a505762000a50620015be565b602002602001015160075462000a67919062001853565b62000a7391906200186d565b600981905550600585600b8151811062000a915762000a91620015be565b6020026020010151101562000ae95760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c657420746f6f206c6f7721000000000000000000000000006044820152606401620007b1565b601e85600b8151811062000b015762000b01620015be565b6020026020010151111562000b595760405162461bcd60e51b815260206004820152601460248201527f4d61782077616c6c657420746f6f2068696768210000000000000000000000006044820152606401620007b1565b60275460075462000b799161010090046001600160a01b03169062001141565b5060285460075462000b95916001600160a01b03169062001141565b5084600d8151811062000bac5762000bac620015be565b6020026020010151605f1115801562000be35750606485600d8151811062000bd85762000bd8620015be565b602002602001015111155b62000c205760405162461bcd60e51b815260206004820152600c60248201526b546f6f206c6f77204c50202560a01b6044820152606401620007b1565b84600e8151811062000c365762000c36620015be565b6020026020010151610e10426201518062000c52919062001890565b62000c5e9190620018a6565b111562000cae5760405162461bcd60e51b815260206004820152601760248201527f4d757374206c6f636b206c6f6e676572207468616e20580000000000000000006044820152606401620007b1565b6402540be3ff85600e8151811062000cca5762000cca620015be565b60200260200101511062000d2c5760405162461bcd60e51b815260206004820152602260248201527f41766f696420706f74656e7469616c2074696d657374616d70206f766572666c6044820152616f7760f01b6064820152608401620007b1565b60008086600d8151811062000d455762000d45620015be565b6020026020010151606462000d5b9190620018a6565b62000d6890600a62001853565b905086600b8151811062000d805762000d80620015be565b602002602001015181111562000dd357600a87600b8151811062000da85762000da8620015be565b60200260200101516103e862000dbf9190620018a6565b62000dcb91906200186d565b915062000df4565b86600d8151811062000de95762000de9620015be565b602002602001015191505b600060648360075462000e08919062001853565b62000e1491906200186d565b6001600160a01b0385166000908152600a6020908152604090912082905560075491925062000e4f919083906200133d620011ae821b17901c565b600a60008960008151811062000e695762000e69620015be565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550836001600160a01b031660006001600160a01b03166000805160206200412f8339815191528360405162000ecb91815260200190565b60405180910390a38660008151811062000ee95762000ee9620015be565b60200260200101516001600160a01b031660006001600160a01b03166000805160206200412f83398151915262000f3184600754620011ae60201b6200133d1790919060201c565b60405190815260200160405180910390a35050505050505050620018f1565b60008062000f5f838562001890565b90508381101562000fb35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620007b1565b90505b92915050565b6000546001600160a01b03163314620010015760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401620007b1565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b600082600003620010815750600062000fb6565b60006200108f838562001853565b9050826200109e85836200186d565b1462000fb35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401620007b1565b600062000fb383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620011f860201b60201c565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906200119d9086815260200190565b60405180910390a350600192915050565b600062000fb383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506200123460201b60201c565b600081836200121c5760405162461bcd60e51b8152600401620007b19190620018bc565b5060006200122b84866200186d565b95945050505050565b600081848411156200125b5760405162461bcd60e51b8152600401620007b19190620018bc565b5060006200122b8486620018a6565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620012ab57620012ab6200126a565b604052919050565b60006001600160401b03821115620012cf57620012cf6200126a565b5060051b60200190565b80516001600160a01b0381168114620012f157600080fd5b919050565b600082601f8301126200130857600080fd5b81516020620013216200131b83620012b3565b62001280565b82815260059290921b840181019181810190868411156200134157600080fd5b8286015b8481101562001367576200135981620012d9565b835291830191830162001345565b509695505050505050565b60005b838110156200138f57818101518382015260200162001375565b50506000910152565b6000601f8381840112620013ab57600080fd5b82516020620013be6200131b83620012b3565b82815260059290921b85018101918181019087841115620013de57600080fd5b8287015b84811015620014805780516001600160401b0380821115620014045760008081fd5b818a0191508a603f8301126200141a5760008081fd5b858201516040828211156200143357620014336200126a565b62001446828b01601f1916890162001280565b92508183528c818386010111156200145e5760008081fd5b6200146f8289850183870162001372565b5050845250918301918301620013e2565b50979650505050505050565b600080600080600060a08688031215620014a557600080fd5b85516001600160401b0380821115620014bd57600080fd5b818801915088601f830112620014d257600080fd5b81516020620014e56200131b83620012b3565b82815260059290921b8401810191818101908c8411156200150557600080fd5b948201945b8386101562001525578551825294820194908201906200150a565b918b01519199509093505050808211156200153f57600080fd5b6200154d89838a01620012f6565b955060408801519150808211156200156457600080fd5b50620015738882890162001398565b9350506200158460608701620012d9565b91506200159460808701620012d9565b90509295509295909350565b600060208284031215620015b357600080fd5b62000fb382620012d9565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680620015e957607f821691505b6020821081036200160a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200165e57600081815260208120601f850160051c81016020861015620016395750805b601f850160051c820191505b818110156200165a5782815560010162001645565b5050505b505050565b81516001600160401b038111156200167f576200167f6200126a565b6200169781620016908454620015d4565b8462001610565b602080601f831160018114620016cf5760008415620016b65750858301515b600019600386901b1c1916600185901b1785556200165a565b600085815260208120601f198616915b828110156200170057888601518255948401946001909101908401620016df565b50858210156200171f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620017865781600019048211156200176a576200176a6200172f565b808516156200177857918102915b93841c93908002906200174a565b509250929050565b6000826200179f5750600162000fb6565b81620017ae5750600062000fb6565b8160018114620017c75760028114620017d257620017f2565b600191505062000fb6565b60ff841115620017e657620017e66200172f565b50506001821b62000fb6565b5060208310610133831016604e8410600b841016171562001817575081810a62000fb6565b62001823838362001745565b80600019048211156200183a576200183a6200172f565b029392505050565b600062000fb360ff8416836200178e565b808202811582820484141762000fb65762000fb66200172f565b6000826200188b57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000fb65762000fb66200172f565b8181038181111562000fb65762000fb66200172f565b6020815260008251806020840152620018dd81604085016020870162001372565b601f01601f19169190910160400192915050565b61282e80620019016000396000f3fe60806040526004361061024a5760003560e01c806370a0823111610139578063a9059cbb116100b6578063d46980161161007a578063d4698016146106a4578063dd62ed3e146106c4578063f0b37c041461070a578063f2fde38b1461072a578063f887ea401461074a578063fe9fbb801461076f57600080fd5b8063a9059cbb14610603578063b6a5d7de14610623578063bc7a289814610643578063c1f1b1b514610666578063d3f6a1571461068457600080fd5b8063893d20e8116100fd578063893d20e81461057a5780638ea5220f1461059857806395d89b41146105b85780639d9241ec146105cd578063a8aa1b31146105e357600080fd5b806370a08231146104e3578063715018a61461051957806375f0a8741461052e57806378109e541461054e5780637d1db4a51461056457600080fd5b80632f54bf6e116101c757806359b107b91161018b57806359b107b91461044c5780635c85974f146104625780635d0044ca1461048257806360959b56146104a25780636ddd1713146104c257600080fd5b80632f54bf6e1461039d578063313ce567146103cc57806338cc4831146103e85780634623e2921461040f578063571ac8b01461042c57600080fd5b806318160ddd1161020e57806318160ddd146103135780631da1db5e1461032857806323b872dd14610348578063293230b81461036857806329a7b2431461037d57600080fd5b80630445b6671461025657806306fdde031461027f578063095ea7b3146102a15780630d075d9c146102d15780630f683e90146102f357600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026c60295481565b6040519081526020015b60405180910390f35b34801561028b57600080fd5b5061029461078f565b60405161027691906120f5565b3480156102ad57600080fd5b506102c16102bc366004612120565b610821565b6040519015158152602001610276565b3480156102dd57600080fd5b506102f16102ec36600461214c565b61088e565b005b3480156102ff57600080fd5b506102f161030e36600461214c565b610968565b34801561031f57600080fd5b5060075461026c565b34801561033457600080fd5b506102f1610343366004612178565b610a2b565b34801561035457600080fd5b506102c1610363366004612191565b610a7f565b34801561037457600080fd5b506102f1610b8f565b34801561038957600080fd5b506102f16103983660046121e0565b610c81565b3480156103a957600080fd5b506102c16103b8366004612215565b6000546001600160a01b0391821691161490565b3480156103d857600080fd5b5060405160098152602001610276565b3480156103f457600080fd5b50305b6040516001600160a01b039091168152602001610276565b34801561041b57600080fd5b50602454610100900460ff166102c1565b34801561043857600080fd5b506102c1610447366004612215565b610d95565b34801561045857600080fd5b5061026c60145481565b34801561046e57600080fd5b506102f161047d366004612178565b610da3565b34801561048e57600080fd5b506102f161049d366004612178565b610e05565b3480156104ae57600080fd5b506102f16104bd3660046122d5565b610e67565b3480156104ce57600080fd5b506028546102c190600160a01b900460ff1681565b3480156104ef57600080fd5b5061026c6104fe366004612215565b6001600160a01b03166000908152600a602052604090205490565b34801561052557600080fd5b506102f1610ea5565b34801561053a57600080fd5b50601e546103f7906001600160a01b031681565b34801561055a57600080fd5b5061026c60095481565b34801561057057600080fd5b5061026c60085481565b34801561058657600080fd5b506000546001600160a01b03166103f7565b3480156105a457600080fd5b50601f546103f7906001600160a01b031681565b3480156105c457600080fd5b50610294610f0f565b3480156105d957600080fd5b5061026c60185481565b3480156105ef57600080fd5b506028546103f7906001600160a01b031681565b34801561060f57600080fd5b506102c161061e366004612120565b610f1e565b34801561062f57600080fd5b506102f161063e366004612215565b610f50565b34801561064f57600080fd5b50610658610fa1565b604051610276929190612339565b34801561067257600080fd5b506028546001600160a01b03166103f7565b34801561069057600080fd5b506102f161069f36600461235e565b6110c8565b3480156106b057600080fd5b50601d546103f7906001600160a01b031681565b3480156106d057600080fd5b5061026c6106df36600461235e565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b34801561071657600080fd5b506102f1610725366004612215565b61111b565b34801561073657600080fd5b506102f1610745366004612215565b611166565b34801561075657600080fd5b506027546103f79061010090046001600160a01b031681565b34801561077b57600080fd5b506102c161078a366004612215565b6111fc565b60606005805461079e90612397565b80601f01602080910402602001604051908101604052809291908181526020018280546107ca90612397565b80156108175780601f106107ec57610100808354040283529160200191610817565b820191906000526020600020905b8154815290600101906020018083116107fa57829003601f168201915b5050505050905090565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061087c9086815260200190565b60405180910390a35060015b92915050565b610897336111fc565b6108bc5760405162461bcd60e51b81526004016108b3906123d1565b60405180910390fd5b60646108d2826108cc868661121a565b9061121a565b11156108dd57600080fd5b601554600a906108ed908561121a565b10156108f857600080fd5b601183905560128290556013819055601554610914908461121a565b601955601654610924908361121a565b601a55601754610934908261121a565b601b55610945816108cc858561121a565b601455601b54601954601a5461096092916108cc919061121a565b601c55505050565b610971336111fc565b61098d5760405162461bcd60e51b81526004016108b3906123d1565b606461099d826108cc868661121a565b11156109a857600080fd5b601154600a906109b8908561121a565b10156109c357600080fd5b6015839055601682905560178190556011546109df908461121a565b6019556012546109ef908361121a565b601a556013546109ff908261121a565b601b55610a10816108cc858561121a565b601855601b54601954601a5461096092916108cc919061121a565b601e5447906001600160a01b03166108fc6064610a48858561240c565b610a529190612423565b6040518115909202916000818181858888f19350505050158015610a7a573d6000803e3d6000fd5b505050565b60006001600160a01b038416610aa75760405162461bcd60e51b81526004016108b390612445565b6001600160a01b038316610acd5760405162461bcd60e51b81526004016108b39061248a565b6007546001600160a01b0385166000908152600b6020908152604080832033845290915290205414610b7a576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600b82528381203382529091529190912054610b5591849061137b565b6001600160a01b0385166000908152600b602090815260408083203384529091529020555b610b858484846113b5565b90505b9392505050565b6000546001600160a01b03163314610bb95760405162461bcd60e51b81526004016108b3906124cd565b602454610100900460ff1615610bce57600080fd5b602480544260105561ffff1916610100178155600d546001600160a01b03166000908152600c602052604090819020805460ff19166001179055905490517f2b27db57e94e474754b17ad26b358efda13cbcf4a9bbbc7ec92de2926a941f3491610c429160ff919091161515815260200190565b60405180910390a1604051600181527f9dcb1780788db444ce9b5c04e924c7f3b5641b1c960d06f601954f973c8a43d4906020015b60405180910390a1565b610c8a336111fc565b610ca65760405162461bcd60e51b81526004016108b3906123d1565b60008111610ce65760405162461bcd60e51b815260206004820152600d60248201526c526174696f20746f6f206c6f7760981b60448201526064016108b3565b600082118015610d195750610d15633b9aca00610d0f600a6007546112fb90919063ffffffff16565b906112fb565b8211155b610d5e5760405162461bcd60e51b81526020600482015260166024820152750a8d0e4cae6d0ded8c840e8dede40d8deee5ed0d2ced60531b60448201526064016108b3565b6028805460ff60a01b1916600160a01b85151502179055610d816009600a6125d1565b610d8b908361240c565b602955602a555050565b600061088882600754610821565b610dac336111fc565b610dc85760405162461bcd60e51b81526004016108b3906123d1565b6005811015610dd657600080fd5b601e811115610de457600080fd5b6103e881600754610df5919061240c565b610dff9190612423565b60085550565b610e0e336111fc565b610e2a5760405162461bcd60e51b81526004016108b3906123d1565b6005811015610e3857600080fd5b601e811115610e4657600080fd5b6103e881600754610e57919061240c565b610e619190612423565b60095550565b610e70336111fc565b610e8c5760405162461bcd60e51b81526004016108b3906123d1565b6022610e98838261262e565b506023610a7a828261262e565b6000546001600160a01b03163314610ecf5760405162461bcd60e51b81526004016108b3906124cd565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616390602001610c77565b60606006805461079e90612397565b60008054336001600160a01b0390911603610f4557610f3e3384846117fe565b9050610888565b610f3e3384846113b5565b6000546001600160a01b03163314610f7a5760405162461bcd60e51b81526004016108b3906124cd565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60608060226023818054610fb490612397565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe090612397565b801561102d5780601f106110025761010080835404028352916020019161102d565b820191906000526020600020905b81548152906001019060200180831161101057829003601f168201915b5050505050915080805461104090612397565b80601f016020809104026020016040519081016040528092919081815260200182805461106c90612397565b80156110b95780601f1061108e576101008083540402835291602001916110b9565b820191906000526020600020905b81548152906001019060200180831161109c57829003601f168201915b50505050509050915091509091565b6110d1336111fc565b6110ed5760405162461bcd60e51b81526004016108b3906123d1565b601e80546001600160a01b039384166001600160a01b031991821617909155601f8054929093169116179055565b6000546001600160a01b031633146111455760405162461bcd60e51b81526004016108b3906124cd565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146111905760405162461bcd60e51b81526004016108b3906124cd565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6001600160a01b031660009081526001602052604090205460ff1690565b60008061122783856126ee565b905083811015610b885760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108b3565b60008260000361128b57506000610888565b6000611297838561240c565b9050826112a48583612423565b14610b885760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108b3565b6000610b8883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118e4565b6000610b8883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152505b6000818484111561139f5760405162461bcd60e51b81526004016108b391906120f5565b5060006113ac8486612701565b95945050505050565b60006001600160a01b0384166113dd5760405162461bcd60e51b81526004016108b390612445565b6001600160a01b0383166114035760405162461bcd60e51b81526004016108b39061248a565b6001600160a01b0384166000908152600c602052604090205460ff1615801561144557506001600160a01b0383166000908152600c602052604090205460ff16155b156114985760245460ff1615156001036114985760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108b3565b6001600160a01b03841660009081526001602052604090205460ff16806114d757506001600160a01b03831660009081526001602052604090205460ff165b156114ee576114e78484846117fe565b9050610b88565b602b5460ff1615611504576114e78484846117fe565b6001600160a01b03841660009081526001602052604090205460ff1615801561154657506001600160a01b03831660009081526001602052604090205460ff16155b156115995760245460ff1615156001036115995760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108b3565b6028546001600160a01b0385811691161480156115bf57506001600160a01b0383163014155b1561163c5760048054601054604051632d08d26760e11b8152928301526001600160a01b0385811660248401521690635a11a4ce9060440160408051808303816000875af1158015611615573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116399190612714565b50505b60275460ff161561165257611652848484611912565b61165c8284611aee565b1561166a5761166a82611ba4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600a90915291909120546116bc91849061137b565b6001600160a01b038086166000908152600a6020526040812092909255602854858216911614806116fa57506028546001600160a01b038681169116145b611704578261170f565b61170f858585611feb565b6001600160a01b0385166000908152600a6020526040902054909150611735908261121a565b6001600160a01b038086166000908152600a60205260409020919091556028548682169116148061177357506028546001600160a01b038581169116145b801561178857506001600160a01b0384163014155b156117a6576001602160008282546117a091906126ee565b90915550505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117eb91815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a9091529182205461184f91849061137b565b6001600160a01b038086166000908152600a6020526040808220939093559085168152205461187e908361121a565b6001600160a01b038085166000818152600a602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118d29086815260200190565b60405180910390a35060019392505050565b600081836119055760405162461bcd60e51b81526004016108b391906120f5565b5060006113ac8486612423565b6001600160a01b03831660009081526001602052604090205460ff1615801561194457506001600160a01b0382163014155b801561195957506001600160a01b0383163014155b801561197357506002546001600160a01b03838116911614155b801561198d57506028546001600160a01b03838116911614155b80156119a75750601e546001600160a01b03838116911614155b80156119c15750601d546001600160a01b03838116911614155b15611a62576001600160a01b0382166000908152600a60205260409020546009546119ec83836126ee565b1115611a605760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016108b3565b505b60085481111580611a8b57506001600160a01b0383166000908152600f602052604090205460ff165b80611aae57506001600160a01b0382166000908152600f602052604090205460ff165b610a7a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108b3565b60008042611b0960255460265461121a90919063ffffffff16565b602854911191506001600160a01b038481169116148015611b275750805b8015611b365750602b5460ff16155b8015611b4b5750602854600160a01b900460ff165b8015611b685750602954306000908152600a602052604090205410155b8015611b9c5750611b896064610d0f602a548761127990919063ffffffff16565b306000908152600a602052604090205410155b949350505050565b602b805460ff19166001179055602a54600090611bc990606490610d0f908590611279565b602954909150600a908211611be357602954915081611be5565b815b50600080601a5411611bf8576000611c18565b611c186002610d0f601c54610d0f601a548861127990919063ffffffff16565b90506000611c26848361133d565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611c6057611c60612743565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611ca857611ca8612743565b6001600160a01b03928316602091820292909201015260275460405163791ac94760e01b815247926101009092049091169063791ac94790611cf7908690600090879030904290600401612759565b600060405180830381600087803b158015611d1157600080fd5b505af1158015611d25573d6000803e3d6000fd5b50505050600080611d3f834761133d90919063ffffffff16565b9050600080601a5411611d5457601c54611d6f565b601a54611d6f90611d669060026112fb565b601c549061133d565b90506000611d916002610d0f84610d0f601a548861127990919063ffffffff16565b601b5490915015611e19576000611db783610d0f601b548761127990919063ffffffff16565b601f546040519192506001600160a01b031690620186a09083906000818181858888f193505050503d8060008114611e0b576040519150601f19603f3d011682016040523d82523d6000602084013e611e10565b606091505b50600096505050505b8715611ef657602754601d5460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c40160606040518083038185885af1158015611e94573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eb991906127ca565b505060408051838152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6000611f0683610d0f868d611279565b6020546040519192506001600160a01b031690620186a09083906000818181858888f193505050503d8060008114611f5a576040519150601f19603f3d011682016040523d82523d6000602084013e611f5f565b606091505b5060009650479150508015611fce57601e546040516001600160a01b0390911690620186a09083906000818181858888f193505050503d8060008114611fc1576040519150601f19603f3d011682016040523d82523d6000602084013e611fc6565b606091505b506000975050505b5050426026555050602b805460ff19169055505050505050505050565b60285460009081906001600160a01b0385811691161461200d57601454612011565b6018545b905060006120256103e8610d0f8685611279565b306000908152600a6020526040902054909150612042908261121a565b306000818152600a6020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120939085815260200190565b60405180910390a36120a5848261133d565b9695505050505050565b6000815180845260005b818110156120d5576020818501810151868301820152016120b9565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610b8860208301846120af565b6001600160a01b038116811461211d57600080fd5b50565b6000806040838503121561213357600080fd5b823561213e81612108565b946020939093013593505050565b60008060006060848603121561216157600080fd5b505081359360208301359350604090920135919050565b60006020828403121561218a57600080fd5b5035919050565b6000806000606084860312156121a657600080fd5b83356121b181612108565b925060208401356121c181612108565b929592945050506040919091013590565b801515811461211d57600080fd5b6000806000606084860312156121f557600080fd5b8335612200816121d2565b95602085013595506040909401359392505050565b60006020828403121561222757600080fd5b8135610b8881612108565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261225957600080fd5b813567ffffffffffffffff8082111561227457612274612232565b604051601f8301601f19908116603f0116810190828211818310171561229c5761229c612232565b816040528381528660208588010111156122b557600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156122e857600080fd5b823567ffffffffffffffff8082111561230057600080fd5b61230c86838701612248565b9350602085013591508082111561232257600080fd5b5061232f85828601612248565b9150509250929050565b60408152600061234c60408301856120af565b82810360208401526113ac81856120af565b6000806040838503121561237157600080fd5b823561237c81612108565b9150602083013561238c81612108565b809150509250929050565b600181811c908216806123ab57607f821691505b6020821081036123cb57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610888576108886123f6565b60008261244057634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b8085111561252857816000190482111561250e5761250e6123f6565b8085161561251b57918102915b93841c93908002906124f2565b509250929050565b60008261253f57506001610888565b8161254c57506000610888565b8160018114612562576002811461256c57612588565b6001915050610888565b60ff84111561257d5761257d6123f6565b50506001821b610888565b5060208310610133831016604e8410600b84101617156125ab575081810a610888565b6125b583836124ed565b80600019048211156125c9576125c96123f6565b029392505050565b6000610b8860ff841683612530565b601f821115610a7a57600081815260208120601f850160051c810160208610156126075750805b601f850160051c820191505b8181101561262657828155600101612613565b505050505050565b815167ffffffffffffffff81111561264857612648612232565b61265c816126568454612397565b846125e0565b602080601f83116001811461269157600084156126795750858301515b600019600386901b1c1916600185901b178555612626565b600085815260208120601f198616915b828110156126c0578886015182559484019460019091019084016126a1565b50858210156126de5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115610888576108886123f6565b81810381811115610888576108886123f6565b6000806040838503121561272757600080fd5b8251612732816121d2565b602084015190925061238c81612108565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127a95784516001600160a01b031683529383019391830191600101612784565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156127df57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e90f501c22b53e6402020fc938d4425e8bc316bace8acbb34d69cecb46b16f9764736f6c63430008110033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000c82e9255b8879bc449e88a82361f9d3d9948f69b000000000000000000000000f6518207b10dcbca33c8a8a783de4c0c8da040870000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000610000000000000000000000000000000000000000000000000000000065440d5500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050000000000000000000000009d58c15d864e76cdef6288debfa74ded7039c4f4000000000000000000000000e9d39d5b1eeb143fada974980f17a273ef8e2209000000000000000000000000bc45b4e4fb284471284b85c0df1a4ead436e9c8a00000000000000000000000052117d959544653a2e0c2f02506128251d24f0e1000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d560000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000055454657374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000554544553540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016200000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061024a5760003560e01c806370a0823111610139578063a9059cbb116100b6578063d46980161161007a578063d4698016146106a4578063dd62ed3e146106c4578063f0b37c041461070a578063f2fde38b1461072a578063f887ea401461074a578063fe9fbb801461076f57600080fd5b8063a9059cbb14610603578063b6a5d7de14610623578063bc7a289814610643578063c1f1b1b514610666578063d3f6a1571461068457600080fd5b8063893d20e8116100fd578063893d20e81461057a5780638ea5220f1461059857806395d89b41146105b85780639d9241ec146105cd578063a8aa1b31146105e357600080fd5b806370a08231146104e3578063715018a61461051957806375f0a8741461052e57806378109e541461054e5780637d1db4a51461056457600080fd5b80632f54bf6e116101c757806359b107b91161018b57806359b107b91461044c5780635c85974f146104625780635d0044ca1461048257806360959b56146104a25780636ddd1713146104c257600080fd5b80632f54bf6e1461039d578063313ce567146103cc57806338cc4831146103e85780634623e2921461040f578063571ac8b01461042c57600080fd5b806318160ddd1161020e57806318160ddd146103135780631da1db5e1461032857806323b872dd14610348578063293230b81461036857806329a7b2431461037d57600080fd5b80630445b6671461025657806306fdde031461027f578063095ea7b3146102a15780630d075d9c146102d15780630f683e90146102f357600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026c60295481565b6040519081526020015b60405180910390f35b34801561028b57600080fd5b5061029461078f565b60405161027691906120f5565b3480156102ad57600080fd5b506102c16102bc366004612120565b610821565b6040519015158152602001610276565b3480156102dd57600080fd5b506102f16102ec36600461214c565b61088e565b005b3480156102ff57600080fd5b506102f161030e36600461214c565b610968565b34801561031f57600080fd5b5060075461026c565b34801561033457600080fd5b506102f1610343366004612178565b610a2b565b34801561035457600080fd5b506102c1610363366004612191565b610a7f565b34801561037457600080fd5b506102f1610b8f565b34801561038957600080fd5b506102f16103983660046121e0565b610c81565b3480156103a957600080fd5b506102c16103b8366004612215565b6000546001600160a01b0391821691161490565b3480156103d857600080fd5b5060405160098152602001610276565b3480156103f457600080fd5b50305b6040516001600160a01b039091168152602001610276565b34801561041b57600080fd5b50602454610100900460ff166102c1565b34801561043857600080fd5b506102c1610447366004612215565b610d95565b34801561045857600080fd5b5061026c60145481565b34801561046e57600080fd5b506102f161047d366004612178565b610da3565b34801561048e57600080fd5b506102f161049d366004612178565b610e05565b3480156104ae57600080fd5b506102f16104bd3660046122d5565b610e67565b3480156104ce57600080fd5b506028546102c190600160a01b900460ff1681565b3480156104ef57600080fd5b5061026c6104fe366004612215565b6001600160a01b03166000908152600a602052604090205490565b34801561052557600080fd5b506102f1610ea5565b34801561053a57600080fd5b50601e546103f7906001600160a01b031681565b34801561055a57600080fd5b5061026c60095481565b34801561057057600080fd5b5061026c60085481565b34801561058657600080fd5b506000546001600160a01b03166103f7565b3480156105a457600080fd5b50601f546103f7906001600160a01b031681565b3480156105c457600080fd5b50610294610f0f565b3480156105d957600080fd5b5061026c60185481565b3480156105ef57600080fd5b506028546103f7906001600160a01b031681565b34801561060f57600080fd5b506102c161061e366004612120565b610f1e565b34801561062f57600080fd5b506102f161063e366004612215565b610f50565b34801561064f57600080fd5b50610658610fa1565b604051610276929190612339565b34801561067257600080fd5b506028546001600160a01b03166103f7565b34801561069057600080fd5b506102f161069f36600461235e565b6110c8565b3480156106b057600080fd5b50601d546103f7906001600160a01b031681565b3480156106d057600080fd5b5061026c6106df36600461235e565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b34801561071657600080fd5b506102f1610725366004612215565b61111b565b34801561073657600080fd5b506102f1610745366004612215565b611166565b34801561075657600080fd5b506027546103f79061010090046001600160a01b031681565b34801561077b57600080fd5b506102c161078a366004612215565b6111fc565b60606005805461079e90612397565b80601f01602080910402602001604051908101604052809291908181526020018280546107ca90612397565b80156108175780601f106107ec57610100808354040283529160200191610817565b820191906000526020600020905b8154815290600101906020018083116107fa57829003601f168201915b5050505050905090565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061087c9086815260200190565b60405180910390a35060015b92915050565b610897336111fc565b6108bc5760405162461bcd60e51b81526004016108b3906123d1565b60405180910390fd5b60646108d2826108cc868661121a565b9061121a565b11156108dd57600080fd5b601554600a906108ed908561121a565b10156108f857600080fd5b601183905560128290556013819055601554610914908461121a565b601955601654610924908361121a565b601a55601754610934908261121a565b601b55610945816108cc858561121a565b601455601b54601954601a5461096092916108cc919061121a565b601c55505050565b610971336111fc565b61098d5760405162461bcd60e51b81526004016108b3906123d1565b606461099d826108cc868661121a565b11156109a857600080fd5b601154600a906109b8908561121a565b10156109c357600080fd5b6015839055601682905560178190556011546109df908461121a565b6019556012546109ef908361121a565b601a556013546109ff908261121a565b601b55610a10816108cc858561121a565b601855601b54601954601a5461096092916108cc919061121a565b601e5447906001600160a01b03166108fc6064610a48858561240c565b610a529190612423565b6040518115909202916000818181858888f19350505050158015610a7a573d6000803e3d6000fd5b505050565b60006001600160a01b038416610aa75760405162461bcd60e51b81526004016108b390612445565b6001600160a01b038316610acd5760405162461bcd60e51b81526004016108b39061248a565b6007546001600160a01b0385166000908152600b6020908152604080832033845290915290205414610b7a576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600b82528381203382529091529190912054610b5591849061137b565b6001600160a01b0385166000908152600b602090815260408083203384529091529020555b610b858484846113b5565b90505b9392505050565b6000546001600160a01b03163314610bb95760405162461bcd60e51b81526004016108b3906124cd565b602454610100900460ff1615610bce57600080fd5b602480544260105561ffff1916610100178155600d546001600160a01b03166000908152600c602052604090819020805460ff19166001179055905490517f2b27db57e94e474754b17ad26b358efda13cbcf4a9bbbc7ec92de2926a941f3491610c429160ff919091161515815260200190565b60405180910390a1604051600181527f9dcb1780788db444ce9b5c04e924c7f3b5641b1c960d06f601954f973c8a43d4906020015b60405180910390a1565b610c8a336111fc565b610ca65760405162461bcd60e51b81526004016108b3906123d1565b60008111610ce65760405162461bcd60e51b815260206004820152600d60248201526c526174696f20746f6f206c6f7760981b60448201526064016108b3565b600082118015610d195750610d15633b9aca00610d0f600a6007546112fb90919063ffffffff16565b906112fb565b8211155b610d5e5760405162461bcd60e51b81526020600482015260166024820152750a8d0e4cae6d0ded8c840e8dede40d8deee5ed0d2ced60531b60448201526064016108b3565b6028805460ff60a01b1916600160a01b85151502179055610d816009600a6125d1565b610d8b908361240c565b602955602a555050565b600061088882600754610821565b610dac336111fc565b610dc85760405162461bcd60e51b81526004016108b3906123d1565b6005811015610dd657600080fd5b601e811115610de457600080fd5b6103e881600754610df5919061240c565b610dff9190612423565b60085550565b610e0e336111fc565b610e2a5760405162461bcd60e51b81526004016108b3906123d1565b6005811015610e3857600080fd5b601e811115610e4657600080fd5b6103e881600754610e57919061240c565b610e619190612423565b60095550565b610e70336111fc565b610e8c5760405162461bcd60e51b81526004016108b3906123d1565b6022610e98838261262e565b506023610a7a828261262e565b6000546001600160a01b03163314610ecf5760405162461bcd60e51b81526004016108b3906124cd565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616390602001610c77565b60606006805461079e90612397565b60008054336001600160a01b0390911603610f4557610f3e3384846117fe565b9050610888565b610f3e3384846113b5565b6000546001600160a01b03163314610f7a5760405162461bcd60e51b81526004016108b3906124cd565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60608060226023818054610fb490612397565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe090612397565b801561102d5780601f106110025761010080835404028352916020019161102d565b820191906000526020600020905b81548152906001019060200180831161101057829003601f168201915b5050505050915080805461104090612397565b80601f016020809104026020016040519081016040528092919081815260200182805461106c90612397565b80156110b95780601f1061108e576101008083540402835291602001916110b9565b820191906000526020600020905b81548152906001019060200180831161109c57829003601f168201915b50505050509050915091509091565b6110d1336111fc565b6110ed5760405162461bcd60e51b81526004016108b3906123d1565b601e80546001600160a01b039384166001600160a01b031991821617909155601f8054929093169116179055565b6000546001600160a01b031633146111455760405162461bcd60e51b81526004016108b3906124cd565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146111905760405162461bcd60e51b81526004016108b3906124cd565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6001600160a01b031660009081526001602052604090205460ff1690565b60008061122783856126ee565b905083811015610b885760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108b3565b60008260000361128b57506000610888565b6000611297838561240c565b9050826112a48583612423565b14610b885760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108b3565b6000610b8883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118e4565b6000610b8883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152505b6000818484111561139f5760405162461bcd60e51b81526004016108b391906120f5565b5060006113ac8486612701565b95945050505050565b60006001600160a01b0384166113dd5760405162461bcd60e51b81526004016108b390612445565b6001600160a01b0383166114035760405162461bcd60e51b81526004016108b39061248a565b6001600160a01b0384166000908152600c602052604090205460ff1615801561144557506001600160a01b0383166000908152600c602052604090205460ff16155b156114985760245460ff1615156001036114985760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108b3565b6001600160a01b03841660009081526001602052604090205460ff16806114d757506001600160a01b03831660009081526001602052604090205460ff165b156114ee576114e78484846117fe565b9050610b88565b602b5460ff1615611504576114e78484846117fe565b6001600160a01b03841660009081526001602052604090205460ff1615801561154657506001600160a01b03831660009081526001602052604090205460ff16155b156115995760245460ff1615156001036115995760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108b3565b6028546001600160a01b0385811691161480156115bf57506001600160a01b0383163014155b1561163c5760048054601054604051632d08d26760e11b8152928301526001600160a01b0385811660248401521690635a11a4ce9060440160408051808303816000875af1158015611615573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116399190612714565b50505b60275460ff161561165257611652848484611912565b61165c8284611aee565b1561166a5761166a82611ba4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600a90915291909120546116bc91849061137b565b6001600160a01b038086166000908152600a6020526040812092909255602854858216911614806116fa57506028546001600160a01b038681169116145b611704578261170f565b61170f858585611feb565b6001600160a01b0385166000908152600a6020526040902054909150611735908261121a565b6001600160a01b038086166000908152600a60205260409020919091556028548682169116148061177357506028546001600160a01b038581169116145b801561178857506001600160a01b0384163014155b156117a6576001602160008282546117a091906126ee565b90915550505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117eb91815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a9091529182205461184f91849061137b565b6001600160a01b038086166000908152600a6020526040808220939093559085168152205461187e908361121a565b6001600160a01b038085166000818152600a602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118d29086815260200190565b60405180910390a35060019392505050565b600081836119055760405162461bcd60e51b81526004016108b391906120f5565b5060006113ac8486612423565b6001600160a01b03831660009081526001602052604090205460ff1615801561194457506001600160a01b0382163014155b801561195957506001600160a01b0383163014155b801561197357506002546001600160a01b03838116911614155b801561198d57506028546001600160a01b03838116911614155b80156119a75750601e546001600160a01b03838116911614155b80156119c15750601d546001600160a01b03838116911614155b15611a62576001600160a01b0382166000908152600a60205260409020546009546119ec83836126ee565b1115611a605760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016108b3565b505b60085481111580611a8b57506001600160a01b0383166000908152600f602052604090205460ff165b80611aae57506001600160a01b0382166000908152600f602052604090205460ff165b610a7a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108b3565b60008042611b0960255460265461121a90919063ffffffff16565b602854911191506001600160a01b038481169116148015611b275750805b8015611b365750602b5460ff16155b8015611b4b5750602854600160a01b900460ff165b8015611b685750602954306000908152600a602052604090205410155b8015611b9c5750611b896064610d0f602a548761127990919063ffffffff16565b306000908152600a602052604090205410155b949350505050565b602b805460ff19166001179055602a54600090611bc990606490610d0f908590611279565b602954909150600a908211611be357602954915081611be5565b815b50600080601a5411611bf8576000611c18565b611c186002610d0f601c54610d0f601a548861127990919063ffffffff16565b90506000611c26848361133d565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611c6057611c60612743565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611ca857611ca8612743565b6001600160a01b03928316602091820292909201015260275460405163791ac94760e01b815247926101009092049091169063791ac94790611cf7908690600090879030904290600401612759565b600060405180830381600087803b158015611d1157600080fd5b505af1158015611d25573d6000803e3d6000fd5b50505050600080611d3f834761133d90919063ffffffff16565b9050600080601a5411611d5457601c54611d6f565b601a54611d6f90611d669060026112fb565b601c549061133d565b90506000611d916002610d0f84610d0f601a548861127990919063ffffffff16565b601b5490915015611e19576000611db783610d0f601b548761127990919063ffffffff16565b601f546040519192506001600160a01b031690620186a09083906000818181858888f193505050503d8060008114611e0b576040519150601f19603f3d011682016040523d82523d6000602084013e611e10565b606091505b50600096505050505b8715611ef657602754601d5460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c40160606040518083038185885af1158015611e94573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eb991906127ca565b505060408051838152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6000611f0683610d0f868d611279565b6020546040519192506001600160a01b031690620186a09083906000818181858888f193505050503d8060008114611f5a576040519150601f19603f3d011682016040523d82523d6000602084013e611f5f565b606091505b5060009650479150508015611fce57601e546040516001600160a01b0390911690620186a09083906000818181858888f193505050503d8060008114611fc1576040519150601f19603f3d011682016040523d82523d6000602084013e611fc6565b606091505b506000975050505b5050426026555050602b805460ff19169055505050505050505050565b60285460009081906001600160a01b0385811691161461200d57601454612011565b6018545b905060006120256103e8610d0f8685611279565b306000908152600a6020526040902054909150612042908261121a565b306000818152600a6020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120939085815260200190565b60405180910390a36120a5848261133d565b9695505050505050565b6000815180845260005b818110156120d5576020818501810151868301820152016120b9565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610b8860208301846120af565b6001600160a01b038116811461211d57600080fd5b50565b6000806040838503121561213357600080fd5b823561213e81612108565b946020939093013593505050565b60008060006060848603121561216157600080fd5b505081359360208301359350604090920135919050565b60006020828403121561218a57600080fd5b5035919050565b6000806000606084860312156121a657600080fd5b83356121b181612108565b925060208401356121c181612108565b929592945050506040919091013590565b801515811461211d57600080fd5b6000806000606084860312156121f557600080fd5b8335612200816121d2565b95602085013595506040909401359392505050565b60006020828403121561222757600080fd5b8135610b8881612108565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261225957600080fd5b813567ffffffffffffffff8082111561227457612274612232565b604051601f8301601f19908116603f0116810190828211818310171561229c5761229c612232565b816040528381528660208588010111156122b557600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156122e857600080fd5b823567ffffffffffffffff8082111561230057600080fd5b61230c86838701612248565b9350602085013591508082111561232257600080fd5b5061232f85828601612248565b9150509250929050565b60408152600061234c60408301856120af565b82810360208401526113ac81856120af565b6000806040838503121561237157600080fd5b823561237c81612108565b9150602083013561238c81612108565b809150509250929050565b600181811c908216806123ab57607f821691505b6020821081036123cb57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610888576108886123f6565b60008261244057634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b8085111561252857816000190482111561250e5761250e6123f6565b8085161561251b57918102915b93841c93908002906124f2565b509250929050565b60008261253f57506001610888565b8161254c57506000610888565b8160018114612562576002811461256c57612588565b6001915050610888565b60ff84111561257d5761257d6123f6565b50506001821b610888565b5060208310610133831016604e8410600b84101617156125ab575081810a610888565b6125b583836124ed565b80600019048211156125c9576125c96123f6565b029392505050565b6000610b8860ff841683612530565b601f821115610a7a57600081815260208120601f850160051c810160208610156126075750805b601f850160051c820191505b8181101561262657828155600101612613565b505050505050565b815167ffffffffffffffff81111561264857612648612232565b61265c816126568454612397565b846125e0565b602080601f83116001811461269157600084156126795750858301515b600019600386901b1c1916600185901b178555612626565b600085815260208120601f198616915b828110156126c0578886015182559484019460019091019084016126a1565b50858210156126de5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115610888576108886123f6565b81810381811115610888576108886123f6565b6000806040838503121561272757600080fd5b8251612732816121d2565b602084015190925061238c81612108565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127a95784516001600160a01b031683529383019391830191600101612784565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156127df57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e90f501c22b53e6402020fc938d4425e8bc316bace8acbb34d69cecb46b16f9764736f6c63430008110033

Deployed Bytecode Sourcemap

5146:17429:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:28;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7223:28:0;;;;;;;;11121:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11901:216::-;;;;;;;;;;-1:-1:-1;11901:216:0;;;;;:::i;:::-;;:::i;:::-;;;1470:14:1;;1463:22;1445:41;;1433:2;1418:18;11901:216:0;1305:187:1;12592:682:0;;;;;;;;;;-1:-1:-1;12592:682:0;;;;;:::i;:::-;;:::i;:::-;;13286:683;;;;;;;;;;-1:-1:-1;13286:683:0;;;;;:::i;:::-;;:::i;10851:88::-;;;;;;;;;;-1:-1:-1;10924:12:0;;10851:88;;14768:203;;;;;;;;;;-1:-1:-1;14768:203:0;;;;;:::i;:::-;;:::i;20351:528::-;;;;;;;;;;-1:-1:-1;20351:528:0;;;;;:::i;:::-;;:::i;15779:306::-;;;;;;;;;;;;;:::i;16393:386::-;;;;;;;;;;-1:-1:-1;16393:386:0;;;;;:::i;:::-;;:::i;2962:103::-;;;;;;;;;;-1:-1:-1;2962:103:0;;;;;:::i;:::-;3017:4;3052:5;-1:-1:-1;;;;;3041:16:0;;;3052:5;;3041:16;;2962:103;10945:80;;;;;;;;;;-1:-1:-1;10945:80:0;;5461:1;3363:36:1;;3351:2;3336:18;10945:80:0;3221:184:1;14662:92:0;;;;;;;;;;-1:-1:-1;14741:4:0;14662:92;;;-1:-1:-1;;;;;3574:32:1;;;3556:51;;3544:2;3529:18;14662:92:0;3410:203:1;15636:135:0;;;;;;;;;;-1:-1:-1;15755:8:0;;;;;;;15636:135;;12125:117;;;;;;;;;;-1:-1:-1;12125:117:0;;;;;:::i;:::-;;:::i;6059:80::-;;;;;;;;;;;;;;;;14412:242;;;;;;;;;;-1:-1:-1;14412:242:0;;;;;:::i;:::-;;:::i;14157:247::-;;;;;;;;;;-1:-1:-1;14157:247:0;;;;;:::i;:::-;;:::i;11735:158::-;;;;;;;;;;-1:-1:-1;11735:158:0;;;;;:::i;:::-;;:::i;7186:30::-;;;;;;;;;;-1:-1:-1;7186:30:0;;;;-1:-1:-1;;;7186:30:0;;;;;;11291:105;;;;;;;;;;-1:-1:-1;11291:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;11375:18:0;11357:7;11375:18;;;:9;:18;;;;;;;11291:105;3369:133;;;;;;;;;;;;;:::i;6620:30::-;;;;;;;;;;-1:-1:-1;6620:30:0;;;;-1:-1:-1;;;;;6620:30:0;;;5543;;;;;;;;;;;;;;;;5509:27;;;;;;;;;;;;;;;;11207:78;;;;;;;;;;-1:-1:-1;11259:7:0;11277:5;-1:-1:-1;;;;;11277:5:0;11207:78;;6657:24;;;;;;;;;;-1:-1:-1;6657:24:0;;;;-1:-1:-1;;;;;6657:24:0;;;11031:84;;;;;;;;;;;;;:::i;6235:::-;;;;;;;;;;;;;;;;7158:19;;;;;;;;;;-1:-1:-1;7158:19:0;;;;-1:-1:-1;;;;;7158:19:0;;;20043:300;;;;;;;;;;-1:-1:-1;20043:300:0;;;;;:::i;:::-;;:::i;2755:94::-;;;;;;;;;;-1:-1:-1;2755:94:0;;;;;:::i;:::-;;:::i;11613:114::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;11541:64::-;;;;;;;;;;-1:-1:-1;11599:4:0;;-1:-1:-1;;;;;11599:4:0;11541:64;;13977:172;;;;;;;;;;-1:-1:-1;13977:172:0;;;;;:::i;:::-;;:::i;6583:30::-;;;;;;;;;;-1:-1:-1;6583:30:0;;;;-1:-1:-1;;;;;6583:30:0;;;11402:133;;;;;;;;;;-1:-1:-1;11402:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11504:19:0;;;11486:7;11504:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11402:133;2857:97;;;;;;;;;;-1:-1:-1;2857:97:0;;;;;:::i;:::-;;:::i;3188:173::-;;;;;;;;;;-1:-1:-1;3188:173:0;;;;;:::i;:::-;;:::i;7127:24::-;;;;;;;;;;-1:-1:-1;7127:24:0;;;;;;;-1:-1:-1;;;;;7127:24:0;;;3073:107;;;;;;;;;;-1:-1:-1;3073:107:0;;;;;:::i;:::-;;:::i;11121:80::-;11169:13;11193:5;11186:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11121:80;:::o;11901:216::-;12005:10;11976:4;11993:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11993:32:0;;;;;;;;;;:41;;;12050:37;11976:4;;11993:32;;12050:37;;;;12028:6;160:25:1;;148:2;133:18;;14:177;12050:37:0;;;;;;;;-1:-1:-1;12105:4:0;11901:216;;;;;:::o;12592:682::-;2696:24;2709:10;2696:12;:24::i;:::-;2688:48;;;;-1:-1:-1;;;2688:48:0;;;;;;;:::i;:::-;;;;;;;;;12786:3:::1;12736:45;12773:7:::0;12736:32:::1;:13:::0;12754;12736:17:::1;:32::i;:::-;:36:::0;::::1;:45::i;:::-;12735:54;;12727:63;;;::::0;::::1;;12809:16;::::0;12846:2:::1;::::0;12809:35:::1;::::0;12830:13;12809:20:::1;:35::i;:::-;:39;;12801:48;;;::::0;::::1;;12860:15;:31:::0;;;12902:15:::1;:31:::0;;;12944:9:::1;:19:::0;;;12991:16:::1;::::0;:35:::1;::::0;12878:13;12991:20:::1;:35::i;:::-;12976:12;:50:::0;13052:16:::1;::::0;:35:::1;::::0;13073:13;13052:20:::1;:35::i;:::-;13037:12;:50:::0;13107:10:::1;::::0;:23:::1;::::0;13122:7;13107:14:::1;:23::i;:::-;13098:6;:32:::0;13157:45:::1;13194:7:::0;13157:32:::1;:13:::0;13175;13157:17:::1;:32::i;:45::-;13143:11;:59:::0;13259:6:::1;::::0;13241:12:::1;::::0;13224::::1;::::0;:42:::1;::::0;13259:6;13224:30:::1;::::0;:12;:16:::1;:30::i;:42::-;13213:8;:53:::0;-1:-1:-1;;;12592:682:0:o;13286:683::-;2696:24;2709:10;2696:12;:24::i;:::-;2688:48;;;;-1:-1:-1;;;2688:48:0;;;;;;;:::i;:::-;13481:3:::1;13431:45;13468:7:::0;13431:32:::1;:13:::0;13449;13431:17:::1;:32::i;:45::-;13430:54;;13422:63;;;::::0;::::1;;13504:15;::::0;13540:2:::1;::::0;13504:34:::1;::::0;13524:13;13504:19:::1;:34::i;:::-;:38;;13496:47;;;::::0;::::1;;13554:16;:32:::0;;;13597:16:::1;:32:::0;;;13640:10:::1;:20:::0;;;13688:15:::1;::::0;:34:::1;::::0;13573:13;13688:19:::1;:34::i;:::-;13673:12;:49:::0;13748:15:::1;::::0;:34:::1;::::0;13768:13;13748:19:::1;:34::i;:::-;13733:12;:49:::0;13802:9:::1;::::0;:22:::1;::::0;13816:7;13802:13:::1;:22::i;:::-;13793:6;:31:::0;13852:45:::1;13889:7:::0;13852:32:::1;:13:::0;13870;13852:17:::1;:32::i;:45::-;13837:12;:60:::0;13954:6:::1;::::0;13936:12:::1;::::0;13919::::1;::::0;:42:::1;::::0;13954:6;13919:30:::1;::::0;:12;:16:::1;:30::i;14768:203::-:0;14902:15;;14862:21;;-1:-1:-1;;;;;14902:15:0;14894:69;14959:3;14928:28;14940:16;14862:21;14928:28;:::i;:::-;:34;;;;:::i;:::-;14894:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14831:140;14768:203;:::o;20351:528::-;20451:4;-1:-1:-1;;;;;20476:20:0;;20468:70;;;;-1:-1:-1;;;20468:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20557:23:0;;20549:71;;;;-1:-1:-1;;;20549:71:0;;;;;;;:::i;:::-;20669:12;;-1:-1:-1;;;;;20634:19:0;;;;;;:11;:19;;;;;;;;20654:10;20634:31;;;;;;;;:47;20631:181;;20731:69;;;;;;;;;;;-1:-1:-1;;;20731:69:0;;;;;;;;-1:-1:-1;;;;;20731:19:0;;-1:-1:-1;20731:19:0;;;:11;:19;;;;;20751:10;20731:31;;;;;;;;;;:69;;20767:6;;20731:35;:69::i;:::-;-1:-1:-1;;;;;20697:19:0;;;;;;:11;:19;;;;;;;;20717:10;20697:31;;;;;;;:103;20631:181;20831:40;20845:6;20853:9;20864:6;20831:13;:40::i;:::-;20824:47;;20351:528;;;;;;:::o;15779:306::-;3017:4;3052:5;-1:-1:-1;;;;;3052:5:0;2614:10;3041:16;2598:38;;;;-1:-1:-1;;;2598:38:0;;;;;;;:::i;:::-;15841:8:::1;::::0;::::1;::::0;::::1;;;:17;15833:26;;;::::0;::::1;;15870:12;:20:::0;;15914:15:::1;15901:10;:28:::0;-1:-1:-1;;15940:15:0;15870:20:::1;15940:15;::::0;;15977:7:::1;::::0;-1:-1:-1;;;;;15977:7:0::1;15885:5;15966:19:::0;;;:10:::1;:19;::::0;;;;;;:26;;-1:-1:-1;;15966:26:0::1;15870:20:::0;15966:26:::1;::::0;;16030:12;;16010:33;;::::1;::::0;::::1;::::0;15870:20:::1;16030:12:::0;;;::::1;1470:14:1::0;1463:22;1445:41;;1433:2;1418:18;;1305:187;16010:33:0::1;;;;;;;;16059:18;::::0;16072:4:::1;1445:41:1::0;;16059:18:0::1;::::0;1433:2:1;1418:18;16059::0::1;;;;;;;;15779:306::o:0;16393:386::-;2696:24;2709:10;2696:12;:24::i;:::-;2688:48;;;;-1:-1:-1;;;2688:48:0;;;;;;;:::i;:::-;16522:1:::1;16513:6;:10;16505:36;;;::::0;-1:-1:-1;;;16505:36:0;;8887:2:1;16505:36:0::1;::::0;::::1;8869:21:1::0;8926:2;8906:18;;;8899:30;-1:-1:-1;;;8945:18:1;;;8938:43;8998:18;;16505:36:0::1;8685:337:1::0;16505:36:0::1;16573:1;16560:10;:14;:63;;;;;16592:31;16617:5;16592:20;16609:2;16592:12;;:16;;:20;;;;:::i;:::-;:24:::0;::::1;:31::i;:::-;16578:10;:45;;16560:63;16552:98;;;::::0;-1:-1:-1;;;16552:98:0;;9229:2:1;16552:98:0::1;::::0;::::1;9211:21:1::0;9268:2;9248:18;;;9241:30;-1:-1:-1;;;9287:18:1;;;9280:52;9349:18;;16552:98:0::1;9027:346:1::0;16552:98:0::1;16661:11;:22:::0;;-1:-1:-1;;;;16661:22:0::1;-1:-1:-1::0;;;16661:22:0;::::1;;;;::::0;;16724:15:::1;5461:1;16724:2;:15;:::i;:::-;16710:30;::::0;:10;:30:::1;:::i;:::-;16694:13;:46:::0;16751:9:::1;:18:::0;-1:-1:-1;;16393:386:0:o;12125:117::-;12180:4;12204:30;12212:7;12221:12;;12204:7;:30::i;14412:242::-;2696:24;2709:10;2696:12;:24::i;:::-;2688:48;;;;-1:-1:-1;;;2688:48:0;;;;;;;:::i;:::-;14499:1:::1;14488:7;:12;;14480:21;;;::::0;::::1;;14558:2;14547:7;:13;;14539:22;;;::::0;::::1;;14642:4;14630:7;14615:12;;:22;;;;:::i;:::-;14613:33;;;;:::i;:::-;14598:12;:48:::0;-1:-1:-1;14412:242:0:o;14157:247::-;2696:24;2709:10;2696:12;:24::i;:::-;2688:48;;;;-1:-1:-1;;;2688:48:0;;;;;;;:::i;:::-;14246:1:::1;14235:7;:12;;14227:21;;;::::0;::::1;;14305:2;14294:7;:13;;14286:22;;;::::0;::::1;;14392:4;14380:7;14365:12;;:22;;;;:::i;:::-;14363:33;;;;:::i;:::-;14345:15;:51:::0;-1:-1:-1;14157:247:0:o;11735:158::-;2696:24;2709:10;2696:12;:24::i;:::-;2688:48;;;;-1:-1:-1;;;2688:48:0;;;;;;;:::i;:::-;11836:8:::1;:20;11847:9:::0;11836:8;:20:::1;:::i;:::-;-1:-1:-1::0;11867:7:0::1;:18;11877:8:::0;11867:7;:18:::1;:::i;3369:133::-:0;3017:4;3052:5;-1:-1:-1;;;;;3052:5:0;2614:10;3041:16;2598:38;;;;-1:-1:-1;;;2598:38:0;;;;;;;:::i;:::-;3444:1:::1;3428:18:::0;;-1:-1:-1;;;;;;3428:18:0::1;::::0;;3462:32:::1;::::0;3556:51:1;;;3462:32:0::1;::::0;3544:2:1;3529:18;3462:32:0::1;3410:203:1::0;11031:84:0;11081:13;11105:7;11098:14;;;;;:::i;20043:300::-;20123:4;20144:5;;20153:10;-1:-1:-1;;;;;20144:5:0;;;:19;20140:196;;20186:45;20201:10;20213:9;20224:6;20186:14;:45::i;:::-;20179:52;;;;20140:196;20280:44;20294:10;20306:9;20317:6;20280:13;:44::i;2755:94::-;3017:4;3052:5;-1:-1:-1;;;;;3052:5:0;2614:10;3041:16;2598:38;;;;-1:-1:-1;;;2598:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2815:19:0::1;;::::0;;;2837:4:::1;2815:19;::::0;;;;;;;:26;;-1:-1:-1;;2815:26:0::1;::::0;;::::1;::::0;;2755:94::o;11613:114::-;11655:13;11669;11702:8;11711:7;11694:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11613:114;;:::o;13977:172::-;2696:24;2709:10;2696:12;:24::i;:::-;2688:48;;;;-1:-1:-1;;;2688:48:0;;;;;;;:::i;:::-;14074:15:::1;:34:::0;;-1:-1:-1;;;;;14074:34:0;;::::1;-1:-1:-1::0;;;;;;14074:34:0;;::::1;;::::0;;;14119:9:::1;:22:::0;;;;;::::1;::::0;::::1;;::::0;;13977:172::o;2857:97::-;3017:4;3052:5;-1:-1:-1;;;;;3052:5:0;2614:10;3041:16;2598:38;;;;-1:-1:-1;;;2598:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2919:19:0::1;2941:5;2919:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2919:27:0::1;::::0;;2857:97::o;3188:173::-;3017:4;3052:5;-1:-1:-1;;;;;3052:5:0;2614:10;3041:16;2598:38;;;;-1:-1:-1;;;2598:38:0;;;;;;;:::i;:::-;3264:5:::1;:11:::0;;-1:-1:-1;;;;;;3264:11:0::1;-1:-1:-1::0;;;;;3264:11:0;::::1;::::0;;::::1;::::0;;3286:19;;;-1:-1:-1;3286:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3286:26:0::1;::::0;;::::1;::::0;;;3328:25;;3556:51:1;;;3328:25:0::1;::::0;3529:18:1;3328:25:0::1;;;;;;;3188:173:::0;:::o;3073:107::-;-1:-1:-1;;;;;3153:19:0;3129:4;3153:19;;;:14;:19;;;;;;;;;3073:107::o;153:181::-;211:7;;243:5;247:1;243;:5;:::i;:::-;231:17;;272:1;267;:6;;259:46;;;;-1:-1:-1;;;259:46:0;;13513:2:1;259:46:0;;;13495:21:1;13552:2;13532:18;;;13525:30;13591:29;13571:18;;;13564:57;13638:18;;259:46:0;13311:351:1;680:250:0;738:7;762:1;767;762:6;758:47;;-1:-1:-1;792:1:0;785:8;;758:47;817:9;829:5;833:1;829;:5;:::i;:::-;817:17;-1:-1:-1;862:1:0;853:5;857:1;817:17;853:5;:::i;:::-;:10;845:56;;;;-1:-1:-1;;;845:56:0;;13869:2:1;845:56:0;;;13851:21:1;13908:2;13888:18;;;13881:30;13947:34;13927:18;;;13920:62;-1:-1:-1;;;13998:18:1;;;13991:31;14039:19;;845:56:0;13667:397:1;936:132:0;994:7;1021:39;1025:1;1028;1021:39;;;;;;;;;;;;;;;;;:3;:39::i;340:136::-;398:7;425:43;429:1;432;425:43;;;;;;;;;;;;;;;;;482:192;568:7;604:12;596:6;;;;588:29;;;;-1:-1:-1;;;588:29:0;;;;;;;;:::i;:::-;-1:-1:-1;628:9:0;640:5;644:1;640;:5;:::i;:::-;628:17;482:192;-1:-1:-1;;;;;482:192:0:o;20887:1622::-;20979:4;-1:-1:-1;;;;;21006:20:0;;20998:70;;;;-1:-1:-1;;;20998:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21087:23:0;;21079:71;;;;-1:-1:-1;;;21079:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21167:18:0;;;;;;:10;:18;;;;;;;;21166:19;:45;;;;-1:-1:-1;;;;;;21190:21:0;;;;;;:10;:21;;;;;;;;21189:22;21166:45;21163:128;;;21235:12;;;;:20;;:12;:20;21227:52;;;;-1:-1:-1;;;21227:52:0;;14404:2:1;21227:52:0;;;14386:21:1;14443:2;14423:18;;;14416:30;-1:-1:-1;;;14462:18:1;;;14455:50;14522:18;;21227:52:0;14202:344:1;21227:52:0;-1:-1:-1;;;;;21309:22:0;;;;;;:14;:22;;;;;;;;;:51;;-1:-1:-1;;;;;;21335:25:0;;;;;;:14;:25;;;;;;;;21309:51;21305:131;;;21383:41;21398:6;21406:9;21417:6;21383:14;:41::i;:::-;21376:48;;;;21305:131;21451:6;;;;21448:63;;;21467:41;21482:6;21490:9;21501:6;21467:14;:41::i;21448:63::-;-1:-1:-1;;;;;21527:22:0;;;;;;:14;:22;;;;;;;;21526:23;:53;;;;-1:-1:-1;;;;;;21554:25:0;;;;;;:14;:25;;;;;;;;21553:26;21526:53;21523:136;;;21603:12;;;;:20;;:12;:20;21595:52;;;;-1:-1:-1;;;21595:52:0;;14404:2:1;21595:52:0;;;14386:21:1;14443:2;14423:18;;;14416:30;-1:-1:-1;;;14462:18:1;;;14455:50;14522:18;;21595:52:0;14202:344:1;21595:52:0;21693:4;;-1:-1:-1;;;;;21683:14:0;;;21693:4;;21683:14;:44;;;;-1:-1:-1;;;;;;21701:26:0;;21722:4;21701:26;;21683:44;21679:114;;;21745:7;;;21759:10;;21745:36;;-1:-1:-1;;;21745:36:0;;;;;14725:25:1;-1:-1:-1;;;;;14786:32:1;;;14766:18;;;14759:60;21745:7:0;;:13;;14698:18:1;;21745:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;21679:114;21817:6;;;;21813:76;;;21839:38;21851:6;21859:9;21870:6;21839:11;:38::i;:::-;21904:34;21920:6;21928:9;21904:15;:34::i;:::-;21901:60;;;21941:17;21951:6;21941:9;:17::i;:::-;22001:53;;;;;;;;;;;-1:-1:-1;;;22001:53:0;;;;;;;;-1:-1:-1;;;;;22001:17:0;;-1:-1:-1;22001:17:0;;;:9;:17;;;;;;;;:53;;22023:6;;22001:21;:53::i;:::-;-1:-1:-1;;;;;21981:17:0;;;;;;;:9;:17;;;;;:73;;;;22104:4;;22091:17;;;22104:4;;22091:17;;:35;;-1:-1:-1;22122:4:0;;-1:-1:-1;;;;;22112:14:0;;;22122:4;;22112:14;22091:35;22090:83;;22167:6;22090:83;;;22130:34;22138:6;22146:9;22157:6;22130:7;:34::i;:::-;-1:-1:-1;;;;;22223:20:0;;;;;;:9;:20;;;;;;22065:108;;-1:-1:-1;22223:40:0;;22065:108;22223:24;:40::i;:::-;-1:-1:-1;;;;;22200:20:0;;;;;;;:9;:20;;;;;:63;;;;22299:4;;22289:14;;;22299:4;;22289:14;;:35;;-1:-1:-1;22320:4:0;;-1:-1:-1;;;;;22307:17:0;;;22320:4;;22307:17;22289:35;22288:67;;;;-1:-1:-1;;;;;;22329:26:0;;22350:4;22329:26;;22288:67;22284:117;;;22388:1;22371:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;22284:117:0;22453:9;-1:-1:-1;;;;;22436:43:0;22445:6;-1:-1:-1;;;;;22436:43:0;;22464:14;22436:43;;;;160:25:1;;148:2;133:18;;14:177;22436:43:0;;;;;;;;-1:-1:-1;22497:4:0;;20887:1622;-1:-1:-1;;;;20887:1622:0:o;12254:330::-;12384:53;;;;;;;;;;;-1:-1:-1;;;12384:53:0;;;;;;;;-1:-1:-1;;;;;12384:17:0;;12347:4;12384:17;;;:9;:17;;;;;;;:53;;12406:6;;12384:21;:53::i;:::-;-1:-1:-1;;;;;12364:17:0;;;;;;;:9;:17;;;;;;:73;;;;12471:20;;;;;;;:32;;12496:6;12471:24;:32::i;:::-;-1:-1:-1;;;;;12448:20:0;;;;;;;:9;:20;;;;;;;:55;;;;12519:35;;;;;;;;;;12547:6;160:25:1;;148:2;133:18;;14:177;12519:35:0;;;;;;;;-1:-1:-1;12572:4:0;12254:330;;;;;:::o;1074:345::-;1160:7;1262:12;1255:5;1247:28;;;;-1:-1:-1;;;1247:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1286:9:0;1298:5;1302:1;1298;:5;:::i;14979:649::-;-1:-1:-1;;;;;15080:22:0;;;;;;:14;:22;;;;;;;;15079:23;:53;;;;-1:-1:-1;;;;;;15106:26:0;;15127:4;15106:26;;15079:53;:80;;;;-1:-1:-1;;;;;;15136:23:0;;15154:4;15136:23;;15079:80;:125;;;;-1:-1:-1;15199:4:0;;-1:-1:-1;;;;;15178:26:0;;;15199:4;;15178:26;;15079:125;:146;;;;-1:-1:-1;15221:4:0;;-1:-1:-1;;;;;15208:17:0;;;15221:4;;15208:17;;15079:146;:178;;;;-1:-1:-1;15242:15:0;;-1:-1:-1;;;;;15229:28:0;;;15242:15;;15229:28;;15079:178;:210;;;;-1:-1:-1;15274:15:0;;-1:-1:-1;;;;;15261:28:0;;;15274:15;;15261:28;;15079:210;15075:424;;;-1:-1:-1;;;;;11375:18:0;;15309;11375;;;:9;:18;;;;;;15402:15;;15378:19;15391:6;11375:18;15378:19;:::i;:::-;15377:40;;15369:114;;;;-1:-1:-1;;;15369:114:0;;15416:2:1;15369:114:0;;;15398:21:1;15455:2;15435:18;;;15428:30;15494:34;15474:18;;;15467:62;15565:32;15545:18;;;15538:60;15615:19;;15369:114:0;15214:426:1;15369:114:0;15290:209;15075:424;15529:12;;15519:6;:22;;:49;;;-1:-1:-1;;;;;;15545:23:0;;;;;;:15;:23;;;;;;;;15519:49;:79;;;-1:-1:-1;;;;;;15572:26:0;;;;;;:15;:26;;;;;;;;15519:79;15511:109;;;;-1:-1:-1;;;15511:109:0;;15847:2:1;15511:109:0;;;15829:21:1;15886:2;15866:18;;;15859:30;-1:-1:-1;;;15905:18:1;;;15898:47;15962:18;;15511:109:0;15645:341:1;16791:408:0;16874:4;16893:15;16947;16911:33;16928:15;;16911:12;;:16;;:33;;;;:::i;:::-;16995:4;;16911:51;-1:-1:-1;16911:51:0;-1:-1:-1;;;;;;16982:17:0;;;16995:4;;16982:17;:40;;;;;17012:10;16982:40;:60;;;;-1:-1:-1;17036:6:0;;;;17035:7;16982:60;:84;;;;-1:-1:-1;17055:11:0;;-1:-1:-1;;;17055:11:0;;;;16982:84;:138;;;;-1:-1:-1;17107:13:0;;17097:4;17079:24;;;;:9;:24;;;;;;:41;;16982:138;:209;;;;;17161:30;17187:3;17161:21;17172:9;;17161:6;:10;;:21;;;;:::i;:30::-;17151:4;17133:24;;;;:9;:24;;;;;;:58;;16982:209;16975:216;16791:408;-1:-1:-1;;;;16791:408:0:o;17665:2370::-;7329:6;:13;;-1:-1:-1;;7329:13:0;7338:4;7329:13;;;17761:9:::1;::::0;7329:6;;17749:31:::1;::::0;17776:3:::1;::::0;17749:22:::1;::::0;:7;;:11:::1;:22::i;:31::-;17905:13;::::0;17732:48;;-1:-1:-1;17880:2:0::1;::::0;17896:22;::::1;17895:58;;17940:13;;17931:22;;;17895:58;;;17922:6;17895:58;;17966:23;18008:1:::0;17993:12:::1;;:16;17992:70;;18061:1;17992:70;;;18013:45;18056:1;18013:38;18042:8;;18013:24;18024:12;;18013:6;:10;;:24;;;;:::i;:45::-;17966:96:::0;-1:-1:-1;18075:20:0::1;18098:27;:6:::0;17966:96;18098:10:::1;:27::i;:::-;18162:16;::::0;;18176:1:::1;18162:16:::0;;;;;::::1;::::0;;18075:50;;-1:-1:-1;18138:21:0::1;::::0;18162:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18162:16:0::1;18138:40;;18207:4;18189;18194:1;18189:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;18189:23:0::1;;;-1:-1:-1::0;;;;;18189:23:0::1;;;::::0;::::1;18233:42;18223:4;18228:1;18223:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18223:52:0;;::::1;:7;::::0;;::::1;::::0;;;;;:52;18346:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;18346:188:0;;18312:21:::1;::::0;18346:6:::1;::::0;;::::1;::::0;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;18418:12;;18288:21:::1;::::0;18461:4;;18488::::1;::::0;18508:15:::1;::::0;18346:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18547:15;18575:17:::0;18595:40:::1;18621:13;18595:21;:25;;:40;;;;:::i;:::-;18575:60;;18646:19;18684:1:::0;18669:12:::1;;:16;18668:65;;18725:8;;18668:65;;;18702:12;::::0;18689:33:::1;::::0;18702:19:::1;::::0;18719:1:::1;18702:16;:19::i;:::-;18689:8;::::0;;:12:::1;:33::i;:::-;18646:87;;18756:26;18785:51;18834:1;18785:44;18817:11;18785:27;18799:12;;18785:9;:13;;:27;;;;:::i;:51::-;18851:6;::::0;18756:80;;-1:-1:-1;18851:10:0;18847:242:::1;;18877:20;18900:38;18926:11;18900:21;18914:6;;18900:9;:13;;:21;;;;:::i;:38::-;18991:9;::::0;18983:61:::1;::::0;18877;;-1:-1:-1;;;;;;18991:9:0::1;::::0;19033:6:::1;::::0;18877:61;;18983::::1;::::0;;;18877;18991:9;19033:6;18983:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;19072:5:0::1;::::0;-1:-1:-1;;;;18847:242:0::1;19104:19:::0;;19101:356:::1;;19139:6;::::0;19313:15:::1;::::0;19139:238:::1;::::0;-1:-1:-1;;;19139:238:0;;19215:4:::1;19139:238;::::0;::::1;17659:34:1::0;17709:18;;;17702:34;;;19273:1:0::1;17752:18:1::0;;;17745:34;;;17795:18;;;17788:34;-1:-1:-1;;;;;19313:15:0;;::::1;17838:19:1::0;;;17831:44;19347:15:0::1;17891:19:1::0;;;17884:35;19139:6:0::1;::::0;;::::1;;::::0;:22:::1;::::0;19169:18;;17593:19:1;;19139:238:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;19397:48:0::1;::::0;;18415:25:1;;;18471:2;18456:18;;18449:34;;;19397:48:0::1;::::0;-1:-1:-1;18388:18:1;19397:48:0::1;;;;;;;19101:356;19561:17;19581:38;19607:11:::0;19581:21:::1;:9:::0;19595:6;19581:13:::1;:21::i;:38::-;19654:12;::::0;19646:61:::1;::::0;19561:58;;-1:-1:-1;;;;;;19654:12:0::1;::::0;19696:6:::1;::::0;19561:58;;19646:61:::1;::::0;;;19561:58;19654:12;19696:6;19646:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;19731:5:0::1;::::0;-1:-1:-1;19778:21:0::1;::::0;-1:-1:-1;;19813:22:0;;19810:175:::1;;19875:15;::::0;19867:73:::1;::::0;-1:-1:-1;;;;;19875:15:0;;::::1;::::0;19929:6:::1;::::0;19904:18;;19867:73:::1;::::0;;;19904:18;19875:15;19929:6;19867:73:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;19968:5:0::1;::::0;-1:-1:-1;;;19810:175:0::1;-1:-1:-1::0;;20012:15:0::1;19997:12;:30:::0;-1:-1:-1;;7347:6:0;:14;;-1:-1:-1;;7347:14:0;;;-1:-1:-1;;;;;;;;;17665:2370:0:o;17207:450::-;17371:4;;17293:7;;;;-1:-1:-1;;;;;17358:17:0;;;17371:4;;17358:17;17357:48;;17394:11;;17357:48;;;17379:12;;17357:48;17345:60;-1:-1:-1;17418:17:0;17438:31;17464:4;17438:21;:6;17345:60;17438:10;:21::i;:31::-;17527:4;17509:24;;;;:9;:24;;;;;;17418:51;;-1:-1:-1;17509:39:0;;17418:51;17509:28;:39::i;:::-;17500:4;17482:24;;;;:9;:24;;;;;;;:66;;;;17566:42;;-1:-1:-1;;;;;17566:42:0;;;;;;;17598:9;160:25:1;;148:2;133:18;;14:177;17566:42:0;;;;;;;;17628:21;:6;17639:9;17628:10;:21::i;:::-;17621:28;17207:450;-1:-1:-1;;;;;;17207:450:0:o;196:423:1:-;238:3;276:5;270:12;303:6;298:3;291:19;328:1;338:162;352:6;349:1;346:13;338:162;;;414:4;470:13;;;466:22;;460:29;442:11;;;438:20;;431:59;367:12;338:162;;;342:3;545:1;538:4;529:6;524:3;520:16;516:27;509:38;608:4;601:2;597:7;592:2;584:6;580:15;576:29;571:3;567:39;563:50;556:57;;;196:423;;;;:::o;624:220::-;773:2;762:9;755:21;736:4;793:45;834:2;823:9;819:18;811:6;793:45;:::i;849:131::-;-1:-1:-1;;;;;924:31:1;;914:42;;904:70;;970:1;967;960:12;904:70;849:131;:::o;985:315::-;1053:6;1061;1114:2;1102:9;1093:7;1089:23;1085:32;1082:52;;;1130:1;1127;1120:12;1082:52;1169:9;1156:23;1188:31;1213:5;1188:31;:::i;:::-;1238:5;1290:2;1275:18;;;;1262:32;;-1:-1:-1;;;985:315:1:o;1497:316::-;1574:6;1582;1590;1643:2;1631:9;1622:7;1618:23;1614:32;1611:52;;;1659:1;1656;1649:12;1611:52;-1:-1:-1;;1682:23:1;;;1752:2;1737:18;;1724:32;;-1:-1:-1;1803:2:1;1788:18;;;1775:32;;1497:316;-1:-1:-1;1497:316:1:o;1818:180::-;1877:6;1930:2;1918:9;1909:7;1905:23;1901:32;1898:52;;;1946:1;1943;1936:12;1898:52;-1:-1:-1;1969:23:1;;1818:180;-1:-1:-1;1818:180:1:o;2003:456::-;2080:6;2088;2096;2149:2;2137:9;2128:7;2124:23;2120:32;2117:52;;;2165:1;2162;2155:12;2117:52;2204:9;2191:23;2223:31;2248:5;2223:31;:::i;:::-;2273:5;-1:-1:-1;2330:2:1;2315:18;;2302:32;2343:33;2302:32;2343:33;:::i;:::-;2003:456;;2395:7;;-1:-1:-1;;;2449:2:1;2434:18;;;;2421:32;;2003:456::o;2464:118::-;2550:5;2543:13;2536:21;2529:5;2526:32;2516:60;;2572:1;2569;2562:12;2587:377;2661:6;2669;2677;2730:2;2718:9;2709:7;2705:23;2701:32;2698:52;;;2746:1;2743;2736:12;2698:52;2785:9;2772:23;2804:28;2826:5;2804:28;:::i;:::-;2851:5;2903:2;2888:18;;2875:32;;-1:-1:-1;2954:2:1;2939:18;;;2926:32;;2587:377;-1:-1:-1;;;2587:377:1:o;2969:247::-;3028:6;3081:2;3069:9;3060:7;3056:23;3052:32;3049:52;;;3097:1;3094;3087:12;3049:52;3136:9;3123:23;3155:31;3180:5;3155:31;:::i;3618:127::-;3679:10;3674:3;3670:20;3667:1;3660:31;3710:4;3707:1;3700:15;3734:4;3731:1;3724:15;3750:719;3793:5;3846:3;3839:4;3831:6;3827:17;3823:27;3813:55;;3864:1;3861;3854:12;3813:55;3900:6;3887:20;3926:18;3963:2;3959;3956:10;3953:36;;;3969:18;;:::i;:::-;4044:2;4038:9;4012:2;4098:13;;-1:-1:-1;;4094:22:1;;;4118:2;4090:31;4086:40;4074:53;;;4142:18;;;4162:22;;;4139:46;4136:72;;;4188:18;;:::i;:::-;4228:10;4224:2;4217:22;4263:2;4255:6;4248:18;4309:3;4302:4;4297:2;4289:6;4285:15;4281:26;4278:35;4275:55;;;4326:1;4323;4316:12;4275:55;4390:2;4383:4;4375:6;4371:17;4364:4;4356:6;4352:17;4339:54;4437:1;4430:4;4425:2;4417:6;4413:15;4409:26;4402:37;4457:6;4448:15;;;;;;3750:719;;;;:::o;4474:543::-;4562:6;4570;4623:2;4611:9;4602:7;4598:23;4594:32;4591:52;;;4639:1;4636;4629:12;4591:52;4679:9;4666:23;4708:18;4749:2;4741:6;4738:14;4735:34;;;4765:1;4762;4755:12;4735:34;4788:50;4830:7;4821:6;4810:9;4806:22;4788:50;:::i;:::-;4778:60;;4891:2;4880:9;4876:18;4863:32;4847:48;;4920:2;4910:8;4907:16;4904:36;;;4936:1;4933;4926:12;4904:36;;4959:52;5003:7;4992:8;4981:9;4977:24;4959:52;:::i;:::-;4949:62;;;4474:543;;;;;:::o;5022:383::-;5219:2;5208:9;5201:21;5182:4;5245:45;5286:2;5275:9;5271:18;5263:6;5245:45;:::i;:::-;5338:9;5330:6;5326:22;5321:2;5310:9;5306:18;5299:50;5366:33;5392:6;5384;5366:33;:::i;5410:388::-;5478:6;5486;5539:2;5527:9;5518:7;5514:23;5510:32;5507:52;;;5555:1;5552;5545:12;5507:52;5594:9;5581:23;5613:31;5638:5;5613:31;:::i;:::-;5663:5;-1:-1:-1;5720:2:1;5705:18;;5692:32;5733:33;5692:32;5733:33;:::i;:::-;5785:7;5775:17;;;5410:388;;;;;:::o;6289:380::-;6368:1;6364:12;;;;6411;;;6432:61;;6486:4;6478:6;6474:17;6464:27;;6432:61;6539:2;6531:6;6528:14;6508:18;6505:38;6502:161;;6585:10;6580:3;6576:20;6573:1;6566:31;6620:4;6617:1;6610:15;6648:4;6645:1;6638:15;6502:161;;6289:380;;;:::o;6674:335::-;6876:2;6858:21;;;6915:2;6895:18;;;6888:30;-1:-1:-1;;;6949:2:1;6934:18;;6927:41;7000:2;6985:18;;6674:335::o;7014:127::-;7075:10;7070:3;7066:20;7063:1;7056:31;7106:4;7103:1;7096:15;7130:4;7127:1;7120:15;7146:168;7219:9;;;7250;;7267:15;;;7261:22;;7247:37;7237:71;;7288:18;;:::i;7319:217::-;7359:1;7385;7375:132;;7429:10;7424:3;7420:20;7417:1;7410:31;7464:4;7461:1;7454:15;7492:4;7489:1;7482:15;7375:132;-1:-1:-1;7521:9:1;;7319:217::o;7541:401::-;7743:2;7725:21;;;7782:2;7762:18;;;7755:30;7821:34;7816:2;7801:18;;7794:62;-1:-1:-1;;;7887:2:1;7872:18;;7865:35;7932:3;7917:19;;7541:401::o;7947:399::-;8149:2;8131:21;;;8188:2;8168:18;;;8161:30;8227:34;8222:2;8207:18;;8200:62;-1:-1:-1;;;8293:2:1;8278:18;;8271:33;8336:3;8321:19;;7947:399::o;8351:329::-;8553:2;8535:21;;;8592:1;8572:18;;;8565:29;-1:-1:-1;;;8625:2:1;8610:18;;8603:36;8671:2;8656:18;;8351:329::o;9378:422::-;9467:1;9510:5;9467:1;9524:270;9545:7;9535:8;9532:21;9524:270;;;9604:4;9600:1;9596:6;9592:17;9586:4;9583:27;9580:53;;;9613:18;;:::i;:::-;9663:7;9653:8;9649:22;9646:55;;;9683:16;;;;9646:55;9762:22;;;;9722:15;;;;9524:270;;;9528:3;9378:422;;;;;:::o;9805:806::-;9854:5;9884:8;9874:80;;-1:-1:-1;9925:1:1;9939:5;;9874:80;9973:4;9963:76;;-1:-1:-1;10010:1:1;10024:5;;9963:76;10055:4;10073:1;10068:59;;;;10141:1;10136:130;;;;10048:218;;10068:59;10098:1;10089:10;;10112:5;;;10136:130;10173:3;10163:8;10160:17;10157:43;;;10180:18;;:::i;:::-;-1:-1:-1;;10236:1:1;10222:16;;10251:5;;10048:218;;10350:2;10340:8;10337:16;10331:3;10325:4;10322:13;10318:36;10312:2;10302:8;10299:16;10294:2;10288:4;10285:12;10281:35;10278:77;10275:159;;;-1:-1:-1;10387:19:1;;;10419:5;;10275:159;10466:34;10491:8;10485:4;10466:34;:::i;:::-;10536:6;10532:1;10528:6;10524:19;10515:7;10512:32;10509:58;;;10547:18;;:::i;:::-;10585:20;;9805:806;-1:-1:-1;;;9805:806:1:o;10616:140::-;10674:5;10703:47;10744:4;10734:8;10730:19;10724:4;10703:47;:::i;10887:545::-;10989:2;10984:3;10981:11;10978:448;;;11025:1;11050:5;11046:2;11039:17;11095:4;11091:2;11081:19;11165:2;11153:10;11149:19;11146:1;11142:27;11136:4;11132:38;11201:4;11189:10;11186:20;11183:47;;;-1:-1:-1;11224:4:1;11183:47;11279:2;11274:3;11270:12;11267:1;11263:20;11257:4;11253:31;11243:41;;11334:82;11352:2;11345:5;11342:13;11334:82;;;11397:17;;;11378:1;11367:13;11334:82;;;11338:3;;;10887:545;;;:::o;11608:1352::-;11734:3;11728:10;11761:18;11753:6;11750:30;11747:56;;;11783:18;;:::i;:::-;11812:97;11902:6;11862:38;11894:4;11888:11;11862:38;:::i;:::-;11856:4;11812:97;:::i;:::-;11964:4;;12028:2;12017:14;;12045:1;12040:663;;;;12747:1;12764:6;12761:89;;;-1:-1:-1;12816:19:1;;;12810:26;12761:89;-1:-1:-1;;11565:1:1;11561:11;;;11557:24;11553:29;11543:40;11589:1;11585:11;;;11540:57;12863:81;;12010:944;;12040:663;10834:1;10827:14;;;10871:4;10858:18;;-1:-1:-1;;12076:20:1;;;12194:236;12208:7;12205:1;12202:14;12194:236;;;12297:19;;;12291:26;12276:42;;12389:27;;;;12357:1;12345:14;;;;12224:19;;12194:236;;;12198:3;12458:6;12449:7;12446:19;12443:201;;;12519:19;;;12513:26;-1:-1:-1;;12602:1:1;12598:14;;;12614:3;12594:24;12590:37;12586:42;12571:58;12556:74;;12443:201;-1:-1:-1;;;;;12690:1:1;12674:14;;;12670:22;12657:36;;-1:-1:-1;11608:1352:1:o;13181:125::-;13246:9;;;13267:10;;;13264:36;;;13280:18;;:::i;14069:128::-;14136:9;;;14157:11;;;14154:37;;;14171:18;;:::i;14830:379::-;14906:6;14914;14967:2;14955:9;14946:7;14942:23;14938:32;14935:52;;;14983:1;14980;14973:12;14935:52;15015:9;15009:16;15034:28;15056:5;15034:28;:::i;:::-;15131:2;15116:18;;15110:25;15081:5;;-1:-1:-1;15144:33:1;15110:25;15144:33;:::i;15991:127::-;16052:10;16047:3;16043:20;16040:1;16033:31;16083:4;16080:1;16073:15;16107:4;16104:1;16097:15;16123:980;16385:4;16433:3;16422:9;16418:19;16464:6;16453:9;16446:25;16490:2;16528:6;16523:2;16512:9;16508:18;16501:34;16571:3;16566:2;16555:9;16551:18;16544:31;16595:6;16630;16624:13;16661:6;16653;16646:22;16699:3;16688:9;16684:19;16677:26;;16738:2;16730:6;16726:15;16712:29;;16759:1;16769:195;16783:6;16780:1;16777:13;16769:195;;;16848:13;;-1:-1:-1;;;;;16844:39:1;16832:52;;16939:15;;;;16904:12;;;;16880:1;16798:9;16769:195;;;-1:-1:-1;;;;;;;17020:32:1;;;;17015:2;17000:18;;16993:60;-1:-1:-1;;;17084:3:1;17069:19;17062:35;16981:3;16123:980;-1:-1:-1;;;16123:980:1:o;17930:306::-;18018:6;18026;18034;18087:2;18075:9;18066:7;18062:23;18058:32;18055:52;;;18103:1;18100;18093:12;18055:52;18132:9;18126:16;18116:26;;18182:2;18171:9;18167:18;18161:25;18151:35;;18226:2;18215:9;18211:18;18205:25;18195:35;;17930:306;;;;;:::o

Swarm Source

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