ETH Price: $2,873.01 (+6.78%)
 

Overview

Max Total Supply

1,000,000,000 THC

Holders

52

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
TurkeyHunt

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 2023-11-16
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

/**
 * Turkey Hunt Club 
 * TG: https://t.me/turkeyhuntclub
 * TW: https://twitter.com/turkeyhuntclub
 * WE: https://www.turkeyhunt.club/
 * 
 * 
 * Can you find all the clues? 
 * 
 * Join the turkey hunt. We have stashed away 6 wallets with varying degrees of tokens. The private
 * keys have been split into 3 pieces and seeded on the website, twitter, telegram, medium and within 
 * this contract. 
 * 
 * Not all parts have been seeded on launch. 
 * 
 * Initial launch procedure will be as follows: 
 *  - initial launch tax will be fairly high
 *  - tax will be reduced over time
 *  - final tax will be 3/3 and paid into MW for pushing the project
 *  - after 3/3 the project will be renounced
 * 
 * 
                     .--.
    {\             / q {\
    { `\           \ (-(~`
   { '.{`\          \ \ )
   {'-{ ' \  .-""'-. \ \
   {._{'.' \/       '.) \
   {_.{.   {`            |
   {._{ ' {   ;'-=-.     |
    {-.{.' {  ';-=-.`    /
     {._.{.;    '-=-   .'
      {_.-' `'.__  _,-'
         jgs   |||`
              .='==,
 *
 * Speaking of nothing in particular
 * ---------------------------------
 * I wouldnt look at this contract, no, i really wouldnt .... 0x0C8556D255Ba484eEdc1236C58251d46d1161f49
 */

 // Additional Links
 // Medium: https://medium.com/@TurkeyHuntClub

abstract contract Project {
    address public marketingWallet = 0x8e70e62efbdF0239B3D2F9Ff7F703180B950E627;
    
    string constant NAME = "TurkeyHuntClub";
    string constant SYMBOL = "THC";
    uint8 constant DECIMALS = 18;

    uint256 _totalSupply              = 1_000_000_000 * 10**DECIMALS;
    uint256 public _maxTxAmount       = 20_000_000 * 10**DECIMALS;
    uint256 public _maxWalletToken    = 20_000_000 * 10**DECIMALS;
    uint256 public buyTotalFee        = 40;
    uint256 public swapLpFee          = 5;
    uint256 public swapMarketing      = 35;
    uint256 public swapTotalFee       = swapMarketing + swapLpFee;

    uint256 public transFee           = 0;
    uint256 public feeDenominator     = 100;
}

// SafeMath Library

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

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

// Standard IERC20 Interface

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

// Context

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// Ownership

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

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

// Uniswap Factory

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

// Uniswap Pair

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

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

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

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

    function initialize(address, address) external;
}

// Uniswap Router

interface IUniswapV2Router01 {
    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 removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

// Uniswap Router Updated

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

contract TurkeyHunt is Project, IERC20, Ownable {
    using SafeMath for uint256;

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

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isMaxExempt;
    
    event Burn(address indexed from, uint256 value);
    
    address public autoLiquidityReceiver;

    uint256 targetLiquidity = 8;
    uint256 targetLiquidityDenominator = 100;

    IUniswapV2Router02 public immutable contractRouter;
    address public immutable uniswapV2Pair;

    bool public tradingOpen = false;
    uint256 public swapThreshold = 1_000_000 * 10**DECIMALS;
    uint256 public swapAmount = 1_000_000 * 10**DECIMALS;

    // This is how you set the taxes during launch to be 20/20
    // this can only be called once, and once this has been called
    // if you want to change the taxes you need to use the normal things
    // but they have a max value too.
    bool private midLaunchCalled = false;
    
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Mainnet & Testnet ETH
         // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        contractRouter = _uniswapV2Router;

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

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        isMaxExempt[msg.sender] = true;

        isFeeExempt[marketingWallet] = true;
        isMaxExempt[marketingWallet] = true;
        isTxLimitExempt[marketingWallet] = true;

        autoLiquidityReceiver = msg.sender;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

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

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

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

        return _transferFrom(sender, recipient, amount);
    }

    function setTxLimit(uint256 amount) external onlyOwner() {
        _maxTxAmount = amount;
    }

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

        if(sender != owner() && recipient != owner()){
            require(tradingOpen,"Trading not open yet");
        }

        bool inSell = (recipient == uniswapV2Pair);
        bool inTransfer = (recipient != uniswapV2Pair && sender != uniswapV2Pair);

        if (recipient != address(this) && 
            recipient != address(DEAD) && 
            recipient != uniswapV2Pair && 
            recipient != marketingWallet &&
            recipient != autoLiquidityReceiver
        ){
            uint256 heldTokens = balanceOf(recipient);
            if(!isMaxExempt[recipient]) {
                require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");
            }
        }

        // Checks max transaction limit
        // but no point if the recipient is exempt
        // this check ensures that someone that is buying and is txnExempt then they are able to buy any amount
        if(!isTxLimitExempt[recipient]) {
            checkTxLimit(sender, amount);
        }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = amount;

        // Do NOT take a fee if sender AND recipient are NOT the contract
        // i.e. you are doing a transfer
        if(inTransfer) {
            if(transFee > 0) {
                amountReceived = takeTransferFee(sender, amount);
            }
        } else {
            amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount, inSell) : amount;
            
            if(shouldSwapBack()){ swapBack(); }
        }

        uint256 recipientBalance = _balances[recipient];
        recipientBalance = recipientBalance.add(amountReceived);

        _balances[recipient] = recipientBalance;

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

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

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

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeTransferFee(address sender, uint256 amount) internal returns (uint256) {

        uint256 feeToTake = transFee;
        uint256 feeAmount = amount.mul(feeToTake).mul(100).div(feeDenominator * 100);
        
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) {
        uint256 feeToTake;
        feeToTake = isSell ? swapTotalFee : buyTotalFee;

        uint256 feeAmount = amount.mul(feeToTake).mul(100).div(feeDenominator * 100);
        
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

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

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

    // switch Trading
    function turnTradingOn() external onlyOwner() {
        tradingOpen = true;

        buyTotalFee = 30;
        swapLpFee = 5;
        swapMarketing = 35;
        swapTotalFee = 40;
        feeDenominator = 100;
    }

    function feeOnTransfer(uint256 _fee) external onlyOwner() {
        require(_fee <= 10, "Fee cannot be more than 10%");
        transFee = _fee;
    }

    function feeOnSell(uint256 _newSwapLpFee, uint256 _newSwapMarketingFee, uint256 _feeDenominator) external onlyOwner() {
        uint256 newSellFee = _newSwapLpFee + _newSwapMarketingFee;
        require(newSellFee <= 10, "Fee cannot be more than 10%");

        swapLpFee = _newSwapLpFee;
        swapMarketing = _newSwapMarketingFee;
        swapTotalFee = newSellFee;
        feeDenominator = _feeDenominator;
    }

    function feeOnBuy(uint256 _buyTax) external onlyOwner() {
        require(_buyTax <= 10, "Fee cannot be more than 10%");
        buyTotalFee = _buyTax;
    }

    function midLaunchFees() external onlyOwner() {

        require(!midLaunchCalled, "Already called");

        buyTotalFee = 20;
        swapLpFee = 5;
        swapMarketing = 15;
        swapTotalFee = 20;
        feeDenominator = 100;

        midLaunchCalled = true;
    }

    /**
     * Keep on searching, there are others out there. 
     */
    function getWallet3Part2() public pure returns (string memory) {
        return "dd17022339dba1e3292508";
    }

    function isAddressZero(address _addr) public pure returns (bool) {
        return (_addr == address(0));
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : swapLpFee;
        uint256 amountToLiquify = swapAmount.mul(dynamicLiquidityFee).div(swapTotalFee).div(2);
        uint256 amountToSwap = swapAmount.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

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

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = swapTotalFee.sub(dynamicLiquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH.mul(swapLpFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(swapMarketing).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingWallet).call{value: amountETHMarketing, gas: 30000}("");

        // Supress warning msg
        tmpSuccess = false;

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

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

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

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

    function setNewMarketingWallet (address _newMarketingWallet) external onlyOwner() {
        require(!isAddressZero(_newMarketingWallet), "Cannot set MW to zero address"); 

        isFeeExempt[marketingWallet] = false;
        isFeeExempt[_newMarketingWallet] = true;
        marketingWallet = _newMarketingWallet;
    }

    function setSwapThresholdAmount(uint256 _amount) external onlyOwner() {
        swapThreshold = _amount * 10**DECIMALS;
    }

    function setSwapAmount(uint256 _amount) external onlyOwner() {
        if(_amount > swapThreshold) {
            swapAmount = swapThreshold;
        } else {
            swapAmount = _amount * 10**DECIMALS;
        }        
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner() {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

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

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(uniswapV2Pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

    function burn(uint256 amount) external {
        require(amount <= _balances[msg.sender], "Insufficient Balance");

        _balances[msg.sender] = _balances[msg.sender].sub(amount);
        _balances[DEAD] = _balances[DEAD].add(amount);
        _totalSupply = _totalSupply.sub(amount);

        emit Burn(msg.sender, amount);
        emit Transfer(msg.sender, DEAD, amount);
    }

    /* Airdrop */
    function airDropCustom(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

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

        uint256 SCCC = 0;

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

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

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

    function airDropFixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner {

        require(addresses.length < 801,"GAS Error: max airdrop limit is 800 addresses");

        uint256 SCCC = tokens * addresses.length;

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

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

    event AutoLiquify(uint256 amountETH, uint256 amountBOG);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_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":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airDropCustom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"airDropFixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTax","type":"uint256"}],"name":"feeOnBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSwapLpFee","type":"uint256"},{"internalType":"uint256","name":"_newSwapMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"feeOnSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"feeOnTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWallet3Part2","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"isAddressZero","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"midLaunchFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsMaxExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newMarketingWallet","type":"address"}],"name":"setNewMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapThresholdAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapLpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transFee","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"turnTradingOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600080546001600160a01b031916738e70e62efbdf0239b3d2f9ff7f703180b950e627179055620000386012600a620004ec565b6200004890633b9aca0062000504565b600155620000596012600a620004ec565b62000069906301312d0062000504565b6002556200007a6012600a620004ec565b6200008a906301312d0062000504565b6003556028600455600580805560236006819055620000aa91906200051e565b600755600060089081556064600981905560129182556013556014805460ff19169055620000da90600a620004ec565b620000e990620f424062000504565b601555620000fa6012600a620004ec565b6200010990620f424062000504565b6016556017805460ff191690553480156200012357600080fd5b50600a80546001600160a01b0319163390811790915560405181906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e5919062000534565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000233573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000259919062000534565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cd919062000534565b6001600160a01b0390811660a0528181166080819052306000908152600d60209081526040808320938352928152828220600019905533808352600e8083528484208054600160ff199182168117909255600f80865287872080548316841790556010808752888820805484168517905587548a168852938652878720805483168417905586548916875292855286862080548216831790558554909716855290835284842080549096168117909555601180546001600160a01b031916821790559354848352600c8252838320819055925192835290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3506200055f565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200042e578160001904821115620004125762000412620003d7565b808516156200042057918102915b93841c9390800290620003f2565b509250929050565b6000826200044757506001620004e6565b816200045657506000620004e6565b81600181146200046f57600281146200047a576200049a565b6001915050620004e6565b60ff8411156200048e576200048e620003d7565b50506001821b620004e6565b5060208310610133831016604e8410600b8410161715620004bf575081810a620004e6565b620004cb8383620003ed565b8060001904821115620004e257620004e2620003d7565b0290505b92915050565b6000620004fd60ff84168362000436565b9392505050565b8082028115828204841417620004e657620004e6620003d7565b80820180821115620004e657620004e6620003d7565b6000602082840312156200054757600080fd5b81516001600160a01b0381168114620004fd57600080fd5b60805160a05161278b620005bd6000396000818161058a015281816114680152818161175b01528181611795015281816117f90152611d6101526000818161069501528181611e8001528181611f3a01526120c6015261278b6000f3fe6080604052600436106102e85760003560e01c80635c85974f1161019057806395d89b41116100dc578063dd395c6311610095578063e632313c1161006f578063e632313c146108fb578063f2fde38b1461091b578063f84ba65d1461093b578063ffb54a991461095b57600080fd5b8063dd395c631461087f578063dd62ed3e1461089f578063e53c30b0146108e557600080fd5b806395d89b41146107b35780639b928c2f146107df578063a9059cbb146107ff578063ca33e64c1461081f578063cf703bb91461083f578063d51ed1c81461085f57600080fd5b8063715018a6116101495780637d1db4a5116101235780637d1db4a51461074257806386bd3f9114610758578063893d20e8146107805780638da5cb5b1461079557600080fd5b8063715018a6146106f757806375f0a8741461070c57806378109e541461072c57600080fd5b80635c85974f146106045780635e2a026d14610624578063658d4b7f1461066357806367ac77b41461068357806370a08231146106b7578063713e4ae5146106d757600080fd5b806329e04b4a1161024f5780633fe26dab1161020857806346e421a2116101e257806346e421a21461056257806349bd5a5e146105785780634dd0e4d3146105c4578063571ac8b0146105e457600080fd5b80633fe26dab1461050d57806342966c6814610522578063442a583d1461054257600080fd5b806329e04b4a1461047b5780632b112e491461049b5780632e8fa821146104b0578063313ce567146104c6578063364333f4146104e25780633705b392146104f757600080fd5b80631600d302116102a15780631600d302146103da578063180b0d7e146103fa57806318160ddd146104105780631e25dc5414610425578063201e79911461043b57806323b872dd1461045b57600080fd5b8063026f7d15146102f45780630445b6671461031d5780630693a0211461033357806306fdde031461034a578063095ea7b31461038a5780631161ae39146103ba57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061030a60065481565b6040519081526020015b60405180910390f35b34801561032957600080fd5b5061030a60155481565b34801561033f57600080fd5b50610348610975565b005b34801561035657600080fd5b5060408051808201909152600e81526d2a3ab935b2bca43ab73a21b63ab160911b60208201525b604051610314919061218b565b34801561039657600080fd5b506103aa6103a53660046121ee565b6109cf565b6040519015158152602001610314565b3480156103c657600080fd5b506103aa6103d536600461221a565b610a3c565b3480156103e657600080fd5b506103486103f536600461223c565b610a50565b34801561040657600080fd5b5061030a60095481565b34801561041c57600080fd5b5060015461030a565b34801561043157600080fd5b5061030a60085481565b34801561044757600080fd5b5061034861045636600461221a565b610b1e565b34801561046757600080fd5b506103aa610476366004612259565b610b53565b34801561048757600080fd5b5061034861049636600461229a565b610c15565b3480156104a757600080fd5b5061030a610c5b565b3480156104bc57600080fd5b5061030a60165481565b3480156104d257600080fd5b5060405160128152602001610314565b3480156104ee57600080fd5b50610348610c8c565b34801561050357600080fd5b5061030a60045481565b34801561051957600080fd5b50610348610ccb565b34801561052e57600080fd5b5061034861053d36600461229a565b610d60565b34801561054e57600080fd5b5061034861055d3660046122ff565b610eb0565b34801561056e57600080fd5b5061030a60055481565b34801561058457600080fd5b506105ac7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610314565b3480156105d057600080fd5b506103486105df36600461229a565b610ffe565b3480156105f057600080fd5b506103aa6105ff36600461223c565b61104e565b34801561061057600080fd5b5061034861061f36600461229a565b61105c565b34801561063057600080fd5b506040805180820190915260168152750c8c8626e606464666672c8c4c262ca666472646a60760531b602082015261037d565b34801561066f57600080fd5b5061034861067e36600461235b565b61108b565b34801561068f57600080fd5b506105ac7f000000000000000000000000000000000000000000000000000000000000000081565b3480156106c357600080fd5b5061030a6106d236600461223c565b6110e0565b3480156106e357600080fd5b506103486106f2366004612399565b6110fb565b34801561070357600080fd5b506103486112f9565b34801561071857600080fd5b506000546105ac906001600160a01b031681565b34801561073857600080fd5b5061030a60035481565b34801561074e57600080fd5b5061030a60025481565b34801561076457600080fd5b506103aa61077336600461223c565b6001600160a01b03161590565b34801561078c57600080fd5b506105ac61136d565b3480156107a157600080fd5b50600a546001600160a01b03166105ac565b3480156107bf57600080fd5b5060408051808201909152600381526254484360e81b602082015261037d565b3480156107eb57600080fd5b506103486107fa36600461241c565b611381565b34801561080b57600080fd5b506103aa61081a3660046121ee565b6113f1565b34801561082b57600080fd5b506011546105ac906001600160a01b031681565b34801561084b57600080fd5b5061034861085a36600461229a565b6113fe565b34801561086b57600080fd5b5061030a61087a36600461229a565b61144e565b34801561088b57600080fd5b5061034861089a36600461235b565b61149f565b3480156108ab57600080fd5b5061030a6108ba366004612448565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b3480156108f157600080fd5b5061030a60075481565b34801561090757600080fd5b5061034861091636600461229a565b6114f4565b34801561092757600080fd5b5061034861093636600461223c565b61154e565b34801561094757600080fd5b5061034861095636600461235b565b611639565b34801561096757600080fd5b506014546103aa9060ff1681565b600a546001600160a01b031633146109a85760405162461bcd60e51b815260040161099f90612476565b60405180910390fd5b6014805460ff19166001179055601e60045560058055602360065560286007556064600955565b336000818152600d602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a2a9086815260200190565b60405180910390a35060015b92915050565b600082610a488361144e565b119392505050565b600a546001600160a01b03163314610a7a5760405162461bcd60e51b815260040161099f90612476565b6001600160a01b038116610ad05760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f7420736574204d5720746f207a65726f2061646472657373000000604482015260640161099f565b600080546001600160a01b039081168252600e6020526040808320805460ff1990811690915593909116808352908220805490931660011790925580546001600160a01b0319169091179055565b600a546001600160a01b03163314610b485760405162461bcd60e51b815260040161099f90612476565b601291909155601355565b6001600160a01b0383166000908152600d6020908152604080832033845290915281205460001914610c00576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600d82528381203382529091529190912054610bdb91849061168e565b6001600160a01b0385166000908152600d602090815260408083203384529091529020555b610c0b8484846116ba565b90505b9392505050565b600a546001600160a01b03163314610c3f5760405162461bcd60e51b815260040161099f90612476565b610c4b6012600a6125a5565b610c5590826125b4565b60155550565b6000610c87610c6a60006110e0565b610c81610c7861dead6110e0565b60015490611a94565b90611a94565b905090565b6000805460405147926001600160a01b039092169183156108fc02918491818181858888f19350505050158015610cc7573d6000803e3d6000fd5b5050565b600a546001600160a01b03163314610cf55760405162461bcd60e51b815260040161099f90612476565b60175460ff1615610d395760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e4818d85b1b195960921b604482015260640161099f565b6014600481905560058055600f60065560075560646009556017805460ff19166001179055565b336000908152600c6020526040902054811115610db65760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b604482015260640161099f565b336000908152600c6020526040902054610dd09082611a94565b336000908152600c602052604081209190915561dead90527f45117a726ea4f344045dc210793664a28d2d320b7e03f6bffdae553d24c3586c54610e149082611aa0565b61dead600052600c6020527f45117a726ea4f344045dc210793664a28d2d320b7e03f6bffdae553d24c3586c55600154610e4e9082611a94565b60015560405181815233907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59060200160405180910390a260405181815261dead9033906000805160206127368339815191529060200160405180910390a350565b600a546001600160a01b03163314610eda5760405162461bcd60e51b815260040161099f90612476565b6103218210610f415760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3830302061646472657373657360981b606482015260840161099f565b6000610f4d83836125b4565b905080610f59866110e0565b1015610fa75760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015260640161099f565b60005b83811015610ff657610fe386868684818110610fc857610fc86125cb565b9050602002016020810190610fdd919061223c565b85611aac565b5080610fee816125e1565b915050610faa565b505050505050565b600a546001600160a01b031633146110285760405162461bcd60e51b815260040161099f90612476565b600a8111156110495760405162461bcd60e51b815260040161099f906125fa565b600455565b6000610a36826000196109cf565b600a546001600160a01b031633146110865760405162461bcd60e51b815260040161099f90612476565b600255565b600a546001600160a01b031633146110b55760405162461bcd60e51b815260040161099f90612476565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6001600160a01b03166000908152600c602052604090205490565b600a546001600160a01b031633146111255760405162461bcd60e51b815260040161099f90612476565b6101f5831061118c5760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b606482015260840161099f565b8281146111ec5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b606482015260840161099f565b6000805b848110156112305783838281811061120a5761120a6125cb565b905060200201358261121c9190612631565b915080611228816125e1565b9150506111f0565b508061123b876110e0565b10156112895760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015260640161099f565b60005b848110156112f0576112dd878787848181106112aa576112aa6125cb565b90506020020160208101906112bf919061223c565b8686858181106112d1576112d16125cb565b90506020020135611aac565b50806112e8816125e1565b91505061128c565b50505050505050565b600a546001600160a01b031633146113235760405162461bcd60e51b815260040161099f90612476565b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b6000610c87600a546001600160a01b031690565b600a546001600160a01b031633146113ab5760405162461bcd60e51b815260040161099f90612476565b60006113b78385612631565b9050600a8111156113da5760405162461bcd60e51b815260040161099f906125fa565b600593909355600691909155600791909155600955565b6000610c0e3384846116ba565b600a546001600160a01b031633146114285760405162461bcd60e51b815260040161099f90612476565b600a8111156114495760405162461bcd60e51b815260040161099f906125fa565b600855565b6000610a3661145b610c5b565b611499611492600261148c7f00000000000000000000000000000000000000000000000000000000000000006110e0565b90611b80565b8590611b80565b90611b8c565b600a546001600160a01b031633146114c95760405162461bcd60e51b815260040161099f90612476565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b600a546001600160a01b0316331461151e5760405162461bcd60e51b815260040161099f90612476565b6015548111156115315760155460165550565b61153d6012600a6125a5565b61154790826125b4565b6016555b50565b600a546001600160a01b031633146115785760405162461bcd60e51b815260040161099f90612476565b6001600160a01b0381166115dd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161099f565b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b031633146116635760405162461bcd60e51b815260040161099f90612476565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b600081848411156116b25760405162461bcd60e51b815260040161099f919061218b565b505050900390565b601754600090610100900460ff16156116df576116d8848484611aac565b9050610c0e565b600a546001600160a01b0385811691161480159061170b5750600a546001600160a01b03848116911614155b156117595760145460ff166117595760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161099f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169084161460008115826117ca57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614155b90506001600160a01b03851630148015906117f057506001600160a01b03851661dead14155b801561182e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b801561184857506000546001600160a01b03868116911614155b801561186257506011546001600160a01b03868116911614155b15611918576000611872866110e0565b6001600160a01b03871660009081526010602052604090205490915060ff16611916576003546118a28683612631565b11156119165760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161099f565b505b6001600160a01b0385166000908152600f602052604090205460ff16611942576119428685611b98565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600c909152919091205461199491869061168e565b6001600160a01b0387166000908152600c60205260409020558381156119ce57600854156119c9576119c68786611c01565b90505b611a17565b6001600160a01b0387166000908152600e602052604090205460ff16156119f55784611a00565b611a00878685611ca3565b9050611a0a611d54565b15611a1757611a17611db7565b6001600160a01b0386166000908152600c6020526040902054611a3a8183611aa0565b6001600160a01b038089166000818152600c6020526040908190208490555192935091908a169060008051602061273683398151915290611a7e9086815260200190565b60405180910390a3506001979650505050505050565b6000610c0e8284612644565b6000610c0e8284612631565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600c90915291822054611afd91849061168e565b6001600160a01b038086166000908152600c60205260408082209390935590851681522054611b2c9083611aa0565b6001600160a01b038085166000818152600c6020526040908190209390935591519086169060008051602061273683398151915290611b6e9086815260200190565b60405180910390a35060019392505050565b6000610c0e82846125b4565b6000610c0e8284612657565b60025481111580611bc157506001600160a01b0382166000908152600f602052604090205460ff165b610cc75760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161099f565b60008060085490506000611c2c6009546064611c1d91906125b4565b611499606461148c8887611b80565b306000908152600c6020526040902054909150611c499082611aa0565b306000818152600c6020526040908190209290925590516001600160a01b0387169060008051602061273683398151915290611c889085815260200190565b60405180910390a3611c9a8482611a94565b95945050505050565b60008082611cb357600454611cb7565b6007545b90506000611cdc6009546064611ccd91906125b4565b611499606461148c8987611b80565b306000908152600c6020526040902054909150611cf99082611aa0565b306000818152600c6020526040908190209290925590516001600160a01b0388169060008051602061273683398151915290611d389085815260200190565b60405180910390a3611d4a8582611a94565b9695505050505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590611d975750601754610100900460ff16155b8015610c87575050601554306000908152600c6020526040902054101590565b6017805461ff001916610100179055601254601354600091611dd891610a3c565b611de457600554611de7565b60005b90506000611e0b600261149960075461149986601654611b8090919063ffffffff16565b90506000611e2482601654611a9490919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611e5e57611e5e6125cb565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611edc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f009190612679565b81600181518110611f1357611f136125cb565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b815247917f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611f78908690600090879030904290600401612696565b600060405180830381600087803b158015611f9257600080fd5b505af1158015611fa6573d6000803e3d6000fd5b505050506000611fbf8247611a9490919063ffffffff16565b90506000611fda611fd1886002611b8c565b60075490611a94565b90506000611ffc60026114998461149960055488611b8090919063ffffffff16565b905060006120198361149960065487611b8090919063ffffffff16565b6000805460405192935090916001600160a01b039091169061753090849084818181858888f193505050503d8060008114612070576040519150601f19603f3d011682016040523d82523d6000602084013e612075565b606091505b506000925050891590506121745760115460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990859060c40160606040518083038185885af1158015612112573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121379190612707565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506017805461ff00191690555050505050505050565b600060208083528351808285015260005b818110156121b85785810183015185820160400152820161219c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461154b57600080fd5b6000806040838503121561220157600080fd5b823561220c816121d9565b946020939093013593505050565b6000806040838503121561222d57600080fd5b50508035926020909101359150565b60006020828403121561224e57600080fd5b8135610c0e816121d9565b60008060006060848603121561226e57600080fd5b8335612279816121d9565b92506020840135612289816121d9565b929592945050506040919091013590565b6000602082840312156122ac57600080fd5b5035919050565b60008083601f8401126122c557600080fd5b50813567ffffffffffffffff8111156122dd57600080fd5b6020830191508360208260051b85010111156122f857600080fd5b9250929050565b6000806000806060858703121561231557600080fd5b8435612320816121d9565b9350602085013567ffffffffffffffff81111561233c57600080fd5b612348878288016122b3565b9598909750949560400135949350505050565b6000806040838503121561236e57600080fd5b8235612379816121d9565b91506020830135801515811461238e57600080fd5b809150509250929050565b6000806000806000606086880312156123b157600080fd5b85356123bc816121d9565b9450602086013567ffffffffffffffff808211156123d957600080fd5b6123e589838a016122b3565b909650945060408801359150808211156123fe57600080fd5b5061240b888289016122b3565b969995985093965092949392505050565b60008060006060848603121561243157600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561245b57600080fd5b8235612466816121d9565b9150602083013561238e816121d9565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156124fc5781600019048211156124e2576124e26124ab565b808516156124ef57918102915b93841c93908002906124c6565b509250929050565b60008261251357506001610a36565b8161252057506000610a36565b816001811461253657600281146125405761255c565b6001915050610a36565b60ff841115612551576125516124ab565b50506001821b610a36565b5060208310610133831016604e8410600b841016171561257f575081810a610a36565b61258983836124c1565b806000190482111561259d5761259d6124ab565b029392505050565b6000610c0e60ff841683612504565b8082028115828204841417610a3657610a366124ab565b634e487b7160e01b600052603260045260246000fd5b6000600182016125f3576125f36124ab565b5060010190565b6020808252601b908201527f4665652063616e6e6f74206265206d6f7265207468616e203130250000000000604082015260600190565b80820180821115610a3657610a366124ab565b81810381811115610a3657610a366124ab565b60008261267457634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561268b57600080fd5b8151610c0e816121d9565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126e65784516001600160a01b0316835293830193918301916001016126c1565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561271c57600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208535fe3942973e01506046292b8efaa691973ef5e802594e8139375d75fffe1b64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c80635c85974f1161019057806395d89b41116100dc578063dd395c6311610095578063e632313c1161006f578063e632313c146108fb578063f2fde38b1461091b578063f84ba65d1461093b578063ffb54a991461095b57600080fd5b8063dd395c631461087f578063dd62ed3e1461089f578063e53c30b0146108e557600080fd5b806395d89b41146107b35780639b928c2f146107df578063a9059cbb146107ff578063ca33e64c1461081f578063cf703bb91461083f578063d51ed1c81461085f57600080fd5b8063715018a6116101495780637d1db4a5116101235780637d1db4a51461074257806386bd3f9114610758578063893d20e8146107805780638da5cb5b1461079557600080fd5b8063715018a6146106f757806375f0a8741461070c57806378109e541461072c57600080fd5b80635c85974f146106045780635e2a026d14610624578063658d4b7f1461066357806367ac77b41461068357806370a08231146106b7578063713e4ae5146106d757600080fd5b806329e04b4a1161024f5780633fe26dab1161020857806346e421a2116101e257806346e421a21461056257806349bd5a5e146105785780634dd0e4d3146105c4578063571ac8b0146105e457600080fd5b80633fe26dab1461050d57806342966c6814610522578063442a583d1461054257600080fd5b806329e04b4a1461047b5780632b112e491461049b5780632e8fa821146104b0578063313ce567146104c6578063364333f4146104e25780633705b392146104f757600080fd5b80631600d302116102a15780631600d302146103da578063180b0d7e146103fa57806318160ddd146104105780631e25dc5414610425578063201e79911461043b57806323b872dd1461045b57600080fd5b8063026f7d15146102f45780630445b6671461031d5780630693a0211461033357806306fdde031461034a578063095ea7b31461038a5780631161ae39146103ba57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061030a60065481565b6040519081526020015b60405180910390f35b34801561032957600080fd5b5061030a60155481565b34801561033f57600080fd5b50610348610975565b005b34801561035657600080fd5b5060408051808201909152600e81526d2a3ab935b2bca43ab73a21b63ab160911b60208201525b604051610314919061218b565b34801561039657600080fd5b506103aa6103a53660046121ee565b6109cf565b6040519015158152602001610314565b3480156103c657600080fd5b506103aa6103d536600461221a565b610a3c565b3480156103e657600080fd5b506103486103f536600461223c565b610a50565b34801561040657600080fd5b5061030a60095481565b34801561041c57600080fd5b5060015461030a565b34801561043157600080fd5b5061030a60085481565b34801561044757600080fd5b5061034861045636600461221a565b610b1e565b34801561046757600080fd5b506103aa610476366004612259565b610b53565b34801561048757600080fd5b5061034861049636600461229a565b610c15565b3480156104a757600080fd5b5061030a610c5b565b3480156104bc57600080fd5b5061030a60165481565b3480156104d257600080fd5b5060405160128152602001610314565b3480156104ee57600080fd5b50610348610c8c565b34801561050357600080fd5b5061030a60045481565b34801561051957600080fd5b50610348610ccb565b34801561052e57600080fd5b5061034861053d36600461229a565b610d60565b34801561054e57600080fd5b5061034861055d3660046122ff565b610eb0565b34801561056e57600080fd5b5061030a60055481565b34801561058457600080fd5b506105ac7f000000000000000000000000adc64f1b755ed17f234123dd6fb9bd4e38b22a4981565b6040516001600160a01b039091168152602001610314565b3480156105d057600080fd5b506103486105df36600461229a565b610ffe565b3480156105f057600080fd5b506103aa6105ff36600461223c565b61104e565b34801561061057600080fd5b5061034861061f36600461229a565b61105c565b34801561063057600080fd5b506040805180820190915260168152750c8c8626e606464666672c8c4c262ca666472646a60760531b602082015261037d565b34801561066f57600080fd5b5061034861067e36600461235b565b61108b565b34801561068f57600080fd5b506105ac7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156106c357600080fd5b5061030a6106d236600461223c565b6110e0565b3480156106e357600080fd5b506103486106f2366004612399565b6110fb565b34801561070357600080fd5b506103486112f9565b34801561071857600080fd5b506000546105ac906001600160a01b031681565b34801561073857600080fd5b5061030a60035481565b34801561074e57600080fd5b5061030a60025481565b34801561076457600080fd5b506103aa61077336600461223c565b6001600160a01b03161590565b34801561078c57600080fd5b506105ac61136d565b3480156107a157600080fd5b50600a546001600160a01b03166105ac565b3480156107bf57600080fd5b5060408051808201909152600381526254484360e81b602082015261037d565b3480156107eb57600080fd5b506103486107fa36600461241c565b611381565b34801561080b57600080fd5b506103aa61081a3660046121ee565b6113f1565b34801561082b57600080fd5b506011546105ac906001600160a01b031681565b34801561084b57600080fd5b5061034861085a36600461229a565b6113fe565b34801561086b57600080fd5b5061030a61087a36600461229a565b61144e565b34801561088b57600080fd5b5061034861089a36600461235b565b61149f565b3480156108ab57600080fd5b5061030a6108ba366004612448565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b3480156108f157600080fd5b5061030a60075481565b34801561090757600080fd5b5061034861091636600461229a565b6114f4565b34801561092757600080fd5b5061034861093636600461223c565b61154e565b34801561094757600080fd5b5061034861095636600461235b565b611639565b34801561096757600080fd5b506014546103aa9060ff1681565b600a546001600160a01b031633146109a85760405162461bcd60e51b815260040161099f90612476565b60405180910390fd5b6014805460ff19166001179055601e60045560058055602360065560286007556064600955565b336000818152600d602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a2a9086815260200190565b60405180910390a35060015b92915050565b600082610a488361144e565b119392505050565b600a546001600160a01b03163314610a7a5760405162461bcd60e51b815260040161099f90612476565b6001600160a01b038116610ad05760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f7420736574204d5720746f207a65726f2061646472657373000000604482015260640161099f565b600080546001600160a01b039081168252600e6020526040808320805460ff1990811690915593909116808352908220805490931660011790925580546001600160a01b0319169091179055565b600a546001600160a01b03163314610b485760405162461bcd60e51b815260040161099f90612476565b601291909155601355565b6001600160a01b0383166000908152600d6020908152604080832033845290915281205460001914610c00576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600d82528381203382529091529190912054610bdb91849061168e565b6001600160a01b0385166000908152600d602090815260408083203384529091529020555b610c0b8484846116ba565b90505b9392505050565b600a546001600160a01b03163314610c3f5760405162461bcd60e51b815260040161099f90612476565b610c4b6012600a6125a5565b610c5590826125b4565b60155550565b6000610c87610c6a60006110e0565b610c81610c7861dead6110e0565b60015490611a94565b90611a94565b905090565b6000805460405147926001600160a01b039092169183156108fc02918491818181858888f19350505050158015610cc7573d6000803e3d6000fd5b5050565b600a546001600160a01b03163314610cf55760405162461bcd60e51b815260040161099f90612476565b60175460ff1615610d395760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e4818d85b1b195960921b604482015260640161099f565b6014600481905560058055600f60065560075560646009556017805460ff19166001179055565b336000908152600c6020526040902054811115610db65760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b604482015260640161099f565b336000908152600c6020526040902054610dd09082611a94565b336000908152600c602052604081209190915561dead90527f45117a726ea4f344045dc210793664a28d2d320b7e03f6bffdae553d24c3586c54610e149082611aa0565b61dead600052600c6020527f45117a726ea4f344045dc210793664a28d2d320b7e03f6bffdae553d24c3586c55600154610e4e9082611a94565b60015560405181815233907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59060200160405180910390a260405181815261dead9033906000805160206127368339815191529060200160405180910390a350565b600a546001600160a01b03163314610eda5760405162461bcd60e51b815260040161099f90612476565b6103218210610f415760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3830302061646472657373657360981b606482015260840161099f565b6000610f4d83836125b4565b905080610f59866110e0565b1015610fa75760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015260640161099f565b60005b83811015610ff657610fe386868684818110610fc857610fc86125cb565b9050602002016020810190610fdd919061223c565b85611aac565b5080610fee816125e1565b915050610faa565b505050505050565b600a546001600160a01b031633146110285760405162461bcd60e51b815260040161099f90612476565b600a8111156110495760405162461bcd60e51b815260040161099f906125fa565b600455565b6000610a36826000196109cf565b600a546001600160a01b031633146110865760405162461bcd60e51b815260040161099f90612476565b600255565b600a546001600160a01b031633146110b55760405162461bcd60e51b815260040161099f90612476565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6001600160a01b03166000908152600c602052604090205490565b600a546001600160a01b031633146111255760405162461bcd60e51b815260040161099f90612476565b6101f5831061118c5760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b606482015260840161099f565b8281146111ec5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b606482015260840161099f565b6000805b848110156112305783838281811061120a5761120a6125cb565b905060200201358261121c9190612631565b915080611228816125e1565b9150506111f0565b508061123b876110e0565b10156112895760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015260640161099f565b60005b848110156112f0576112dd878787848181106112aa576112aa6125cb565b90506020020160208101906112bf919061223c565b8686858181106112d1576112d16125cb565b90506020020135611aac565b50806112e8816125e1565b91505061128c565b50505050505050565b600a546001600160a01b031633146113235760405162461bcd60e51b815260040161099f90612476565b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b6000610c87600a546001600160a01b031690565b600a546001600160a01b031633146113ab5760405162461bcd60e51b815260040161099f90612476565b60006113b78385612631565b9050600a8111156113da5760405162461bcd60e51b815260040161099f906125fa565b600593909355600691909155600791909155600955565b6000610c0e3384846116ba565b600a546001600160a01b031633146114285760405162461bcd60e51b815260040161099f90612476565b600a8111156114495760405162461bcd60e51b815260040161099f906125fa565b600855565b6000610a3661145b610c5b565b611499611492600261148c7f000000000000000000000000adc64f1b755ed17f234123dd6fb9bd4e38b22a496110e0565b90611b80565b8590611b80565b90611b8c565b600a546001600160a01b031633146114c95760405162461bcd60e51b815260040161099f90612476565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b600a546001600160a01b0316331461151e5760405162461bcd60e51b815260040161099f90612476565b6015548111156115315760155460165550565b61153d6012600a6125a5565b61154790826125b4565b6016555b50565b600a546001600160a01b031633146115785760405162461bcd60e51b815260040161099f90612476565b6001600160a01b0381166115dd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161099f565b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b031633146116635760405162461bcd60e51b815260040161099f90612476565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b600081848411156116b25760405162461bcd60e51b815260040161099f919061218b565b505050900390565b601754600090610100900460ff16156116df576116d8848484611aac565b9050610c0e565b600a546001600160a01b0385811691161480159061170b5750600a546001600160a01b03848116911614155b156117595760145460ff166117595760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161099f565b7f000000000000000000000000adc64f1b755ed17f234123dd6fb9bd4e38b22a496001600160a01b039081169084161460008115826117ca57507f000000000000000000000000adc64f1b755ed17f234123dd6fb9bd4e38b22a496001600160a01b0316866001600160a01b031614155b90506001600160a01b03851630148015906117f057506001600160a01b03851661dead14155b801561182e57507f000000000000000000000000adc64f1b755ed17f234123dd6fb9bd4e38b22a496001600160a01b0316856001600160a01b031614155b801561184857506000546001600160a01b03868116911614155b801561186257506011546001600160a01b03868116911614155b15611918576000611872866110e0565b6001600160a01b03871660009081526010602052604090205490915060ff16611916576003546118a28683612631565b11156119165760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161099f565b505b6001600160a01b0385166000908152600f602052604090205460ff16611942576119428685611b98565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600c909152919091205461199491869061168e565b6001600160a01b0387166000908152600c60205260409020558381156119ce57600854156119c9576119c68786611c01565b90505b611a17565b6001600160a01b0387166000908152600e602052604090205460ff16156119f55784611a00565b611a00878685611ca3565b9050611a0a611d54565b15611a1757611a17611db7565b6001600160a01b0386166000908152600c6020526040902054611a3a8183611aa0565b6001600160a01b038089166000818152600c6020526040908190208490555192935091908a169060008051602061273683398151915290611a7e9086815260200190565b60405180910390a3506001979650505050505050565b6000610c0e8284612644565b6000610c0e8284612631565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600c90915291822054611afd91849061168e565b6001600160a01b038086166000908152600c60205260408082209390935590851681522054611b2c9083611aa0565b6001600160a01b038085166000818152600c6020526040908190209390935591519086169060008051602061273683398151915290611b6e9086815260200190565b60405180910390a35060019392505050565b6000610c0e82846125b4565b6000610c0e8284612657565b60025481111580611bc157506001600160a01b0382166000908152600f602052604090205460ff165b610cc75760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161099f565b60008060085490506000611c2c6009546064611c1d91906125b4565b611499606461148c8887611b80565b306000908152600c6020526040902054909150611c499082611aa0565b306000818152600c6020526040908190209290925590516001600160a01b0387169060008051602061273683398151915290611c889085815260200190565b60405180910390a3611c9a8482611a94565b95945050505050565b60008082611cb357600454611cb7565b6007545b90506000611cdc6009546064611ccd91906125b4565b611499606461148c8987611b80565b306000908152600c6020526040902054909150611cf99082611aa0565b306000818152600c6020526040908190209290925590516001600160a01b0388169060008051602061273683398151915290611d389085815260200190565b60405180910390a3611d4a8582611a94565b9695505050505050565b6000336001600160a01b037f000000000000000000000000adc64f1b755ed17f234123dd6fb9bd4e38b22a491614801590611d975750601754610100900460ff16155b8015610c87575050601554306000908152600c6020526040902054101590565b6017805461ff001916610100179055601254601354600091611dd891610a3c565b611de457600554611de7565b60005b90506000611e0b600261149960075461149986601654611b8090919063ffffffff16565b90506000611e2482601654611a9490919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611e5e57611e5e6125cb565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611edc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f009190612679565b81600181518110611f1357611f136125cb565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b815247917f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611f78908690600090879030904290600401612696565b600060405180830381600087803b158015611f9257600080fd5b505af1158015611fa6573d6000803e3d6000fd5b505050506000611fbf8247611a9490919063ffffffff16565b90506000611fda611fd1886002611b8c565b60075490611a94565b90506000611ffc60026114998461149960055488611b8090919063ffffffff16565b905060006120198361149960065487611b8090919063ffffffff16565b6000805460405192935090916001600160a01b039091169061753090849084818181858888f193505050503d8060008114612070576040519150601f19603f3d011682016040523d82523d6000602084013e612075565b606091505b506000925050891590506121745760115460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990859060c40160606040518083038185885af1158015612112573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121379190612707565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506017805461ff00191690555050505050505050565b600060208083528351808285015260005b818110156121b85785810183015185820160400152820161219c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461154b57600080fd5b6000806040838503121561220157600080fd5b823561220c816121d9565b946020939093013593505050565b6000806040838503121561222d57600080fd5b50508035926020909101359150565b60006020828403121561224e57600080fd5b8135610c0e816121d9565b60008060006060848603121561226e57600080fd5b8335612279816121d9565b92506020840135612289816121d9565b929592945050506040919091013590565b6000602082840312156122ac57600080fd5b5035919050565b60008083601f8401126122c557600080fd5b50813567ffffffffffffffff8111156122dd57600080fd5b6020830191508360208260051b85010111156122f857600080fd5b9250929050565b6000806000806060858703121561231557600080fd5b8435612320816121d9565b9350602085013567ffffffffffffffff81111561233c57600080fd5b612348878288016122b3565b9598909750949560400135949350505050565b6000806040838503121561236e57600080fd5b8235612379816121d9565b91506020830135801515811461238e57600080fd5b809150509250929050565b6000806000806000606086880312156123b157600080fd5b85356123bc816121d9565b9450602086013567ffffffffffffffff808211156123d957600080fd5b6123e589838a016122b3565b909650945060408801359150808211156123fe57600080fd5b5061240b888289016122b3565b969995985093965092949392505050565b60008060006060848603121561243157600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561245b57600080fd5b8235612466816121d9565b9150602083013561238e816121d9565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156124fc5781600019048211156124e2576124e26124ab565b808516156124ef57918102915b93841c93908002906124c6565b509250929050565b60008261251357506001610a36565b8161252057506000610a36565b816001811461253657600281146125405761255c565b6001915050610a36565b60ff841115612551576125516124ab565b50506001821b610a36565b5060208310610133831016604e8410600b841016171561257f575081810a610a36565b61258983836124c1565b806000190482111561259d5761259d6124ab565b029392505050565b6000610c0e60ff841683612504565b8082028115828204841417610a3657610a366124ab565b634e487b7160e01b600052603260045260246000fd5b6000600182016125f3576125f36124ab565b5060010190565b6020808252601b908201527f4665652063616e6e6f74206265206d6f7265207468616e203130250000000000604082015260600190565b80820180821115610a3657610a366124ab565b81810381811115610a3657610a366124ab565b60008261267457634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561268b57600080fd5b8151610c0e816121d9565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126e65784516001600160a01b0316835293830193918301916001016126c1565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561271c57600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208535fe3942973e01506046292b8efaa691973ef5e802594e8139375d75fffe1b64736f6c63430008110033

Deployed Bytecode Sourcemap

13330:14624:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1938:38;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;1938:38:0;;;;;;;;14153:55;;;;;;;;;;;;;;;;21361:224;;;;;;;;;;;;;:::i;:::-;;15929:79;;;;;;;;;;-1:-1:-1;16001:4:0;;;;;;;;;;;;-1:-1:-1;;;16001:4:0;;;;15929:79;;;;;;;:::i;16352:216::-;;;;;;;;;;-1:-1:-1;16352:216:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;16352:216:0;1205:187:1;26205:150:0;;;;;;;;;;-1:-1:-1;26205:150:0;;;;;:::i;:::-;;:::i;24966:326::-;;;;;;;;;;-1:-1:-1;24966:326:0;;;;;:::i;:::-;;:::i;2097:39::-;;;;;;;;;;;;;;;;15661:88;;;;;;;;;;-1:-1:-1;15734:12:0;;15661:88;;2053:37;;;;;;;;;;;;;;;;25679:184;;;;;;;;;;-1:-1:-1;25679:184:0;;;;;:::i;:::-;;:::i;16870:370::-;;;;;;;;;;-1:-1:-1;16870:370:0;;;;;:::i;:::-;;:::i;25300:127::-;;;;;;;;;;-1:-1:-1;25300:127:0;;;;;:::i;:::-;;:::i;25871:142::-;;;;;;;;;;;;;:::i;14215:52::-;;;;;;;;;;;;;;;;15755:79;;;;;;;;;;-1:-1:-1;15755:79:0;;1631:2;2690:36:1;;2678:2;2663:18;15755:79:0;2548:184:1;21177:153:0;;;;;;;;;;;;;:::i;1849:38::-;;;;;;;;;;;;;;;;22355:286;;;;;;;;;;;;;:::i;26363:390::-;;;;;;;;;;-1:-1:-1;26363:390:0;;;;;:::i;:::-;;:::i;27436:449::-;;;;;;;;;;-1:-1:-1;27436:449:0;;;;;:::i;:::-;;:::i;1894:37::-;;;;;;;;;;;;;;;;14068:38;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3918:32:1;;;3900:51;;3888:2;3873:18;14068:38:0;3754:203:1;22187:160:0;;;;;;;;;;-1:-1:-1;22187:160:0;;;;;:::i;:::-;;:::i;16576:122::-;;;;;;;;;;-1:-1:-1;16576:122:0;;;;;:::i;:::-;;:::i;17248:97::-;;;;;;;;;;-1:-1:-1;17248:97:0;;;;;:::i;:::-;;:::i;22723:113::-;;;;;;;;;;-1:-1:-1;22797:31:0;;;;;;;;;;;;-1:-1:-1;;;22797:31:0;;;;22723:113;;24571:121;;;;;;;;;;-1:-1:-1;24571:121:0;;;;;:::i;:::-;;:::i;14011:50::-;;;;;;;;;;;;;;;16100:105;;;;;;;;;;-1:-1:-1;16100:105:0;;;;;:::i;:::-;;:::i;26780:648::-;;;;;;;;;;-1:-1:-1;26780:648:0;;;;;:::i;:::-;;:::i;4869:148::-;;;;;;;;;;;;;:::i;1434:75::-;;;;;;;;;;-1:-1:-1;1434:75:0;;;;-1:-1:-1;;;;;1434:75:0;;;1781:61;;;;;;;;;;;;;;;;1713;;;;;;;;;;;;;;;;22844:112;;;;;;;;;;-1:-1:-1;22844:112:0;;;;;:::i;:::-;-1:-1:-1;;;;;22928:19:0;;;22844:112;16014:80;;;;;;;;;;;;;:::i;4655:79::-;;;;;;;;;;-1:-1:-1;4720:6:0;;-1:-1:-1;;;;;4720:6:0;4655:79;;15840:83;;;;;;;;;;-1:-1:-1;15914:6:0;;;;;;;;;;;;-1:-1:-1;;;15914:6:0;;;;15840:83;;21754:425;;;;;;;;;;-1:-1:-1;21754:425:0;;;;;:::i;:::-;;:::i;16706:156::-;;;;;;;;;;-1:-1:-1;16706:156:0;;;;;:::i;:::-;;:::i;13883:36::-;;;;;;;;;;-1:-1:-1;13883:36:0;;;;-1:-1:-1;;;;;13883:36:0;;;21593:153;;;;;;;;;;-1:-1:-1;21593:153:0;;;;;:::i;:::-;;:::i;26021:176::-;;;;;;;;;;-1:-1:-1;26021:176:0;;;;;:::i;:::-;;:::i;24700:121::-;;;;;;;;;;-1:-1:-1;24700:121:0;;;;;:::i;:::-;;:::i;16211:133::-;;;;;;;;;;-1:-1:-1;16211:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;16313:19:0;;;16295:7;16313:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;16211:133;1983:61;;;;;;;;;;;;;;;;25435:236;;;;;;;;;;-1:-1:-1;25435:236:0;;;;;:::i;:::-;;:::i;5025:244::-;;;;;;;;;;-1:-1:-1;5025:244:0;;;;;:::i;:::-;;:::i;24829:129::-;;;;;;;;;;-1:-1:-1;24829:129:0;;;;;:::i;:::-;;:::i;14115:31::-;;;;;;;;;;-1:-1:-1;14115:31:0;;;;;;;;21361:224;4782:6;;-1:-1:-1;;;;;4782:6:0;4016:10;4782:22;4774:67;;;;-1:-1:-1;;;4774:67:0;;;;;;;:::i;:::-;;;;;;;;;21418:11:::1;:18:::0;;-1:-1:-1;;21418:18:0::1;21432:4;21418:18;::::0;;21463:2:::1;21449:11;:16:::0;21488:1:::1;21476:13:::0;;21516:2:::1;21500:13;:18:::0;21544:2:::1;21529:12;:17:::0;21574:3:::1;21557:14;:20:::0;21361:224::o;16352:216::-;16456:10;16427:4;16444:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;16444:32:0;;;;;;;;;;:41;;;16501:37;16427:4;;16444:32;;16501:37;;;;16479:6;160:25:1;;148:2;133:18;;14:177;16501:37:0;;;;;;;;-1:-1:-1;16556:4:0;16352:216;;;;;:::o;26205:150::-;26285:4;26341:6;26309:29;26329:8;26309:19;:29::i;:::-;:38;;26205:150;-1:-1:-1;;;26205:150:0:o;24966:326::-;4782:6;;-1:-1:-1;;;;;4782:6:0;4016:10;4782:22;4774:67;;;;-1:-1:-1;;;4774:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22928:19:0;;25059:77:::1;;;::::0;-1:-1:-1;;;25059:77:0;;6808:2:1;25059:77:0::1;::::0;::::1;6790:21:1::0;6847:2;6827:18;;;6820:30;6886:31;6866:18;;;6859:59;6935:18;;25059:77:0::1;6606:353:1::0;25059:77:0::1;25181:5;25162:15:::0;;-1:-1:-1;;;;;25162:15:0;;::::1;25150:28:::0;;:11:::1;:28;::::0;;;;;:36;;-1:-1:-1;;25150:36:0;;::::1;::::0;;;25197:32;;;::::1;::::0;;;;;;:39;;;;::::1;25162:15:::0;25197:39:::1;::::0;;;25247:37;;-1:-1:-1;;;;;;25247:37:0::1;::::0;;::::1;::::0;;24966:326::o;25679:184::-;4782:6;;-1:-1:-1;;;;;4782:6:0;4016:10;4782:22;4774:67;;;;-1:-1:-1;;;4774:67:0;;;;;;;:::i;:::-;25778:15:::1;:25:::0;;;;25814:26:::1;:41:::0;25679:184::o;16870:370::-;-1:-1:-1;;;;;16990:19:0;;16970:4;16990:19;;;:11;:19;;;;;;;;17010:10;16990:31;;;;;;;;-1:-1:-1;;16990:52:0;16987:186;;17092:69;;;;;;;;;;;-1:-1:-1;;;17092:69:0;;;;;;;;-1:-1:-1;;;;;17092:19:0;;-1:-1:-1;17092:19:0;;;:11;:19;;;;;17112:10;17092:31;;;;;;;;;;:69;;17128:6;;17092:35;:69::i;:::-;-1:-1:-1;;;;;17058:19:0;;;;;;:11;:19;;;;;;;;17078:10;17058:31;;;;;;;:103;16987:186;17192:40;17206:6;17214:9;17225:6;17192:13;:40::i;:::-;17185:47;;16870:370;;;;;;:::o;25300:127::-;4782:6;;-1:-1:-1;;;;;4782:6:0;4016:10;4782:22;4774:67;;;;-1:-1:-1;;;4774:67:0;;;;;;;:::i;:::-;25407:12:::1;1631:2;25407;:12;:::i;:::-;25397:22;::::0;:7;:22:::1;:::i;:::-;25381:13;:38:::0;-1:-1:-1;25300:127:0:o;25871:142::-;25924:7;25951:54;25989:15;13517:42;25989:9;:15::i;:::-;25951:33;25968:15;13444:42;25968:9;:15::i;:::-;25951:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;25944:61;;25871:142;:::o;21177:153::-;21226:17;21286:15;;21278:44;;21246:21;;-1:-1:-1;;;;;21286:15:0;;;;21278:44;;;;;21246:21;;21278:44;21226:17;21278:44;21246:21;21286:15;21278:44;;;;;;;;;;;;;;;;;;;;;21215:115;21177:153::o;22355:286::-;4782:6;;-1:-1:-1;;;;;4782:6:0;4016:10;4782:22;4774:67;;;;-1:-1:-1;;;4774:67:0;;;;;;;:::i;:::-;22423:15:::1;::::0;::::1;;22422:16;22414:43;;;::::0;-1:-1:-1;;;22414:43:0;;8854:2:1;22414:43:0::1;::::0;::::1;8836:21:1::0;8893:2;8873:18;;;8866:30;-1:-1:-1;;;8912:18:1;;;8905:44;8966:18;;22414:43:0::1;8652:338:1::0;22414:43:0::1;22484:2;22470:11;:16:::0;;;22509:1:::1;22497:13:::0;;22537:2:::1;22521:13;:18:::0;22550:12:::1;:17:::0;22595:3:::1;22578:14;:20:::0;22611:15:::1;:22:::0;;-1:-1:-1;;22611:22:0::1;22629:4;22611:22;::::0;;22355:286::o;26363:390::-;26441:10;26431:21;;;;:9;:21;;;;;;26421:31;;;26413:64;;;;-1:-1:-1;;;26413:64:0;;9197:2:1;26413:64:0;;;9179:21:1;9236:2;9216:18;;;9209:30;-1:-1:-1;;;9255:18:1;;;9248:50;9315:18;;26413:64:0;8995:344:1;26413:64:0;26524:10;26514:21;;;;:9;:21;;;;;;:33;;26540:6;26514:25;:33::i;:::-;26500:10;26490:21;;;;:9;:21;;;;;:57;;;;13444:42;26576:15;;;;:27;;26596:6;26576:19;:27::i;:::-;13444:42;26558:15;;:9;:15;;;:45;26629:12;;:24;;26646:6;26629:16;:24::i;:::-;26614:12;:39;26671:24;;160:25:1;;;26676:10:0;;26671:24;;148:2:1;133:18;26671:24:0;;;;;;;26711:34;;160:25:1;;;13444:42:0;;26720:10;;-1:-1:-1;;;;;;;;;;;26711:34:0;148:2:1;133:18;26711:34:0;;;;;;;26363:390;:::o;27436:449::-;4782:6;;-1:-1:-1;;;;;4782:6:0;4016:10;4782:22;4774:67;;;;-1:-1:-1;;;4774:67:0;;;;;;;:::i;:::-;27577:3:::1;27558:22:::0;::::1;27550:79;;;::::0;-1:-1:-1;;;27550:79:0;;9546:2:1;27550:79:0::1;::::0;::::1;9528:21:1::0;9585:2;9565:18;;;9558:30;9624:34;9604:18;;;9597:62;-1:-1:-1;;;9675:18:1;;;9668:43;9728:19;;27550:79:0::1;9344:409:1::0;27550:79:0::1;27642:12;27657:25;27666:9:::0;27657:6;:25:::1;:::i;:::-;27642:40;;27722:4;27703:15;27713:4;27703:9;:15::i;:::-;:23;;27695:63;;;::::0;-1:-1:-1;;;27695:63:0;;9960:2:1;27695:63:0::1;::::0;::::1;9942:21:1::0;9999:2;9979:18;;;9972:30;10038:29;10018:18;;;10011:57;10085:18;;27695:63:0::1;9758:351:1::0;27695:63:0::1;27775:6;27771:107;27785:20:::0;;::::1;27771:107;;;27826:40;27841:4;27846:9;;27856:1;27846:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;27859:6;27826:14;:40::i;:::-;-1:-1:-1::0;27807:3:0;::::1;::::0;::::1;:::i;:::-;;;;27771:107;;;;27537:348;27436:449:::0;;;;:::o;22187:160::-;4782:6;;-1:-1:-1;;;;;4782:6:0;4016:10;4782:22;4774:67;;;;-1:-1:-1;;;4774:67:0;;;;;;;:::i;:::-;22273:2:::1;22262:7;:13;;22254:53;;;;-1:-1:-1::0;;;22254:53:0::1;;;;;;;:::i;:::-;22318:11;:21:::0;22187:160::o;16576:122::-;16631:4;16655:35;16663:7;-1:-1:-1;;16655:7:0;:35::i;17248:97::-;4782:6;;-1:-1:-1;;;;;4782:6:0;4016:10;4782:22;4774:67;;;;-1:-1:-1;;;4774:67:0;;;;;;;:::i;:::-;17316:12:::1;:21:::0;17248:97::o;24571:121::-;4782:6;;-1:-1:-1;;;;;4782:6:0;4016:10;4782:22;4774:67;;;;-1:-1:-1;;;4774:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24656:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;24656:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24571:121::o;16100:105::-;-1:-1:-1;;;;;16184:18:0;16166:7;16184:18;;;:9;:18;;;;;;;16100:105::o;26780:648::-;4782:6;;-1:-1:-1;;;;;4782:6:0;4016:10;4782:22;4774:67;;;;-1:-1:-1;;;4774:67:0;;;;;;;:::i;:::-;26933:3:::1;26914:22:::0;::::1;26906:79;;;::::0;-1:-1:-1;;;26906:79:0;;10944:2:1;26906:79:0::1;::::0;::::1;10926:21:1::0;10983:2;10963:18;;;10956:30;11022:34;11002:18;;;10995:62;-1:-1:-1;;;11073:18:1;;;11066:43;11126:19;;26906:79:0::1;10742:409:1::0;26906:79:0::1;27004:33:::0;;::::1;26996:85;;;::::0;-1:-1:-1;;;26996:85:0;;11358:2:1;26996:85:0::1;::::0;::::1;11340:21:1::0;11397:2;11377:18;;;11370:30;11436:34;11416:18;;;11409:62;-1:-1:-1;;;11487:18:1;;;11480:38;11535:19;;26996:85:0::1;11156:404:1::0;26996:85:0::1;27094:12;27127:6:::0;27123:90:::1;27137:20:::0;;::::1;27123:90;;;27192:6;;27199:1;27192:9;;;;;;;:::i;:::-;;;;;;;27185:4;:16;;;;:::i;:::-;27178:23:::0;-1:-1:-1;27159:3:0;::::1;::::0;::::1;:::i;:::-;;;;27123:90;;;;27252:4;27233:15;27243:4;27233:9;:15::i;:::-;:23;;27225:63;;;::::0;-1:-1:-1;;;27225:63:0;;9960:2:1;27225:63:0::1;::::0;::::1;9942:21:1::0;9999:2;9979:18;;;9972:30;10038:29;10018:18;;;10011:57;10085:18;;27225:63:0::1;9758:351:1::0;27225:63:0::1;27305:6;27301:110;27315:20:::0;;::::1;27301:110;;;27356:43;27371:4;27376:9;;27386:1;27376:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;27389:6;;27396:1;27389:9;;;;;;;:::i;:::-;;;;;;;27356:14;:43::i;:::-;-1:-1:-1::0;27337:3:0;::::1;::::0;::::1;:::i;:::-;;;;27301:110;;;;26893:535;26780:648:::0;;;;;:::o;4869:148::-;4782:6;;-1:-1:-1;;;;;4782:6:0;4016:10;4782:22;4774:67;;;;-1:-1:-1;;;4774:67:0;;;;;;;:::i;:::-;4960:6:::1;::::0;4939:40:::1;::::0;4976:1:::1;::::0;-1:-1:-1;;;;;4960:6:0::1;::::0;4939:40:::1;::::0;4976:1;;4939:40:::1;4990:6;:19:::0;;-1:-1:-1;;;;;;4990:19:0::1;::::0;;4869:148::o;16014:80::-;16066:7;16084;4720:6;;-1:-1:-1;;;;;4720:6:0;;4655:79;21754:425;4782:6;;-1:-1:-1;;;;;4782:6:0;4016:10;4782:22;4774:67;;;;-1:-1:-1;;;4774:67:0;;;;;;;:::i;:::-;21883:18:::1;21904:36;21920:20:::0;21904:13;:36:::1;:::i;:::-;21883:57;;21973:2;21959:10;:16;;21951:56;;;;-1:-1:-1::0;;;21951:56:0::1;;;;;;;:::i;:::-;22020:9;:25:::0;;;;22056:13:::1;:36:::0;;;;22103:12:::1;:25:::0;;;;22139:14:::1;:32:::0;21754:425::o;16706:156::-;16786:4;16810:44;16824:10;16836:9;16847:6;16810:13;:44::i;21593:153::-;4782:6;;-1:-1:-1;;;;;4782:6:0;4016:10;4782:22;4774:67;;;;-1:-1:-1;;;4774:67:0;;;;;;;:::i;:::-;21678:2:::1;21670:4;:10;;21662:50;;;;-1:-1:-1::0;;;21662:50:0::1;;;;;;;:::i;:::-;21723:8;:15:::0;21593:153::o;26021:176::-;26089:7;26116:73;26166:22;:20;:22::i;:::-;26116:45;26129:31;26158:1;26129:24;26139:13;26129:9;:24::i;:::-;:28;;:31::i;:::-;26116:8;;:12;:45::i;:::-;:49;;:73::i;24700:121::-;4782:6;;-1:-1:-1;;;;;4782:6:0;4016:10;4782:22;4774:67;;;;-1:-1:-1;;;4774:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24785:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;24785:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24700:121::o;25435:236::-;4782:6;;-1:-1:-1;;;;;4782:6:0;4016:10;4782:22;4774:67;;;;-1:-1:-1;;;4774:67:0;;;;;;;:::i;:::-;25520:13:::1;;25510:7;:23;25507:149;;;25563:13;::::0;25550:10:::1;:26:::0;25435:236;:::o;25507:149::-:1;25632:12;1631:2;25632;:12;:::i;:::-;25622:22;::::0;:7;:22:::1;:::i;:::-;25609:10;:35:::0;25507:149:::1;25435:236:::0;:::o;5025:244::-;4782:6;;-1:-1:-1;;;;;4782:6:0;4016:10;4782:22;4774:67;;;;-1:-1:-1;;;4774:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5114:22:0;::::1;5106:73;;;::::0;-1:-1:-1;;;5106:73:0;;11897:2:1;5106:73:0::1;::::0;::::1;11879:21:1::0;11936:2;11916:18;;;11909:30;11975:34;11955:18;;;11948:62;-1:-1:-1;;;12026:18:1;;;12019:36;12072:19;;5106:73:0::1;11695:402:1::0;5106:73:0::1;5216:6;::::0;5195:38:::1;::::0;-1:-1:-1;;;;;5195:38:0;;::::1;::::0;5216:6:::1;::::0;5195:38:::1;::::0;5216:6:::1;::::0;5195:38:::1;5244:6;:17:::0;;-1:-1:-1;;;;;;5244:17:0::1;-1:-1:-1::0;;;;;5244:17:0;;;::::1;::::0;;;::::1;::::0;;5025:244::o;24829:129::-;4782:6;;-1:-1:-1;;;;;4782:6:0;4016:10;4782:22;4774:67;;;;-1:-1:-1;;;4774:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24918:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;24918:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24829:129::o;2617:240::-;2737:7;2798:12;2790:6;;;;2782:29;;;;-1:-1:-1;;;2782:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2833:5:0;;;2617:240::o;17353:2112::-;17465:6;;17445:4;;17465:6;;;;;17462:63;;;17481:41;17496:6;17504:9;17515:6;17481:14;:41::i;:::-;17474:48;;;;17462:63;4720:6;;-1:-1:-1;;;;;17540:17:0;;;4720:6;;17540:17;;;;:41;;-1:-1:-1;4720:6:0;;-1:-1:-1;;;;;17561:20:0;;;4720:6;;17561:20;;17540:41;17537:115;;;17605:11;;;;17597:43;;;;-1:-1:-1;;;17597:43:0;;12304:2:1;17597:43:0;;;12286:21:1;12343:2;12323:18;;;12316:30;-1:-1:-1;;;12362:18:1;;;12355:50;12422:18;;17597:43:0;12102:344:1;17597:43:0;17692:13;-1:-1:-1;;;;;17679:26:0;;;;;;;17664:11;17736:26;;17679;17736:53;;;17776:13;-1:-1:-1;;;;;17766:23:0;:6;-1:-1:-1;;;;;17766:23:0;;;17736:53;17717:73;-1:-1:-1;;;;;;17807:26:0;;17828:4;17807:26;;;;:70;;-1:-1:-1;;;;;;17851:26:0;;13444:42;17851:26;;17807:70;:114;;;;;17908:13;-1:-1:-1;;;;;17895:26:0;:9;-1:-1:-1;;;;;17895:26:0;;;17807:114;:160;;;;-1:-1:-1;17952:15:0;;-1:-1:-1;;;;;17939:28:0;;;17952:15;;17939:28;;17807:160;:211;;;;-1:-1:-1;17997:21:0;;-1:-1:-1;;;;;17984:34:0;;;17997:21;;17984:34;;17807:211;17803:485;;;18044:18;18065:20;18075:9;18065;:20::i;:::-;-1:-1:-1;;;;;18104:22:0;;;;;;:11;:22;;;;;;18044:41;;-1:-1:-1;18104:22:0;;18100:177;;18180:15;;18156:19;18169:6;18156:10;:19;:::i;:::-;18155:40;;18147:114;;;;-1:-1:-1;;;18147:114:0;;12653:2:1;18147:114:0;;;12635:21:1;12692:2;12672:18;;;12665:30;12731:34;12711:18;;;12704:62;12802:32;12782:18;;;12775:60;12852:19;;18147:114:0;12451:426:1;18147:114:0;18029:259;17803:485;-1:-1:-1;;;;;18510:26:0;;;;;;:15;:26;;;;;;;;18506:87;;18553:28;18566:6;18574;18553:12;:28::i;:::-;18652:53;;;;;;;;;;;-1:-1:-1;;;18652:53:0;;;;;;;;-1:-1:-1;;;;;18652:17:0;;-1:-1:-1;18652:17:0;;;:9;:17;;;;;;;;:53;;18674:6;;18652:21;:53::i;:::-;-1:-1:-1;;;;;18632:17:0;;;;;;:9;:17;;;;;:73;18743:6;18879:318;;;;18912:8;;:12;18909:100;;18962:31;18978:6;18986;18962:15;:31::i;:::-;18945:48;;18909:100;18879:318;;;-1:-1:-1;;;;;20072:19:0;;20047:4;20072:19;;;:11;:19;;;;;;;;20071:20;19058:64;;19116:6;19058:64;;;19082:31;19090:6;19098;19106;19082:7;:31::i;:::-;19041:81;;19154:16;:14;:16::i;:::-;19151:35;;;19173:10;:8;:10::i;:::-;-1:-1:-1;;;;;19236:20:0;;19209:24;19236:20;;;:9;:20;;;;;;19286:36;19236:20;19307:14;19286:20;:36::i;:::-;-1:-1:-1;;;;;19335:20:0;;;;;;;:9;:20;;;;;;;:39;;;19392:43;19267:55;;-1:-1:-1;19335:20:0;19392:43;;;;-1:-1:-1;;;;;;;;;;;19392:43:0;;;19420:14;160:25:1;;148:2;133:18;;14:177;19392:43:0;;;;;;;;-1:-1:-1;19453:4:0;;17353:2112;-1:-1:-1;;;;;;;17353:2112:0:o;2299:98::-;2357:7;2384:5;2388:1;2384;:5;:::i;2193:98::-;2251:7;2278:5;2282:1;2278;:5;:::i;19473:330::-;19603:53;;;;;;;;;;;-1:-1:-1;;;19603:53:0;;;;;;;;-1:-1:-1;;;;;19603:17:0;;19566:4;19603:17;;;:9;:17;;;;;;;:53;;19625:6;;19603:21;:53::i;:::-;-1:-1:-1;;;;;19583:17:0;;;;;;;:9;:17;;;;;;:73;;;;19690:20;;;;;;;:32;;19715:6;19690:24;:32::i;:::-;-1:-1:-1;;;;;19667:20:0;;;;;;;:9;:20;;;;;;;:55;;;;19738:35;;;;;;-1:-1:-1;;;;;;;;;;;19738:35:0;;;19766:6;160:25:1;;148:2;133:18;;14:177;19738:35:0;;;;;;;;-1:-1:-1;19791:4:0;19473:330;;;;;:::o;2405:98::-;2463:7;2490:5;2494:1;2490;:5;:::i;2511:98::-;2569:7;2596:5;2600:1;2596;:5;:::i;19811:166::-;19908:12;;19898:6;:22;;:49;;;-1:-1:-1;;;;;;19924:23:0;;;;;;:15;:23;;;;;;;;19898:49;19890:79;;;;-1:-1:-1;;;19890:79:0;;13439:2:1;19890:79:0;;;13421:21:1;13478:2;13458:18;;;13451:30;-1:-1:-1;;;13497:18:1;;;13490:47;13554:18;;19890:79:0;13237:341:1;20107:406:0;20182:7;20204:17;20224:8;;20204:28;;20243:17;20263:56;20298:14;;20315:3;20298:20;;;;:::i;:::-;20263:30;20289:3;20263:21;:6;20274:9;20263:10;:21::i;:56::-;20385:4;20367:24;;;;:9;:24;;;;;;20243:76;;-1:-1:-1;20367:39:0;;20243:76;20367:28;:39::i;:::-;20358:4;20340:24;;;;:9;:24;;;;;;;:66;;;;20422:42;;-1:-1:-1;;;;;20422:42:0;;;-1:-1:-1;;;;;;;;;;;20422:42:0;;;20454:9;160:25:1;;148:2;133:18;;14:177;20422:42:0;;;;;;;;20484:21;:6;20495:9;20484:10;:21::i;:::-;20477:28;20107:406;-1:-1:-1;;;;;20107:406:0:o;20521:458::-;20601:7;20621:17;20661:6;:35;;20685:11;;20661:35;;;20670:12;;20661:35;20649:47;;20709:17;20729:56;20764:14;;20781:3;20764:20;;;;:::i;:::-;20729:30;20755:3;20729:21;:6;20740:9;20729:10;:21::i;:56::-;20851:4;20833:24;;;;:9;:24;;;;;;20709:76;;-1:-1:-1;20833:39:0;;20709:76;20833:28;:39::i;:::-;20824:4;20806:24;;;;:9;:24;;;;;;;:66;;;;20888:42;;-1:-1:-1;;;;;20888:42:0;;;-1:-1:-1;;;;;;;;;;;20888:42:0;;;20920:9;160:25:1;;148:2;133:18;;14:177;20888:42:0;;;;;;;;20950:21;:6;20961:9;20950:10;:21::i;:::-;20943:28;20521:458;-1:-1:-1;;;;;;20521:458:0:o;20987:182::-;21036:4;21060:10;-1:-1:-1;;;;;21074:13:0;21060:27;;;;;:47;;-1:-1:-1;21101:6:0;;;;;;;21100:7;21060:47;:101;;;;-1:-1:-1;;21148:13:0;;21138:4;21120:24;;;;:9;:24;;;;;;:41;;;20987:182::o;22964:1599::-;14610:6;:13;;-1:-1:-1;;14610:13:0;;;;;23059:15:::1;::::0;23076:26:::1;::::0;14610:13;;23043:60:::1;::::0;:15:::1;:60::i;:::-;:76;;23110:9;;23043:76;;;23106:1;23043:76;23013:106;;23130:23;23156:60;23214:1;23156:53;23196:12;;23156:35;23171:19;23156:10;;:14;;:35;;;;:::i;:60::-;23130:86;;23227:20;23250:31;23265:15;23250:10;;:14;;:31;;;;:::i;:::-;23318:16;::::0;;23332:1:::1;23318:16:::0;;;;;::::1;::::0;;23227:54;;-1:-1:-1;23294:21:0::1;::::0;23318:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23318:16:0::1;23294:40;;23363:4;23345;23350:1;23345:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;23345:23:0::1;;;-1:-1:-1::0;;;;;23345:23:0::1;;;::::0;::::1;23389:14;-1:-1:-1::0;;;;;23389:19:0::1;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23379:4;23384:1;23379:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23379:31:0;;::::1;:7;::::0;;::::1;::::0;;;;;:31;23481:196:::1;::::0;-1:-1:-1;;;23481:196:0;;23447:21:::1;::::0;23481:14:::1;:65;::::0;::::1;::::0;:196:::1;::::0;23561:12;;23423:21:::1;::::0;23604:4;;23631::::1;::::0;23651:15:::1;::::0;23481:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23690:17;23710:40;23736:13;23710:21;:25;;:40;;;;:::i;:::-;23690:60:::0;-1:-1:-1;23763:19:0::1;23785:44;23802:26;:19:::0;23826:1:::1;23802:23;:26::i;:::-;23785:12;::::0;;:16:::1;:44::i;:::-;23763:66;;23842:26;23871:48;23917:1;23871:41;23900:11;23871:24;23885:9;;23871;:13;;:24;;;;:::i;:48::-;23842:77;;23930:26;23959:45;23992:11;23959:28;23973:13;;23959:9;:13;;:28;;;;:::i;:45::-;24018:15;24046::::0;;24038:72:::1;::::0;23930:74;;-1:-1:-1;24018:15:0;;-1:-1:-1;;;;;24046:15:0;;::::1;::::0;24100:5:::1;::::0;23930:74;;24018:15;24038:72;24018:15;24038:72;23930:74;24046:15;24100:5;24038:72:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;24168:5:0::1;::::0;-1:-1:-1;;24189:19:0;;;-1:-1:-1;24186:370:0::1;;24406:21;::::0;24224:252:::1;::::0;-1:-1:-1;;;24224:252:0;;24308:4:::1;24224:252;::::0;::::1;15507:34:1::0;15557:18;;;15550:34;;;-1:-1:-1;15600:18:1;;;15593:34;;;15643:18;;;15636:34;-1:-1:-1;;;;;24406:21:0;;::::1;15686:19:1::0;;;15679:44;24446:15:0::1;15739:19:1::0;;;15732:35;24224:14:0::1;:30:::0;;::::1;::::0;::::1;::::0;24262:18;;15441:19:1;;24224:252:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;24496:48:0::1;::::0;;16263:25:1;;;16319:2;16304:18;;16297:34;;;24496:48:0::1;::::0;-1:-1:-1;16236:18:1;24496:48:0::1;;;;;;;24186:370;-1:-1:-1::0;;14628:6:0;:14;;-1:-1:-1;;14628:14:0;;;-1:-1:-1;;;;;;;;22964:1599:0:o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:248::-;1465:6;1473;1526:2;1514:9;1505:7;1501:23;1497:32;1494:52;;;1542:1;1539;1532:12;1494:52;-1:-1:-1;;1565:23:1;;;1635:2;1620:18;;;1607:32;;-1:-1:-1;1397:248:1:o;1650:247::-;1709:6;1762:2;1750:9;1741:7;1737:23;1733:32;1730:52;;;1778:1;1775;1768:12;1730:52;1817:9;1804:23;1836:31;1861:5;1836:31;:::i;1902:456::-;1979:6;1987;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2103:9;2090:23;2122:31;2147:5;2122:31;:::i;:::-;2172:5;-1:-1:-1;2229:2:1;2214:18;;2201:32;2242:33;2201:32;2242:33;:::i;:::-;1902:456;;2294:7;;-1:-1:-1;;;2348:2:1;2333:18;;;;2320:32;;1902:456::o;2363:180::-;2422:6;2475:2;2463:9;2454:7;2450:23;2446:32;2443:52;;;2491:1;2488;2481:12;2443:52;-1:-1:-1;2514:23:1;;2363:180;-1:-1:-1;2363:180:1:o;2737:367::-;2800:8;2810:6;2864:3;2857:4;2849:6;2845:17;2841:27;2831:55;;2882:1;2879;2872:12;2831:55;-1:-1:-1;2905:20:1;;2948:18;2937:30;;2934:50;;;2980:1;2977;2970:12;2934:50;3017:4;3009:6;3005:17;2993:29;;3077:3;3070:4;3060:6;3057:1;3053:14;3045:6;3041:27;3037:38;3034:47;3031:67;;;3094:1;3091;3084:12;3031:67;2737:367;;;;;:::o;3109:640::-;3213:6;3221;3229;3237;3290:2;3278:9;3269:7;3265:23;3261:32;3258:52;;;3306:1;3303;3296:12;3258:52;3345:9;3332:23;3364:31;3389:5;3364:31;:::i;:::-;3414:5;-1:-1:-1;3470:2:1;3455:18;;3442:32;3497:18;3486:30;;3483:50;;;3529:1;3526;3519:12;3483:50;3568:70;3630:7;3621:6;3610:9;3606:22;3568:70;:::i;:::-;3109:640;;3657:8;;-1:-1:-1;3542:96:1;;3739:2;3724:18;3711:32;;3109:640;-1:-1:-1;;;;3109:640:1:o;3962:416::-;4027:6;4035;4088:2;4076:9;4067:7;4063:23;4059:32;4056:52;;;4104:1;4101;4094:12;4056:52;4143:9;4130:23;4162:31;4187:5;4162:31;:::i;:::-;4212:5;-1:-1:-1;4269:2:1;4254:18;;4241:32;4311:15;;4304:23;4292:36;;4282:64;;4342:1;4339;4332:12;4282:64;4365:7;4355:17;;;3962:416;;;;;:::o;4618:908::-;4749:6;4757;4765;4773;4781;4834:2;4822:9;4813:7;4809:23;4805:32;4802:52;;;4850:1;4847;4840:12;4802:52;4889:9;4876:23;4908:31;4933:5;4908:31;:::i;:::-;4958:5;-1:-1:-1;5014:2:1;4999:18;;4986:32;5037:18;5067:14;;;5064:34;;;5094:1;5091;5084:12;5064:34;5133:70;5195:7;5186:6;5175:9;5171:22;5133:70;:::i;:::-;5222:8;;-1:-1:-1;5107:96:1;-1:-1:-1;5310:2:1;5295:18;;5282:32;;-1:-1:-1;5326:16:1;;;5323:36;;;5355:1;5352;5345:12;5323:36;;5394:72;5458:7;5447:8;5436:9;5432:24;5394:72;:::i;:::-;4618:908;;;;-1:-1:-1;4618:908:1;;-1:-1:-1;5485:8:1;;5368:98;4618:908;-1:-1:-1;;;4618:908:1:o;5531:316::-;5608:6;5616;5624;5677:2;5665:9;5656:7;5652:23;5648:32;5645:52;;;5693:1;5690;5683:12;5645:52;-1:-1:-1;;5716:23:1;;;5786:2;5771:18;;5758:32;;-1:-1:-1;5837:2:1;5822:18;;;5809:32;;5531:316;-1:-1:-1;5531:316:1:o;5852:388::-;5920:6;5928;5981:2;5969:9;5960:7;5956:23;5952:32;5949:52;;;5997:1;5994;5987:12;5949:52;6036:9;6023:23;6055:31;6080:5;6055:31;:::i;:::-;6105:5;-1:-1:-1;6162:2:1;6147:18;;6134:32;6175:33;6134:32;6175:33;:::i;6245:356::-;6447:2;6429:21;;;6466:18;;;6459:30;6525:34;6520:2;6505:18;;6498:62;6592:2;6577:18;;6245:356::o;6964:127::-;7025:10;7020:3;7016:20;7013:1;7006:31;7056:4;7053:1;7046:15;7080:4;7077:1;7070:15;7096:422;7185:1;7228:5;7185:1;7242:270;7263:7;7253:8;7250:21;7242:270;;;7322:4;7318:1;7314:6;7310:17;7304:4;7301:27;7298:53;;;7331:18;;:::i;:::-;7381:7;7371:8;7367:22;7364:55;;;7401:16;;;;7364:55;7480:22;;;;7440:15;;;;7242:270;;;7246:3;7096:422;;;;;:::o;7523:806::-;7572:5;7602:8;7592:80;;-1:-1:-1;7643:1:1;7657:5;;7592:80;7691:4;7681:76;;-1:-1:-1;7728:1:1;7742:5;;7681:76;7773:4;7791:1;7786:59;;;;7859:1;7854:130;;;;7766:218;;7786:59;7816:1;7807:10;;7830:5;;;7854:130;7891:3;7881:8;7878:17;7875:43;;;7898:18;;:::i;:::-;-1:-1:-1;;7954:1:1;7940:16;;7969:5;;7766:218;;8068:2;8058:8;8055:16;8049:3;8043:4;8040:13;8036:36;8030:2;8020:8;8017:16;8012:2;8006:4;8003:12;7999:35;7996:77;7993:159;;;-1:-1:-1;8105:19:1;;;8137:5;;7993:159;8184:34;8209:8;8203:4;8184:34;:::i;:::-;8254:6;8250:1;8246:6;8242:19;8233:7;8230:32;8227:58;;;8265:18;;:::i;:::-;8303:20;;7523:806;-1:-1:-1;;;7523:806:1:o;8334:140::-;8392:5;8421:47;8462:4;8452:8;8448:19;8442:4;8421:47;:::i;8479:168::-;8552:9;;;8583;;8600:15;;;8594:22;;8580:37;8570:71;;8621:18;;:::i;10114:127::-;10175:10;10170:3;10166:20;10163:1;10156:31;10206:4;10203:1;10196:15;10230:4;10227:1;10220:15;10246:135;10285:3;10306:17;;;10303:43;;10326:18;;:::i;:::-;-1:-1:-1;10373:1:1;10362:13;;10246:135::o;10386:351::-;10588:2;10570:21;;;10627:2;10607:18;;;10600:30;10666:29;10661:2;10646:18;;10639:57;10728:2;10713:18;;10386:351::o;11565:125::-;11630:9;;;11651:10;;;11648:36;;;11664:18;;:::i;12882:128::-;12949:9;;;12970:11;;;12967:37;;;12984:18;;:::i;13015:217::-;13055:1;13081;13071:132;;13125:10;13120:3;13116:20;13113:1;13106:31;13160:4;13157:1;13150:15;13188:4;13185:1;13178:15;13071:132;-1:-1:-1;13217:9:1;;13015:217::o;13715:251::-;13785:6;13838:2;13826:9;13817:7;13813:23;13809:32;13806:52;;;13854:1;13851;13844:12;13806:52;13886:9;13880:16;13905:31;13930:5;13905:31;:::i;13971:980::-;14233:4;14281:3;14270:9;14266:19;14312:6;14301:9;14294:25;14338:2;14376:6;14371:2;14360:9;14356:18;14349:34;14419:3;14414:2;14403:9;14399:18;14392:31;14443:6;14478;14472:13;14509:6;14501;14494:22;14547:3;14536:9;14532:19;14525:26;;14586:2;14578:6;14574:15;14560:29;;14607:1;14617:195;14631:6;14628:1;14625:13;14617:195;;;14696:13;;-1:-1:-1;;;;;14692:39:1;14680:52;;14787:15;;;;14752:12;;;;14728:1;14646:9;14617:195;;;-1:-1:-1;;;;;;;14868:32:1;;;;14863:2;14848:18;;14841:60;-1:-1:-1;;;14932:3:1;14917:19;14910:35;14829:3;13971:980;-1:-1:-1;;;13971:980:1:o;15778:306::-;15866:6;15874;15882;15935:2;15923:9;15914:7;15910:23;15906:32;15903:52;;;15951:1;15948;15941:12;15903:52;15980:9;15974:16;15964:26;;16030:2;16019:9;16015:18;16009:25;15999:35;;16074:2;16063:9;16059:18;16053:25;16043:35;;15778:306;;;;;:::o

Swarm Source

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