ETH Price: $3,085.08 (+0.76%)
Gas: 6 Gwei

Token

Baby ETH (BETH)
 

Overview

Max Total Supply

1,000,000,000,000 BETH

Holders

47

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
theunbrokenwindow.eth
Balance
1,132.960399572 BETH

Value
$0.00
0x376a6efe8e98f3ae2af230b3d45b8cc5e962bc27
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:
BETH

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-27
*/

// SPDX-License-Identifier: Unlicensed

/*

   $BETH - BabyETH
   
   => Hyper-deflationary & automated buyback with a nice reflection
   
   - One of the first automated dynamic buyback tokens (inspired by Inari)
   - Token holders are rewarded through a redistribution fee on every transaction.
   - The BETH smart contract comes with static buy fees and dynamic sell fees designed to help the price grow.
   - The initial burn and the buyback burn fuel the black hole address. This wallet, like every other holder, gets rewards from transaction, reducing the supply and making BETH hyper-deflationary.
   
   📱 Telegram: https://t.me/babyETHOfficial
   🌎 Website: https://www.babyeth.baby/
   🌐 Twitter: https://twitter.com/theBabyEth
*/


pragma solidity ^0.8.4;

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(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;
    }
}


interface IERC20 {

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


}

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }


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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }


    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {

            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

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

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

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

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

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

    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }

    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

// pragma solidity >=0.5.0;

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;
}


// pragma solidity >=0.5.0;

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 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 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;
}

// pragma solidity >=0.6.2;

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);
}



// pragma solidity >=0.6.2;

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 BETH is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => User) private cooldown;

    mapping (address => bool) private _isSniper;
    address[] private _confirmedSnipers;

    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 1000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "Baby ETH";
    string private _symbol = "BETH";
    uint8 private _decimals = 9;
    
    address payable private teamDevAddress;

    uint256 public launchTime;
    uint256 private buyLimitEnd;
    
    
    uint256 public _taxFee = 0;
    uint256 private _previousTaxFee = _taxFee;
    uint256 public _liquidityFee = 0;
    uint256 private _previousLiquidityFee = _liquidityFee;
    uint256 public _baseLiqFee;
    
    bool private _useImpactFeeSetter = true;
    uint256 private _feeMultiplier = 1000;
    
    
    uint256 public _minTrigger = 0;
    uint256 public k = 10;
    uint256 public _baseAmount = 1*10**15;

    uint private _maxBuyAmount;
    bool private _cooldownEnabled = true;

    bool public tradingOpen = false; //once switched on, can never be switched off.
    


    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    bool public buyBackEnabled = false;
    
    struct User {
        uint256 buy;
        uint256 sell;
        bool exists;
    }
    
    event BuyBackEnabledUpdated(bool enabled);
  

    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );

    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor () {
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function enableTrading() external onlyOwner() {
        _maxBuyAmount = 2000000000 * 10**9;
        _baseLiqFee=8;
        _liquidityFee=_baseLiqFee;
        _taxFee=12;
        swapAndLiquifyEnabled = true;
        tradingOpen = true;
        launchTime = block.timestamp;
        buyLimitEnd = block.timestamp + (240 seconds);
    }

    function initContract() external onlyOwner() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        
        _isSniper[address(0x7589319ED0fD750017159fb4E4d96C63966173C1)] = true;
        _confirmedSnipers.push(address(0x7589319ED0fD750017159fb4E4d96C63966173C1));

        _isSniper[address(0x65A67DF75CCbF57828185c7C050e34De64d859d0)] = true;
        _confirmedSnipers.push(address(0x65A67DF75CCbF57828185c7C050e34De64d859d0));

        _isSniper[address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce)] = true;
        _confirmedSnipers.push(address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce));

        _isSniper[address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce)] = true;
        _confirmedSnipers.push(address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce));

        _isSniper[address(0xe516bDeE55b0b4e9bAcaF6285130De15589B1345)] = true;
        _confirmedSnipers.push(address(0xe516bDeE55b0b4e9bAcaF6285130De15589B1345));

        _isSniper[address(0xa1ceC245c456dD1bd9F2815a6955fEf44Eb4191b)] = true;
        _confirmedSnipers.push(address(0xa1ceC245c456dD1bd9F2815a6955fEf44Eb4191b));

        _isSniper[address(0xd7d3EE77D35D0a56F91542D4905b1a2b1CD7cF95)] = true;
        _confirmedSnipers.push(address(0xd7d3EE77D35D0a56F91542D4905b1a2b1CD7cF95));

        _isSniper[address(0xFe76f05dc59fEC04184fA0245AD0C3CF9a57b964)] = true;
        _confirmedSnipers.push(address(0xFe76f05dc59fEC04184fA0245AD0C3CF9a57b964));

        _isSniper[address(0xDC81a3450817A58D00f45C86d0368290088db848)] = true;
        _confirmedSnipers.push(address(0xDC81a3450817A58D00f45C86d0368290088db848));

        _isSniper[address(0x45fD07C63e5c316540F14b2002B085aEE78E3881)] = true;
        _confirmedSnipers.push(address(0x45fD07C63e5c316540F14b2002B085aEE78E3881));

        _isSniper[address(0x27F9Adb26D532a41D97e00206114e429ad58c679)] = true;
        _confirmedSnipers.push(address(0x27F9Adb26D532a41D97e00206114e429ad58c679));

        _isSniper[address(0x9282dc5c422FA91Ff2F6fF3a0b45B7BF97CF78E7)] = true;
        _confirmedSnipers.push(address(0x9282dc5c422FA91Ff2F6fF3a0b45B7BF97CF78E7));

        _isSniper[address(0xfad95B6089c53A0D1d861eabFaadd8901b0F8533)] = true;
        _confirmedSnipers.push(address(0xfad95B6089c53A0D1d861eabFaadd8901b0F8533));

        _isSniper[address(0x1d6E8BAC6EA3730825bde4B005ed7B2B39A2932d)] = true;
        _confirmedSnipers.push(address(0x1d6E8BAC6EA3730825bde4B005ed7B2B39A2932d));

        _isSniper[address(0x000000000000084e91743124a982076C59f10084)] = true;
        _confirmedSnipers.push(address(0x000000000000084e91743124a982076C59f10084));

        _isSniper[address(0x6dA4bEa09C3aA0761b09b19837D9105a52254303)] = true;
        _confirmedSnipers.push(address(0x6dA4bEa09C3aA0761b09b19837D9105a52254303));

        _isSniper[address(0x323b7F37d382A68B0195b873aF17CeA5B67cd595)] = true;
        _confirmedSnipers.push(address(0x323b7F37d382A68B0195b873aF17CeA5B67cd595));

        _isSniper[address(0x000000005804B22091aa9830E50459A15E7C9241)] = true;
        _confirmedSnipers.push(address(0x000000005804B22091aa9830E50459A15E7C9241));

        _isSniper[address(0xA3b0e79935815730d942A444A84d4Bd14A339553)] = true;
        _confirmedSnipers.push(address(0xA3b0e79935815730d942A444A84d4Bd14A339553));

        _isSniper[address(0xf6da21E95D74767009acCB145b96897aC3630BaD)] = true;
        _confirmedSnipers.push(address(0xf6da21E95D74767009acCB145b96897aC3630BaD));

        _isSniper[address(0x0000000000007673393729D5618DC555FD13f9aA)] = true;
        _confirmedSnipers.push(address(0x0000000000007673393729D5618DC555FD13f9aA));

        _isSniper[address(0x00000000000003441d59DdE9A90BFfb1CD3fABf1)] = true;
        _confirmedSnipers.push(address(0x00000000000003441d59DdE9A90BFfb1CD3fABf1));

        _isSniper[address(0x59903993Ae67Bf48F10832E9BE28935FEE04d6F6)] = true;
        _confirmedSnipers.push(address(0x59903993Ae67Bf48F10832E9BE28935FEE04d6F6));

        _isSniper[address(0x000000917de6037d52b1F0a306eeCD208405f7cd)] = true;
        _confirmedSnipers.push(address(0x000000917de6037d52b1F0a306eeCD208405f7cd));

        _isSniper[address(0x7100e690554B1c2FD01E8648db88bE235C1E6514)] = true;
        _confirmedSnipers.push(address(0x7100e690554B1c2FD01E8648db88bE235C1E6514));

        _isSniper[address(0x72b30cDc1583224381132D379A052A6B10725415)] = true;
        _confirmedSnipers.push(address(0x72b30cDc1583224381132D379A052A6B10725415));

        _isSniper[address(0x9eDD647D7d6Eceae6bB61D7785Ef66c5055A9bEE)] = true;
        _confirmedSnipers.push(address(0x9eDD647D7d6Eceae6bB61D7785Ef66c5055A9bEE));

        _isSniper[address(0xfe9d99ef02E905127239E85A611c29ad32c31c2F)] = true;
        _confirmedSnipers.push(address(0xfe9d99ef02E905127239E85A611c29ad32c31c2F));

        _isSniper[address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b)] = true;
        _confirmedSnipers.push(address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b));

        _isSniper[address(0xc496D84215d5018f6F53E7F6f12E45c9b5e8e8A9)] = true;
        _confirmedSnipers.push(address(0xc496D84215d5018f6F53E7F6f12E45c9b5e8e8A9));

        _isSniper[address(0x59341Bc6b4f3Ace878574b05914f43309dd678c7)] = true;
        _confirmedSnipers.push(address(0x59341Bc6b4f3Ace878574b05914f43309dd678c7));

        _isSniper[address(0xe986d48EfeE9ec1B8F66CD0b0aE8e3D18F091bDF)] = true;
        _confirmedSnipers.push(address(0xe986d48EfeE9ec1B8F66CD0b0aE8e3D18F091bDF));

        _isSniper[address(0x4aEB32e16DcaC00B092596ADc6CD4955EfdEE290)] = true;
        _confirmedSnipers.push(address(0x4aEB32e16DcaC00B092596ADc6CD4955EfdEE290));

        _isSniper[address(0x136F4B5b6A306091b280E3F251fa0E21b1280Cd5)] = true;
        _confirmedSnipers.push(address(0x136F4B5b6A306091b280E3F251fa0E21b1280Cd5));

        _isSniper[address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b)] = true;
        _confirmedSnipers.push(address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b));

        _isSniper[address(0x5B83A351500B631cc2a20a665ee17f0dC66e3dB7)] = true;
        _confirmedSnipers.push(address(0x5B83A351500B631cc2a20a665ee17f0dC66e3dB7));

        _isSniper[address(0xbCb05a3F85d34f0194C70d5914d5C4E28f11Cc02)] = true;
        _confirmedSnipers.push(address(0xbCb05a3F85d34f0194C70d5914d5C4E28f11Cc02));

        _isSniper[address(0x22246F9BCa9921Bfa9A3f8df5baBc5Bc8ee73850)] = true;
        _confirmedSnipers.push(address(0x22246F9BCa9921Bfa9A3f8df5baBc5Bc8ee73850));

        _isSniper[address(0x42d4C197036BD9984cA652303e07dD29fA6bdB37)] = true;
        _confirmedSnipers.push(address(0x42d4C197036BD9984cA652303e07dD29fA6bdB37));

        _isSniper[address(0x00000000003b3cc22aF3aE1EAc0440BcEe416B40)] = true;
        _confirmedSnipers.push(address(0x00000000003b3cc22aF3aE1EAc0440BcEe416B40));

        _isSniper[address(0x231DC6af3C66741f6Cf618884B953DF0e83C1A2A)] = true;
        _confirmedSnipers.push(address(0x231DC6af3C66741f6Cf618884B953DF0e83C1A2A));

        _isSniper[address(0xC6bF34596f74eb22e066a878848DfB9fC1CF4C65)] = true;
        _confirmedSnipers.push(address(0xC6bF34596f74eb22e066a878848DfB9fC1CF4C65));

        _isSniper[address(0x20f6fCd6B8813c4f98c0fFbD88C87c0255040Aa3)] = true;
        _confirmedSnipers.push(address(0x20f6fCd6B8813c4f98c0fFbD88C87c0255040Aa3));

        _isSniper[address(0xD334C5392eD4863C81576422B968C6FB90EE9f79)] = true;
        _confirmedSnipers.push(address(0xD334C5392eD4863C81576422B968C6FB90EE9f79));

        _isSniper[address(0xFFFFF6E70842330948Ca47254F2bE673B1cb0dB7)] = true;
        _confirmedSnipers.push(address(0xFFFFF6E70842330948Ca47254F2bE673B1cb0dB7));

        _isSniper[address(0xA39C50bf86e15391180240938F469a7bF4fDAe9a)] = true;
        _confirmedSnipers.push(address(0xA39C50bf86e15391180240938F469a7bF4fDAe9a));

        _isSniper[address(0xA39C50bf86e15391180240938F469a7bF4fDAe9a)] = true;
        _confirmedSnipers.push(address(0xA39C50bf86e15391180240938F469a7bF4fDAe9a));

        teamDevAddress = payable(0xa8FB832AfdB227B33359Fd625f09Ef5681e2608F);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

  
    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }


    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function isRemovedSniper(address account) public view returns (bool) {
        return _isSniper[account];
    }

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_isSniper[recipient], "You have no power here!");
        require(!_isSniper[msg.sender], "You have no power here!");


        if(sender != owner() && recipient != owner()) {
            
            if (!tradingOpen) {
                if (!(sender == address(this) || recipient == address(this)
                || sender == address(owner()) || recipient == address(owner()))) {
                    require(tradingOpen, "Trading is not enabled");
                }
            }

            if(_cooldownEnabled) {
                if(!cooldown[msg.sender].exists) {
                    cooldown[msg.sender] = User(0,0,true);
                }
            }
        }
        
        //buy
        
        if(sender == uniswapV2Pair && recipient != address(uniswapV2Router) && !_isExcludedFromFee[recipient]) {
                require(tradingOpen, "Trading not yet enabled.");
                
                _liquidityFee=_baseLiqFee;
                
                if(_cooldownEnabled) {
                    if(buyLimitEnd > block.timestamp) {
                        require(amount <= _maxBuyAmount);
                        require(cooldown[recipient].buy < block.timestamp, "Your buy cooldown has not expired.");
                        cooldown[recipient].buy = block.timestamp + (45 seconds);
                    }
                }
                if(_cooldownEnabled) {
                    cooldown[recipient].sell = block.timestamp + (15 seconds);
                }
        }

        //sell
        if (!inSwapAndLiquify && swapAndLiquifyEnabled && recipient == uniswapV2Pair) {
            
            //get dynamic fee
            if(_useImpactFeeSetter) {
                    uint256 feeBasis = amount.mul(_feeMultiplier);
                    feeBasis = feeBasis.div(balanceOf(uniswapV2Pair).add(amount));
                    setFee(feeBasis);
            }
            
            uint256 dynamicFee = _liquidityFee;
            
            //swap contract's tokens for ETH
            uint256 contractTokenBalance = balanceOf(address(this));
             if(contractTokenBalance > 0) {
                swapTokens(contractTokenBalance);
            }
            
            //buyback
            uint256 balance = address(this).balance;
            
            //buyback only if sell amount >= _minTrigger
            if (buyBackEnabled && amount >= _minTrigger) {
                
                uint256 ten = 10;
                
                uint256 buyBackAmount = _baseAmount.mul(ten.add(((dynamicFee.sub(_baseLiqFee)).mul(k)).div(_baseLiqFee))).div(10);                                                

                if (balance >= buyBackAmount)   buyBackTokens(buyBackAmount);
            }
            
            //restore dynamicFee after buyback
            _liquidityFee = dynamicFee;
        }

        bool takeFee = true;

        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
            takeFee = false;
        }

        //execute transfer
        _tokenTransfer(sender, recipient,amount,takeFee);
    }

    function swapTokens(uint256 contractTokenBalance) private lockTheSwap {

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractTokenBalance);
        uint256 transferredBalance = address(this).balance.sub(initialBalance);
 
        transferToAddressETH(teamDevAddress, transferredBalance.div(2));

    }


    function buyBackTokens(uint256 amount) private lockTheSwap {
        if (amount > 0) {
            swapETHForTokens(amount);
        }
    }
    
    function setFee(uint256 impactFee) private {
        uint256 _impactFee = _baseLiqFee;
        if(impactFee < _baseLiqFee) {
            _impactFee = _baseLiqFee;
        } else if(impactFee > 40) {
            _impactFee = 40;
        } else {
            _impactFee = impactFee;
        }
        if(_impactFee.mod(2) != 0) {
            _impactFee++;
        }
        
        _liquidityFee = _impactFee;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );

        emit SwapTokensForETH(tokenAmount, path);
    }

    function swapETHForTokens(uint256 amount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);

        // make the swap
        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0, // accept any amount of Tokens
            path,
            deadAddress, // Burn address
            block.timestamp.add(300)
        );

        emit SwapETHForTokens(amount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

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

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }

    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(
            10**2
        );
    }

    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liquidityFee).div(
            10**2
        );
    }

    function removeAllFee() private {
        if(_taxFee == 0 && _liquidityFee == 0) return;

        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;

        _taxFee = 0;
        _liquidityFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityFee = _previousLiquidityFee;
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }


    function setTeamDevAddress(address _teamDevAddress) external onlyOwner() {
        teamDevAddress = payable(_teamDevAddress);
    }

    

    function setBuyBackEnabled(bool _enabled) public onlyOwner {
        buyBackEnabled = _enabled;
        emit BuyBackEnabledUpdated(_enabled);
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

    
    function setMinTrigger(uint256 newTrigger) external onlyOwner() {
        _minTrigger= newTrigger;
    }
    
    function setK (uint256 newK) external onlyOwner() {
        k = newK;
    }

    function setBaseAmount(uint256 baseAmount) external onlyOwner() {
            _baseAmount=baseAmount;
    }
    
    
     function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
        require((_baseLiqFee+taxFee)<=20); 
        _taxFee = taxFee;
        _previousTaxFee=taxFee;
    }
    
    function setBaseLiqFeePercent(uint256 baseLiqFee) external onlyOwner() {
        require((baseLiqFee+_taxFee)<=20); 
        _baseLiqFee = baseLiqFee;
    }

    //to recieve ETH from uniswapV2Router when swapping
    receive() external payable {}
}

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":"bool","name":"enabled","type":"bool"}],"name":"BuyBackEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"_baseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_baseLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minTrigger","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isRemovedSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"k","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"baseAmount","type":"uint256"}],"name":"setBaseAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"baseLiqFee","type":"uint256"}],"name":"setBaseLiqFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setBuyBackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newK","type":"uint256"}],"name":"setK","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTrigger","type":"uint256"}],"name":"setMinTrigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_teamDevAddress","type":"address"}],"name":"setTeamDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526ddead000000000000000000000000608052683635c9adc5dea00000600c8190556200003390600019620002ba565b620000419060001962000259565b600d5560408051808201909152600880825267084c2c4f2408aa8960c31b60209092019182526200007591600f91620001b3565b50604080518082019091526004808252630848aa8960e31b6020909201918252620000a391601091620001b3565b506011805460ff19908116600917909155600060148190556015819055601681905560178190556019805490921660019081179092556103e8601a55601b55600a601c5566038d7ea4c68000601d55601f805461ffff191690911790556020805461ffff60a81b191690553480156200011b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d5433600081815260036020908152604080832094909455600c549351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620002db565b828054620001c1906200027d565b90600052602060002090601f016020900481019282620001e5576000855562000230565b82601f106200020057805160ff191683800117855562000230565b8280016001018555821562000230579182015b828111156200023057825182559160200191906001019062000213565b506200023e92915062000242565b5090565b5b808211156200023e576000815560010162000243565b6000828210156200027857634e487b7160e01b81526011600452602481fd5b500390565b600181811c908216806200029257607f821691505b60208210811415620002b457634e487b7160e01b600052602260045260246000fd5b50919050565b600082620002d657634e487b7160e01b81526012600452602481fd5b500690565b60805160601c613c5662000301600039600081816103ce01526133a80152613c566000f3fe6080604052600436106102815760003560e01c8063610d5b191161014f578063975c0ed3116100c1578063dd4670641161007a578063dd4670641461079d578063dd62ed3e146107bd578063e2c335db14610803578063f03e63b414610819578063f2fde38b14610839578063ffb54a991461085957600080fd5b8063975c0ed3146106fc578063a3b855ce14610712578063a457c2d714610732578063a69df4b514610752578063a9059cbb14610767578063b4f40c611461078757600080fd5b80637f160346116101135780637f160346146106465780638203f5fe1461066657806388f820201461067b5780638a8c523c146106b45780638da5cb5b146106c957806395d89b41146106e757600080fd5b8063610d5b19146105a157806367de8be9146105da5780636bc87c3a146105fa57806370a0823114610610578063790ca4131461063057600080fd5b8063313ce567116101f35780634a74bb02116101ac5780634a74bb02146104e85780634ddfae4b146105095780635342acb41461051f578063557ed1ba14610558578063602bc62b1461056b5780636053a0e31461058057600080fd5b8063313ce5671461043057806339509351146104525780633b124fe7146104725780633bd5d173146104885780634549b039146104a857806349bd5a5e146104c857600080fd5b806318160ddd1161024557806318160ddd14610367578063224a7c6a1461037c57806323b872dd1461039c57806327c8f835146103bc57806329370cc6146103f05780632d8381191461041057600080fd5b8063061c82d01461028d57806306fdde03146102af578063095ea7b3146102da57806313114a9d1461030a5780631694505e1461032957600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102ad6102a836600461392b565b610878565b005b3480156102bb57600080fd5b506102c46108d0565b6040516102d191906139e6565b60405180910390f35b3480156102e657600080fd5b506102fa6102f53660046138e6565b610962565b60405190151581526020016102d1565b34801561031657600080fd5b50600e545b6040519081526020016102d1565b34801561033557600080fd5b50601f5461034f906201000090046001600160a01b031681565b6040516001600160a01b0390911681526020016102d1565b34801561037357600080fd5b50600c5461031b565b34801561038857600080fd5b506102ad61039736600461392b565b610979565b3480156103a857600080fd5b506102fa6103b73660046138a6565b6109a8565b3480156103c857600080fd5b5061034f7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103fc57600080fd5b506102ad61040b366004613911565b610a11565b34801561041c57600080fd5b5061031b61042b36600461392b565b610a8b565b34801561043c57600080fd5b5060115460405160ff90911681526020016102d1565b34801561045e57600080fd5b506102fa61046d3660046138e6565b610b0f565b34801561047e57600080fd5b5061031b60145481565b34801561049457600080fd5b506102ad6104a336600461392b565b610b45565b3480156104b457600080fd5b5061031b6104c3366004613943565b610c2f565b3480156104d457600080fd5b5060205461034f906001600160a01b031681565b3480156104f457600080fd5b506020546102fa90600160a81b900460ff1681565b34801561051557600080fd5b5061031b601d5481565b34801561052b57600080fd5b506102fa61053a366004613836565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561056457600080fd5b504261031b565b34801561057757600080fd5b5060025461031b565b34801561058c57600080fd5b506020546102fa90600160b01b900460ff1681565b3480156105ad57600080fd5b506102fa6105bc366004613836565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156105e657600080fd5b506102ad6105f536600461392b565b610cbc565b34801561060657600080fd5b5061031b60165481565b34801561061c57600080fd5b5061031b61062b366004613836565b610ceb565b34801561063c57600080fd5b5061031b60125481565b34801561065257600080fd5b506102ad61066136600461392b565b610d4a565b34801561067257600080fd5b506102ad610d92565b34801561068757600080fd5b506102fa610696366004613836565b6001600160a01b03166000908152600a602052604090205460ff1690565b3480156106c057600080fd5b506102ad611dd5565b3480156106d557600080fd5b506000546001600160a01b031661034f565b3480156106f357600080fd5b506102c4611e52565b34801561070857600080fd5b5061031b60185481565b34801561071e57600080fd5b506102ad61072d36600461392b565b611e61565b34801561073e57600080fd5b506102fa61074d3660046138e6565b611e90565b34801561075e57600080fd5b506102ad611edf565b34801561077357600080fd5b506102fa6107823660046138e6565b611ff7565b34801561079357600080fd5b5061031b601c5481565b3480156107a957600080fd5b506102ad6107b836600461392b565b612004565b3480156107c957600080fd5b5061031b6107d836600461386e565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561080f57600080fd5b5061031b601b5481565b34801561082557600080fd5b506102ad610834366004613836565b61209b565b34801561084557600080fd5b506102ad610854366004613836565b6120ed565b34801561086557600080fd5b50601f546102fa90610100900460ff1681565b6000546001600160a01b031633146108ab5760405162461bcd60e51b81526004016108a290613a39565b60405180910390fd5b6014816018546108bb9190613ac3565b11156108c657600080fd5b6014819055601555565b6060600f80546108df90613b25565b80601f016020809104026020016040519081016040528092919081815260200182805461090b90613b25565b80156109585780601f1061092d57610100808354040283529160200191610958565b820191906000526020600020905b81548152906001019060200180831161093b57829003601f168201915b5050505050905090565b600061096f3384846121d7565b5060015b92915050565b6000546001600160a01b031633146109a35760405162461bcd60e51b81526004016108a290613a39565b601d55565b60006109b58484846122fb565b610a078433610a0285604051806060016040528060288152602001613bd4602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190612985565b6121d7565b5060019392505050565b6000546001600160a01b03163314610a3b5760405162461bcd60e51b81526004016108a290613a39565b6020805460ff60b01b1916600160b01b8315159081029190911782556040519081527f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c0910160405180910390a150565b6000600d54821115610af25760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016108a2565b6000610afc6129bf565b9050610b0883826129e2565b9392505050565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161096f918590610a029086612a24565b336000818152600a602052604090205460ff1615610bba5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016108a2565b6000610bc583612a83565b505050506001600160a01b038416600090815260036020526040902054919250610bf191905082612ad2565b6001600160a01b038316600090815260036020526040902055600d54610c179082612ad2565b600d55600e54610c279084612a24565b600e55505050565b6000600c54831115610c835760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108a2565b81610ca2576000610c9384612a83565b50939550610973945050505050565b6000610cad84612a83565b50929550610973945050505050565b6000546001600160a01b03163314610ce65760405162461bcd60e51b81526004016108a290613a39565b601c55565b6001600160a01b0381166000908152600a602052604081205460ff1615610d2857506001600160a01b031660009081526004602052604090205490565b6001600160a01b03821660009081526003602052604090205461097390610a8b565b6000546001600160a01b03163314610d745760405162461bcd60e51b81526004016108a290613a39565b60148054610d829083613ac3565b1115610d8d57600080fd5b601855565b6000546001600160a01b03163314610dbc5760405162461bcd60e51b81526004016108a290613a39565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e0e57600080fd5b505afa158015610e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e469190613852565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8e57600080fd5b505afa158015610ea2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec69190613852565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610f0e57600080fd5b505af1158015610f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f469190613852565b602080546001600160a01b0319166001600160a01b03928316179055601f805462010000600160b01b03191662010000848416021790556000805460019260099291166001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526009835290812080548416600190811790915560079092527f57c722c10b286721330ce1e7368f87f549121277c4e5ffab2e83419c7564f96180548416831790556008805480840182557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390810180546001600160a01b0319908116737589319ed0fd750017159fb4e4d96c63966173c1179091557fb4360de54da26af4127515af1e49997106b425ee5904e923f0902c7618138e598054871686179055825480860184558201805482167365a67df75ccbf57828185c7c050e34de64d859d01790557faa01439ba306fcf815e716b248617e3c66941c4344ce5297e38ccc42cd30bc1180548716861781558354808701855583018054831673e031b36b53e53a292a20c5f08fd1658cddf74fce9081179091558154881687179091558354808701855583018054831690911790557f20bb0313363229c48e5dca565476b9f004fcadd21a3cebd9148dbac2f2ba8e6d80548716861790558254808601845582018054821673e516bdee55b0b4e9bacaf6285130de15589b13451790557f185a84d37a19636863439d4bd8f79b953edfc2f2b332404b82e2c102dfbb4b8d80548716861790558254808601845582018054821673a1cec245c456dd1bd9f2815a6955fef44eb4191b1790557ff405e61457986734bcc74d319afb38a21149b3d56f884ce85ec24a17fadbe35d80548716861790558254808601845582018054821673d7d3ee77d35d0a56f91542d4905b1a2b1cd7cf951790557fa2988ed14d9641c67aefa7ee82d50112dd7b9326d1e98e9dce9d802915d3b36480548716861790558254808601845582018054821673fe76f05dc59fec04184fa0245ad0c3cf9a57b9641790557f158b420708a0e60d8f36936f51360cee200d1017c9023a4ddcae85bff89c0f4e80548716861790558254808601845582018054821673dc81a3450817a58d00f45c86d0368290088db8481790557ff1d1c874a6478f85b6b904feafb9a196ead08dc959fdf0a523b19e42779d27ce8054871686179055825480860184558201805482167345fd07c63e5c316540f14b2002b085aee78e38811790557f401a4c0ca7781d92989fe1809638f35a473d45b2aa1f20ea08b891ad153486ab8054871686179055825480860184558201805482167327f9adb26d532a41d97e00206114e429ad58c6791790557fcdd749be89563b0fe17aff861f904dad7a5ecfebb7ff064b12d5552d5c400ea7805487168617905582548086018455820180548216739282dc5c422fa91ff2f6ff3a0b45b7bf97cf78e71790557f3eca23c1fceac0076012235763bf4b524e34500801ac57fb32381013c0d6901e80548716861790558254808601845582018054821673fad95b6089c53a0d1d861eabfaadd8901b0f85331790557f297b29cec8a1eb621a328e39c96c47ebe5e4031f1f910cb41ad54c511034e73a805487168617905582548086018455820180548216731d6e8bac6ea3730825bde4b005ed7b2b39a2932d1790557ffe44942143e318205a789f77df1b2bf735ffc548308bab5499d0216aec3332e48054871686179055825480860184558201805482166d084e91743124a982076c59f100841790557f3e4f611ed8482ea59e6424ad23a75453ec3ddb7677cd19d4c934256448de183a805487168617905582548086018455820180548216736da4bea09c3aa0761b09b19837d9105a522543031790557f7ee7f44cdecb2d7c9ebf96addf904d703c57dc894fdb6b132a783045f8ad751980548716861790558254808601845582018054821673323b7f37d382a68b0195b873af17cea5b67cd5951790557fb1c982ebec4b3ffbad67c2dd4b8d8215a47baa972366e4a63f51e9c6ce9a5d4e8054871686179055825480860184558201805482166f5804b22091aa9830e50459a15e7c92411790557fa11920fa7ae15c72226954c89a9e5c6f067c85fde0c317c7a78e3897c4aa229d80548716861790558254808601845582018054821673a3b0e79935815730d942a444a84d4bd14a3395531790557f1ea4ceff6c7cd2bd1aa871eb2c9e7b14363c267e1c8d45b2b4038682a83baef480548716861790558254808601845582018054821673f6da21e95d74767009accb145b96897ac3630bad1790557f5ccd521e90776b08b8302e31941eda99ae5bb6dd0a4a30a038e75275ed151f1f8054871686179055825480860184558201805482166d7673393729d5618dc555fd13f9aa1790557f9aac9a42097620b1ff8454a6252a3d8b6aecd2746f5cc70c2496bd35cd9e69b18054871686179055825480860184558201805482166d03441d59dde9a90bffb1cd3fabf11790557fa9d6552d66baaa4186648ea67a6cabd630f6081027f5bf546135d86d60df82fd8054871686179055825480860184558201805482167359903993ae67bf48f10832e9be28935fee04d6f61790557fe35fa26e68f804147088c2b96da426aeba0a986c80b2972d565ff073fcf3b2ed80548716861790558254808601845582018054821670917de6037d52b1f0a306eecd208405f7cd1790557f0974c6061423c59b1cc18edad4ab1f546201d6fbcde60ba3925dea5bbc1f3b92805487168617905582548086018455820180548216737100e690554b1c2fd01e8648db88be235c1e65141790557fe96e4260a99427d26094e01497bcbf1209430052150bbba23c77691cfd3888de8054871686179055825480860184558201805482167372b30cdc1583224381132d379a052a6b107254151790557fc71bda09a50ffbca62ccd1161350db5851fbb6ddd35d31c3c3517822e54b5c55805487168617905582548086018455820180548216739edd647d7d6eceae6bb61d7785ef66c5055a9bee1790557f3848f2c08fb0667ee5b5086c84806cc492f6771453629ea470ad1bb4309b27df80548716861790558254808601845582018054821673fe9d99ef02e905127239e85a611c29ad32c31c2f1790557f954a0c36a45fcaf27e7a22dfaa2c9f3b813d726eab18c0fdbf36d3b835f9975c8054871686178155835480870185558301805483167339608b6f20704889c51c0ae28b1fca8f36a5239b9081179091557f7985ebff531dc9ae85a3acb40e87a09c7806f6a13dabe868af5b0a8d22bd505e80548916881790558454808801865584018054841673c496d84215d5018f6f53e7f6f12e45c9b5e8e8a91790557f6c52e41dd6b06a1bc9b96527098c91ef1536901d6b06ec3895465678b4d3cb2d8054891688179055845480880186558401805484167359341bc6b4f3ace878574b05914f43309dd678c71790557f33bb6bc5e24dd699dcbf1756dad57e97b0d83832560d2b9372cac6749ec975d080548916881790558454808801865584018054841673e986d48efee9ec1b8f66cd0b0ae8e3d18f091bdf1790557fc419d9cfed3cf702f7269baae5ca04d34554e3d12c577f99b455846286201a5c805489168817905584548088018655840180548416734aeb32e16dcac00b092596adc6cd4955efdee2901790557fab78f0789a7bb7c5eaddd13a6a0e91c9346a2134aed2e32ec259fffe6a6a9c7680548916881790558454808801865584018054841673136f4b5b6a306091b280e3f251fa0e21b1280cd51790558154881687179091558354808701855583018054831690911790557f1be75507d4b2cac3a24552f05fdfa14cf0f018e17cf718ca8d750a13ecaa3fb8805487168617905582548086018455820180548216735b83a351500b631cc2a20a665ee17f0dc66e3db71790557f8499ee18ee603a2cfde0354d5d324ebcbe145b33d7bdb9c0e42bad4169d18d9d80548716861790558254808601845582018054821673bcb05a3f85d34f0194c70d5914d5c4e28f11cc021790557f47c3decdbf0327f6973c2489bb6b726e7c2d32891ee0e58aab41a4ba06f0745b8054871686179055825480860184558201805482167322246f9bca9921bfa9a3f8df5babc5bc8ee738501790557f327a45de5f4ec9398adddd1243a3de3a045557ad91bb3317327482f19cc2fa568054871686179055825480860184558201805482167342d4c197036bd9984ca652303e07dd29fa6bdb371790557f91e3d6ffd1390da3bfbc0e0875515e89982841b064fcda9b67cffc63d8082ab68054871686179055825480860184558201805482166e3b3cc22af3ae1eac0440bcee416b401790557f0f0787d14733cc845754e46f4b9ac4f1ad047fd749dc13e3d96a4ae78999260f80548716861790558254808601845582018054821673231dc6af3c66741f6cf618884b953df0e83c1a2a1790557f9e1cab7afd1c36c8834124180f41b4fdd617e5b830a32dbe4ad39ce2403f330180548716861790558254808601845582018054821673c6bf34596f74eb22e066a878848dfb9fc1cf4c651790557ffce34a7b755f382e92d8fed99c280c08c64d82c48720533c065ce505a27e30c48054871686179055825480860184558201805482167320f6fcd6b8813c4f98c0ffbd88c87c0255040aa31790557f036de65337957dcec72784f3b7bdcc4c1db7dca6197401781e45567a6282e7ec80548716861790558254808601845582018054821673d334c5392ed4863c81576422b968c6fb90ee9f791790557fb223036d049cf96d476dc559d24b358878d6abfa6d8b9398c62a0461b2db6f6a80548716861790558254808601845582018054821673fffff6e70842330948ca47254f2be673b1cb0db71790557f3f74e5026cf68c914529907c341f86db0d11f8d7bb07501e2da38fe88ece2d8a80548716861781558354808701855583018054831673a39c50bf86e15391180240938f469a7bf4fdae9a9081179091558154909716861790558254948501835591909252910180549091169091179055506011805474a8fb832afdb227b33359fd625f09ef5681e2608f00610100600160a81b0319909116179055565b6000546001600160a01b03163314611dff5760405162461bcd60e51b81526004016108a290613a39565b671bc16d674ec80000601e5560086018819055601655600c6014556020805460ff60a81b1916600160a81b179055601f805461ff001916610100179055426012819055611e4d9060f0613ac3565b601355565b6060601080546108df90613b25565b6000546001600160a01b03163314611e8b5760405162461bcd60e51b81526004016108a290613a39565b601b55565b600061096f3384610a0285604051806060016040528060258152602001613bfc602591393360009081526005602090815260408083206001600160a01b038d1684529091529020549190612985565b6001546001600160a01b03163314611f455760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b60648201526084016108a2565b6002544211611f965760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c203720646179730060448201526064016108a2565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b600061096f3384846122fb565b6000546001600160a01b0316331461202e5760405162461bcd60e51b81526004016108a290613a39565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561205d8142613ac3565b600255600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6000546001600160a01b031633146120c55760405162461bcd60e51b81526004016108a290613a39565b601180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b031633146121175760405162461bcd60e51b81526004016108a290613a39565b6001600160a01b03811661217c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166122395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a2565b6001600160a01b03821661229a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a2565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661235f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a2565b6001600160a01b0382166123c15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a2565b600081116124235760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a2565b6001600160a01b03821660009081526007602052604090205460ff16156124865760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b60448201526064016108a2565b3360009081526007602052604090205460ff16156124e05760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b60448201526064016108a2565b6000546001600160a01b0384811691161480159061250c57506000546001600160a01b03838116911614155b1561263757601f54610100900460ff166125c3576001600160a01b03831630148061253f57506001600160a01b03821630145b8061255757506000546001600160a01b038481169116145b8061256f57506000546001600160a01b038381169116145b6125c357601f54610100900460ff166125c35760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016108a2565b601f5460ff1615612637573360009081526006602052604090206002015460ff1661263757604080516060810182526000808252602080830182815260018486018181523385526006909352949092209251835590519282019290925590516002909101805460ff19169115159190911790555b6020546001600160a01b0384811691161480156126685750601f546001600160a01b03838116620100009092041614155b801561268d57506001600160a01b03821660009081526009602052604090205460ff16155b156127dd57601f54610100900460ff166126e95760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e000000000000000060448201526064016108a2565b601854601655601f5460ff16156127aa574260135411156127aa57601e5481111561271357600080fd5b6001600160a01b03821660009081526006602052604090205442116127855760405162461bcd60e51b815260206004820152602260248201527f596f75722062757920636f6f6c646f776e20686173206e6f7420657870697265604482015261321760f11b60648201526084016108a2565b61279042602d613ac3565b6001600160a01b0383166000908152600660205260409020555b601f5460ff16156127dd576127c042600f613ac3565b6001600160a01b0383166000908152600660205260409020600101555b602054600160a01b900460ff161580156128005750602054600160a81b900460ff165b801561281957506020546001600160a01b038381169116145b156129285760195460ff161561287c576000612840601a5483612b1490919063ffffffff16565b60205490915061286f90612868908490612862906001600160a01b0316610ceb565b90612a24565b82906129e2565b905061287a81612b93565b505b601654600061288a30610ceb565b9050801561289b5761289b81612bdf565b6020544790600160b01b900460ff1680156128b85750601b548410155b15612922576000600a9050600061290d600a6128f76129046128fd6018546128f7601c546128f16018548e612ad290919063ffffffff16565b90612b14565b906129e2565b8690612a24565b601d5490612b14565b905080831061291f5761291f81612c42565b50505b50506016555b6001600160a01b03831660009081526009602052604090205460019060ff168061296a57506001600160a01b03831660009081526009602052604090205460ff165b15612973575060005b61297f84848484612c74565b50505050565b600081848411156129a95760405162461bcd60e51b81526004016108a291906139e6565b5060006129b68486613b0e565b95945050505050565b60008060006129cc612d99565b90925090506129db82826129e2565b9250505090565b6000610b0883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f53565b600080612a318385613ac3565b905083811015610b085760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108a2565b6000806000806000806000806000612a9a8a612f81565b9250925092506000806000612ab88d8686612ab36129bf565b612fc3565b919f909e50909c50959a5093985091965092945050505050565b6000610b0883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612985565b600082612b2357506000610973565b6000612b2f8385613aef565b905082612b3c8583613adb565b14610b085760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108a2565b60185480821015612ba75750601854612bbb565b6028821115612bb857506028612bbb565b50805b612bc6816002613013565b15612bd95780612bd581613b60565b9150505b60165550565b6020805460ff60a01b1916600160a01b17905547612bfc82613055565b6000612c084783612ad2565b601154909150612c309061010090046001600160a01b0316612c2b8360026129e2565b613238565b50506020805460ff60a01b1916905550565b6020805460ff60a01b1916600160a01b1790558015612c6457612c6481613273565b506020805460ff60a01b19169055565b80612c8157612c81613455565b6001600160a01b0384166000908152600a602052604090205460ff168015612cc257506001600160a01b0383166000908152600a602052604090205460ff16155b15612cd757612cd2848484613483565b612d83565b6001600160a01b0384166000908152600a602052604090205460ff16158015612d1857506001600160a01b0383166000908152600a602052604090205460ff165b15612d2857612cd28484846135a9565b6001600160a01b0384166000908152600a602052604090205460ff168015612d6857506001600160a01b0383166000908152600a602052604090205460ff165b15612d7857612cd2848484613652565b612d838484846136c5565b8061297f5761297f601554601455601754601655565b600d54600c546000918291825b600b54811015612f23578260036000600b8481548110612dd657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612e4f57508160046000600b8481548110612e2857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612e6557600d54600c54945094505050509091565b612eb960036000600b8481548110612e8d57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612ad2565b9250612f0f60046000600b8481548110612ee357634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612ad2565b915080612f1b81613b60565b915050612da6565b50600c54600d54612f33916129e2565b821015612f4a57600d54600c549350935050509091565b90939092509050565b60008183612f745760405162461bcd60e51b81526004016108a291906139e6565b5060006129b68486613adb565b600080600080612f9085613709565b90506000612f9d86613725565b90506000612fb582612faf8986612ad2565b90612ad2565b979296509094509092505050565b6000808080612fd28886612b14565b90506000612fe08887612b14565b90506000612fee8888612b14565b9050600061300082612faf8686612ad2565b939b939a50919850919650505050505050565b6000610b0883836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250613741565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061309857634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050601f60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561310657600080fd5b505afa15801561311a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313e9190613852565b8160018151811061315f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601f5461318b91309162010000900416846121d7565b601f5460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac947906131c9908590600090869030904290600401613a87565b600060405180830381600087803b1580156131e357600080fd5b505af11580156131f7573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161322c929190613a6e565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561326e573d6000803e3d6000fd5b505050565b604080516002808252606082018352600092602083019080368337019050509050601f60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156132e257600080fd5b505afa1580156132f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061331a9190613852565b8160008151811061333b57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061337d57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601f546201000090041663b6f9de95836000847f00000000000000000000000000000000000000000000000000000000000000006133d34261012c612a24565b6040518663ffffffff1660e01b81526004016133f294939291906139b1565b6000604051808303818588803b15801561340b57600080fd5b505af115801561341f573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a9624828260405161322c929190613a6e565b6014541580156134655750601654155b1561346c57565b601480546015556016805460175560009182905555565b60008060008060008061349587612a83565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506134c79088612ad2565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546134f69087612ad2565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546135259086612a24565b6001600160a01b03891660009081526003602052604090205561354781613775565b61355184836137fd565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161359691815260200190565b60405180910390a3505050505050505050565b6000806000806000806135bb87612a83565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506135ed9087612ad2565b6001600160a01b03808b16600090815260036020908152604080832094909455918b168152600490915220546136239084612a24565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546135259086612a24565b60008060008060008061366487612a83565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506136969088612ad2565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546135ed9087612ad2565b6000806000806000806136d787612a83565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506134f69087612ad2565b600061097360646128f760145485612b1490919063ffffffff16565b600061097360646128f760165485612b1490919063ffffffff16565b600081836137625760405162461bcd60e51b81526004016108a291906139e6565b5061376d8385613b7b565b949350505050565b600061377f6129bf565b9050600061378d8383612b14565b306000908152600360205260409020549091506137aa9082612a24565b30600090815260036020908152604080832093909355600a9052205460ff161561326e57306000908152600460205260409020546137e89084612a24565b30600090815260046020526040902055505050565b600d5461380a9083612ad2565b600d55600e5461381a9082612a24565b600e555050565b8035801515811461383157600080fd5b919050565b600060208284031215613847578081fd5b8135610b0881613bbb565b600060208284031215613863578081fd5b8151610b0881613bbb565b60008060408385031215613880578081fd5b823561388b81613bbb565b9150602083013561389b81613bbb565b809150509250929050565b6000806000606084860312156138ba578081fd5b83356138c581613bbb565b925060208401356138d581613bbb565b929592945050506040919091013590565b600080604083850312156138f8578182fd5b823561390381613bbb565b946020939093013593505050565b600060208284031215613922578081fd5b610b0882613821565b60006020828403121561393c578081fd5b5035919050565b60008060408385031215613955578182fd5b8235915061396560208401613821565b90509250929050565b6000815180845260208085019450808401835b838110156139a65781516001600160a01b031687529582019590820190600101613981565b509495945050505050565b8481526080602082015260006139ca608083018661396e565b6001600160a01b03949094166040830152506060015292915050565b6000602080835283518082850152825b81811015613a12578581018301518582016040015282016139f6565b81811115613a235783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b82815260406020820152600061376d604083018461396e565b85815284602082015260a060408201526000613aa660a083018661396e565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115613ad657613ad6613b8f565b500190565b600082613aea57613aea613ba5565b500490565b6000816000190483118215151615613b0957613b09613b8f565b500290565b600082821015613b2057613b20613b8f565b500390565b600181811c90821680613b3957607f821691505b60208210811415613b5a57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613b7457613b74613b8f565b5060010190565b600082613b8a57613b8a613ba5565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b0381168114613bd057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220dc1f057a8673229369734e63bbb41d0375cdbc3bbcb5bee98a81b7ef6aa446c864736f6c63430008040033

Deployed Bytecode

0x6080604052600436106102815760003560e01c8063610d5b191161014f578063975c0ed3116100c1578063dd4670641161007a578063dd4670641461079d578063dd62ed3e146107bd578063e2c335db14610803578063f03e63b414610819578063f2fde38b14610839578063ffb54a991461085957600080fd5b8063975c0ed3146106fc578063a3b855ce14610712578063a457c2d714610732578063a69df4b514610752578063a9059cbb14610767578063b4f40c611461078757600080fd5b80637f160346116101135780637f160346146106465780638203f5fe1461066657806388f820201461067b5780638a8c523c146106b45780638da5cb5b146106c957806395d89b41146106e757600080fd5b8063610d5b19146105a157806367de8be9146105da5780636bc87c3a146105fa57806370a0823114610610578063790ca4131461063057600080fd5b8063313ce567116101f35780634a74bb02116101ac5780634a74bb02146104e85780634ddfae4b146105095780635342acb41461051f578063557ed1ba14610558578063602bc62b1461056b5780636053a0e31461058057600080fd5b8063313ce5671461043057806339509351146104525780633b124fe7146104725780633bd5d173146104885780634549b039146104a857806349bd5a5e146104c857600080fd5b806318160ddd1161024557806318160ddd14610367578063224a7c6a1461037c57806323b872dd1461039c57806327c8f835146103bc57806329370cc6146103f05780632d8381191461041057600080fd5b8063061c82d01461028d57806306fdde03146102af578063095ea7b3146102da57806313114a9d1461030a5780631694505e1461032957600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102ad6102a836600461392b565b610878565b005b3480156102bb57600080fd5b506102c46108d0565b6040516102d191906139e6565b60405180910390f35b3480156102e657600080fd5b506102fa6102f53660046138e6565b610962565b60405190151581526020016102d1565b34801561031657600080fd5b50600e545b6040519081526020016102d1565b34801561033557600080fd5b50601f5461034f906201000090046001600160a01b031681565b6040516001600160a01b0390911681526020016102d1565b34801561037357600080fd5b50600c5461031b565b34801561038857600080fd5b506102ad61039736600461392b565b610979565b3480156103a857600080fd5b506102fa6103b73660046138a6565b6109a8565b3480156103c857600080fd5b5061034f7f000000000000000000000000000000000000000000000000000000000000dead81565b3480156103fc57600080fd5b506102ad61040b366004613911565b610a11565b34801561041c57600080fd5b5061031b61042b36600461392b565b610a8b565b34801561043c57600080fd5b5060115460405160ff90911681526020016102d1565b34801561045e57600080fd5b506102fa61046d3660046138e6565b610b0f565b34801561047e57600080fd5b5061031b60145481565b34801561049457600080fd5b506102ad6104a336600461392b565b610b45565b3480156104b457600080fd5b5061031b6104c3366004613943565b610c2f565b3480156104d457600080fd5b5060205461034f906001600160a01b031681565b3480156104f457600080fd5b506020546102fa90600160a81b900460ff1681565b34801561051557600080fd5b5061031b601d5481565b34801561052b57600080fd5b506102fa61053a366004613836565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561056457600080fd5b504261031b565b34801561057757600080fd5b5060025461031b565b34801561058c57600080fd5b506020546102fa90600160b01b900460ff1681565b3480156105ad57600080fd5b506102fa6105bc366004613836565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156105e657600080fd5b506102ad6105f536600461392b565b610cbc565b34801561060657600080fd5b5061031b60165481565b34801561061c57600080fd5b5061031b61062b366004613836565b610ceb565b34801561063c57600080fd5b5061031b60125481565b34801561065257600080fd5b506102ad61066136600461392b565b610d4a565b34801561067257600080fd5b506102ad610d92565b34801561068757600080fd5b506102fa610696366004613836565b6001600160a01b03166000908152600a602052604090205460ff1690565b3480156106c057600080fd5b506102ad611dd5565b3480156106d557600080fd5b506000546001600160a01b031661034f565b3480156106f357600080fd5b506102c4611e52565b34801561070857600080fd5b5061031b60185481565b34801561071e57600080fd5b506102ad61072d36600461392b565b611e61565b34801561073e57600080fd5b506102fa61074d3660046138e6565b611e90565b34801561075e57600080fd5b506102ad611edf565b34801561077357600080fd5b506102fa6107823660046138e6565b611ff7565b34801561079357600080fd5b5061031b601c5481565b3480156107a957600080fd5b506102ad6107b836600461392b565b612004565b3480156107c957600080fd5b5061031b6107d836600461386e565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561080f57600080fd5b5061031b601b5481565b34801561082557600080fd5b506102ad610834366004613836565b61209b565b34801561084557600080fd5b506102ad610854366004613836565b6120ed565b34801561086557600080fd5b50601f546102fa90610100900460ff1681565b6000546001600160a01b031633146108ab5760405162461bcd60e51b81526004016108a290613a39565b60405180910390fd5b6014816018546108bb9190613ac3565b11156108c657600080fd5b6014819055601555565b6060600f80546108df90613b25565b80601f016020809104026020016040519081016040528092919081815260200182805461090b90613b25565b80156109585780601f1061092d57610100808354040283529160200191610958565b820191906000526020600020905b81548152906001019060200180831161093b57829003601f168201915b5050505050905090565b600061096f3384846121d7565b5060015b92915050565b6000546001600160a01b031633146109a35760405162461bcd60e51b81526004016108a290613a39565b601d55565b60006109b58484846122fb565b610a078433610a0285604051806060016040528060288152602001613bd4602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190612985565b6121d7565b5060019392505050565b6000546001600160a01b03163314610a3b5760405162461bcd60e51b81526004016108a290613a39565b6020805460ff60b01b1916600160b01b8315159081029190911782556040519081527f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c0910160405180910390a150565b6000600d54821115610af25760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016108a2565b6000610afc6129bf565b9050610b0883826129e2565b9392505050565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161096f918590610a029086612a24565b336000818152600a602052604090205460ff1615610bba5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016108a2565b6000610bc583612a83565b505050506001600160a01b038416600090815260036020526040902054919250610bf191905082612ad2565b6001600160a01b038316600090815260036020526040902055600d54610c179082612ad2565b600d55600e54610c279084612a24565b600e55505050565b6000600c54831115610c835760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108a2565b81610ca2576000610c9384612a83565b50939550610973945050505050565b6000610cad84612a83565b50929550610973945050505050565b6000546001600160a01b03163314610ce65760405162461bcd60e51b81526004016108a290613a39565b601c55565b6001600160a01b0381166000908152600a602052604081205460ff1615610d2857506001600160a01b031660009081526004602052604090205490565b6001600160a01b03821660009081526003602052604090205461097390610a8b565b6000546001600160a01b03163314610d745760405162461bcd60e51b81526004016108a290613a39565b60148054610d829083613ac3565b1115610d8d57600080fd5b601855565b6000546001600160a01b03163314610dbc5760405162461bcd60e51b81526004016108a290613a39565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e0e57600080fd5b505afa158015610e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e469190613852565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8e57600080fd5b505afa158015610ea2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec69190613852565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610f0e57600080fd5b505af1158015610f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f469190613852565b602080546001600160a01b0319166001600160a01b03928316179055601f805462010000600160b01b03191662010000848416021790556000805460019260099291166001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526009835290812080548416600190811790915560079092527f57c722c10b286721330ce1e7368f87f549121277c4e5ffab2e83419c7564f96180548416831790556008805480840182557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390810180546001600160a01b0319908116737589319ed0fd750017159fb4e4d96c63966173c1179091557fb4360de54da26af4127515af1e49997106b425ee5904e923f0902c7618138e598054871686179055825480860184558201805482167365a67df75ccbf57828185c7c050e34de64d859d01790557faa01439ba306fcf815e716b248617e3c66941c4344ce5297e38ccc42cd30bc1180548716861781558354808701855583018054831673e031b36b53e53a292a20c5f08fd1658cddf74fce9081179091558154881687179091558354808701855583018054831690911790557f20bb0313363229c48e5dca565476b9f004fcadd21a3cebd9148dbac2f2ba8e6d80548716861790558254808601845582018054821673e516bdee55b0b4e9bacaf6285130de15589b13451790557f185a84d37a19636863439d4bd8f79b953edfc2f2b332404b82e2c102dfbb4b8d80548716861790558254808601845582018054821673a1cec245c456dd1bd9f2815a6955fef44eb4191b1790557ff405e61457986734bcc74d319afb38a21149b3d56f884ce85ec24a17fadbe35d80548716861790558254808601845582018054821673d7d3ee77d35d0a56f91542d4905b1a2b1cd7cf951790557fa2988ed14d9641c67aefa7ee82d50112dd7b9326d1e98e9dce9d802915d3b36480548716861790558254808601845582018054821673fe76f05dc59fec04184fa0245ad0c3cf9a57b9641790557f158b420708a0e60d8f36936f51360cee200d1017c9023a4ddcae85bff89c0f4e80548716861790558254808601845582018054821673dc81a3450817a58d00f45c86d0368290088db8481790557ff1d1c874a6478f85b6b904feafb9a196ead08dc959fdf0a523b19e42779d27ce8054871686179055825480860184558201805482167345fd07c63e5c316540f14b2002b085aee78e38811790557f401a4c0ca7781d92989fe1809638f35a473d45b2aa1f20ea08b891ad153486ab8054871686179055825480860184558201805482167327f9adb26d532a41d97e00206114e429ad58c6791790557fcdd749be89563b0fe17aff861f904dad7a5ecfebb7ff064b12d5552d5c400ea7805487168617905582548086018455820180548216739282dc5c422fa91ff2f6ff3a0b45b7bf97cf78e71790557f3eca23c1fceac0076012235763bf4b524e34500801ac57fb32381013c0d6901e80548716861790558254808601845582018054821673fad95b6089c53a0d1d861eabfaadd8901b0f85331790557f297b29cec8a1eb621a328e39c96c47ebe5e4031f1f910cb41ad54c511034e73a805487168617905582548086018455820180548216731d6e8bac6ea3730825bde4b005ed7b2b39a2932d1790557ffe44942143e318205a789f77df1b2bf735ffc548308bab5499d0216aec3332e48054871686179055825480860184558201805482166d084e91743124a982076c59f100841790557f3e4f611ed8482ea59e6424ad23a75453ec3ddb7677cd19d4c934256448de183a805487168617905582548086018455820180548216736da4bea09c3aa0761b09b19837d9105a522543031790557f7ee7f44cdecb2d7c9ebf96addf904d703c57dc894fdb6b132a783045f8ad751980548716861790558254808601845582018054821673323b7f37d382a68b0195b873af17cea5b67cd5951790557fb1c982ebec4b3ffbad67c2dd4b8d8215a47baa972366e4a63f51e9c6ce9a5d4e8054871686179055825480860184558201805482166f5804b22091aa9830e50459a15e7c92411790557fa11920fa7ae15c72226954c89a9e5c6f067c85fde0c317c7a78e3897c4aa229d80548716861790558254808601845582018054821673a3b0e79935815730d942a444a84d4bd14a3395531790557f1ea4ceff6c7cd2bd1aa871eb2c9e7b14363c267e1c8d45b2b4038682a83baef480548716861790558254808601845582018054821673f6da21e95d74767009accb145b96897ac3630bad1790557f5ccd521e90776b08b8302e31941eda99ae5bb6dd0a4a30a038e75275ed151f1f8054871686179055825480860184558201805482166d7673393729d5618dc555fd13f9aa1790557f9aac9a42097620b1ff8454a6252a3d8b6aecd2746f5cc70c2496bd35cd9e69b18054871686179055825480860184558201805482166d03441d59dde9a90bffb1cd3fabf11790557fa9d6552d66baaa4186648ea67a6cabd630f6081027f5bf546135d86d60df82fd8054871686179055825480860184558201805482167359903993ae67bf48f10832e9be28935fee04d6f61790557fe35fa26e68f804147088c2b96da426aeba0a986c80b2972d565ff073fcf3b2ed80548716861790558254808601845582018054821670917de6037d52b1f0a306eecd208405f7cd1790557f0974c6061423c59b1cc18edad4ab1f546201d6fbcde60ba3925dea5bbc1f3b92805487168617905582548086018455820180548216737100e690554b1c2fd01e8648db88be235c1e65141790557fe96e4260a99427d26094e01497bcbf1209430052150bbba23c77691cfd3888de8054871686179055825480860184558201805482167372b30cdc1583224381132d379a052a6b107254151790557fc71bda09a50ffbca62ccd1161350db5851fbb6ddd35d31c3c3517822e54b5c55805487168617905582548086018455820180548216739edd647d7d6eceae6bb61d7785ef66c5055a9bee1790557f3848f2c08fb0667ee5b5086c84806cc492f6771453629ea470ad1bb4309b27df80548716861790558254808601845582018054821673fe9d99ef02e905127239e85a611c29ad32c31c2f1790557f954a0c36a45fcaf27e7a22dfaa2c9f3b813d726eab18c0fdbf36d3b835f9975c8054871686178155835480870185558301805483167339608b6f20704889c51c0ae28b1fca8f36a5239b9081179091557f7985ebff531dc9ae85a3acb40e87a09c7806f6a13dabe868af5b0a8d22bd505e80548916881790558454808801865584018054841673c496d84215d5018f6f53e7f6f12e45c9b5e8e8a91790557f6c52e41dd6b06a1bc9b96527098c91ef1536901d6b06ec3895465678b4d3cb2d8054891688179055845480880186558401805484167359341bc6b4f3ace878574b05914f43309dd678c71790557f33bb6bc5e24dd699dcbf1756dad57e97b0d83832560d2b9372cac6749ec975d080548916881790558454808801865584018054841673e986d48efee9ec1b8f66cd0b0ae8e3d18f091bdf1790557fc419d9cfed3cf702f7269baae5ca04d34554e3d12c577f99b455846286201a5c805489168817905584548088018655840180548416734aeb32e16dcac00b092596adc6cd4955efdee2901790557fab78f0789a7bb7c5eaddd13a6a0e91c9346a2134aed2e32ec259fffe6a6a9c7680548916881790558454808801865584018054841673136f4b5b6a306091b280e3f251fa0e21b1280cd51790558154881687179091558354808701855583018054831690911790557f1be75507d4b2cac3a24552f05fdfa14cf0f018e17cf718ca8d750a13ecaa3fb8805487168617905582548086018455820180548216735b83a351500b631cc2a20a665ee17f0dc66e3db71790557f8499ee18ee603a2cfde0354d5d324ebcbe145b33d7bdb9c0e42bad4169d18d9d80548716861790558254808601845582018054821673bcb05a3f85d34f0194c70d5914d5c4e28f11cc021790557f47c3decdbf0327f6973c2489bb6b726e7c2d32891ee0e58aab41a4ba06f0745b8054871686179055825480860184558201805482167322246f9bca9921bfa9a3f8df5babc5bc8ee738501790557f327a45de5f4ec9398adddd1243a3de3a045557ad91bb3317327482f19cc2fa568054871686179055825480860184558201805482167342d4c197036bd9984ca652303e07dd29fa6bdb371790557f91e3d6ffd1390da3bfbc0e0875515e89982841b064fcda9b67cffc63d8082ab68054871686179055825480860184558201805482166e3b3cc22af3ae1eac0440bcee416b401790557f0f0787d14733cc845754e46f4b9ac4f1ad047fd749dc13e3d96a4ae78999260f80548716861790558254808601845582018054821673231dc6af3c66741f6cf618884b953df0e83c1a2a1790557f9e1cab7afd1c36c8834124180f41b4fdd617e5b830a32dbe4ad39ce2403f330180548716861790558254808601845582018054821673c6bf34596f74eb22e066a878848dfb9fc1cf4c651790557ffce34a7b755f382e92d8fed99c280c08c64d82c48720533c065ce505a27e30c48054871686179055825480860184558201805482167320f6fcd6b8813c4f98c0ffbd88c87c0255040aa31790557f036de65337957dcec72784f3b7bdcc4c1db7dca6197401781e45567a6282e7ec80548716861790558254808601845582018054821673d334c5392ed4863c81576422b968c6fb90ee9f791790557fb223036d049cf96d476dc559d24b358878d6abfa6d8b9398c62a0461b2db6f6a80548716861790558254808601845582018054821673fffff6e70842330948ca47254f2be673b1cb0db71790557f3f74e5026cf68c914529907c341f86db0d11f8d7bb07501e2da38fe88ece2d8a80548716861781558354808701855583018054831673a39c50bf86e15391180240938f469a7bf4fdae9a9081179091558154909716861790558254948501835591909252910180549091169091179055506011805474a8fb832afdb227b33359fd625f09ef5681e2608f00610100600160a81b0319909116179055565b6000546001600160a01b03163314611dff5760405162461bcd60e51b81526004016108a290613a39565b671bc16d674ec80000601e5560086018819055601655600c6014556020805460ff60a81b1916600160a81b179055601f805461ff001916610100179055426012819055611e4d9060f0613ac3565b601355565b6060601080546108df90613b25565b6000546001600160a01b03163314611e8b5760405162461bcd60e51b81526004016108a290613a39565b601b55565b600061096f3384610a0285604051806060016040528060258152602001613bfc602591393360009081526005602090815260408083206001600160a01b038d1684529091529020549190612985565b6001546001600160a01b03163314611f455760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b60648201526084016108a2565b6002544211611f965760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c203720646179730060448201526064016108a2565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b600061096f3384846122fb565b6000546001600160a01b0316331461202e5760405162461bcd60e51b81526004016108a290613a39565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561205d8142613ac3565b600255600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6000546001600160a01b031633146120c55760405162461bcd60e51b81526004016108a290613a39565b601180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b031633146121175760405162461bcd60e51b81526004016108a290613a39565b6001600160a01b03811661217c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166122395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a2565b6001600160a01b03821661229a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a2565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661235f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a2565b6001600160a01b0382166123c15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a2565b600081116124235760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a2565b6001600160a01b03821660009081526007602052604090205460ff16156124865760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b60448201526064016108a2565b3360009081526007602052604090205460ff16156124e05760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b60448201526064016108a2565b6000546001600160a01b0384811691161480159061250c57506000546001600160a01b03838116911614155b1561263757601f54610100900460ff166125c3576001600160a01b03831630148061253f57506001600160a01b03821630145b8061255757506000546001600160a01b038481169116145b8061256f57506000546001600160a01b038381169116145b6125c357601f54610100900460ff166125c35760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016108a2565b601f5460ff1615612637573360009081526006602052604090206002015460ff1661263757604080516060810182526000808252602080830182815260018486018181523385526006909352949092209251835590519282019290925590516002909101805460ff19169115159190911790555b6020546001600160a01b0384811691161480156126685750601f546001600160a01b03838116620100009092041614155b801561268d57506001600160a01b03821660009081526009602052604090205460ff16155b156127dd57601f54610100900460ff166126e95760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e000000000000000060448201526064016108a2565b601854601655601f5460ff16156127aa574260135411156127aa57601e5481111561271357600080fd5b6001600160a01b03821660009081526006602052604090205442116127855760405162461bcd60e51b815260206004820152602260248201527f596f75722062757920636f6f6c646f776e20686173206e6f7420657870697265604482015261321760f11b60648201526084016108a2565b61279042602d613ac3565b6001600160a01b0383166000908152600660205260409020555b601f5460ff16156127dd576127c042600f613ac3565b6001600160a01b0383166000908152600660205260409020600101555b602054600160a01b900460ff161580156128005750602054600160a81b900460ff165b801561281957506020546001600160a01b038381169116145b156129285760195460ff161561287c576000612840601a5483612b1490919063ffffffff16565b60205490915061286f90612868908490612862906001600160a01b0316610ceb565b90612a24565b82906129e2565b905061287a81612b93565b505b601654600061288a30610ceb565b9050801561289b5761289b81612bdf565b6020544790600160b01b900460ff1680156128b85750601b548410155b15612922576000600a9050600061290d600a6128f76129046128fd6018546128f7601c546128f16018548e612ad290919063ffffffff16565b90612b14565b906129e2565b8690612a24565b601d5490612b14565b905080831061291f5761291f81612c42565b50505b50506016555b6001600160a01b03831660009081526009602052604090205460019060ff168061296a57506001600160a01b03831660009081526009602052604090205460ff165b15612973575060005b61297f84848484612c74565b50505050565b600081848411156129a95760405162461bcd60e51b81526004016108a291906139e6565b5060006129b68486613b0e565b95945050505050565b60008060006129cc612d99565b90925090506129db82826129e2565b9250505090565b6000610b0883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f53565b600080612a318385613ac3565b905083811015610b085760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108a2565b6000806000806000806000806000612a9a8a612f81565b9250925092506000806000612ab88d8686612ab36129bf565b612fc3565b919f909e50909c50959a5093985091965092945050505050565b6000610b0883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612985565b600082612b2357506000610973565b6000612b2f8385613aef565b905082612b3c8583613adb565b14610b085760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108a2565b60185480821015612ba75750601854612bbb565b6028821115612bb857506028612bbb565b50805b612bc6816002613013565b15612bd95780612bd581613b60565b9150505b60165550565b6020805460ff60a01b1916600160a01b17905547612bfc82613055565b6000612c084783612ad2565b601154909150612c309061010090046001600160a01b0316612c2b8360026129e2565b613238565b50506020805460ff60a01b1916905550565b6020805460ff60a01b1916600160a01b1790558015612c6457612c6481613273565b506020805460ff60a01b19169055565b80612c8157612c81613455565b6001600160a01b0384166000908152600a602052604090205460ff168015612cc257506001600160a01b0383166000908152600a602052604090205460ff16155b15612cd757612cd2848484613483565b612d83565b6001600160a01b0384166000908152600a602052604090205460ff16158015612d1857506001600160a01b0383166000908152600a602052604090205460ff165b15612d2857612cd28484846135a9565b6001600160a01b0384166000908152600a602052604090205460ff168015612d6857506001600160a01b0383166000908152600a602052604090205460ff165b15612d7857612cd2848484613652565b612d838484846136c5565b8061297f5761297f601554601455601754601655565b600d54600c546000918291825b600b54811015612f23578260036000600b8481548110612dd657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612e4f57508160046000600b8481548110612e2857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612e6557600d54600c54945094505050509091565b612eb960036000600b8481548110612e8d57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612ad2565b9250612f0f60046000600b8481548110612ee357634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612ad2565b915080612f1b81613b60565b915050612da6565b50600c54600d54612f33916129e2565b821015612f4a57600d54600c549350935050509091565b90939092509050565b60008183612f745760405162461bcd60e51b81526004016108a291906139e6565b5060006129b68486613adb565b600080600080612f9085613709565b90506000612f9d86613725565b90506000612fb582612faf8986612ad2565b90612ad2565b979296509094509092505050565b6000808080612fd28886612b14565b90506000612fe08887612b14565b90506000612fee8888612b14565b9050600061300082612faf8686612ad2565b939b939a50919850919650505050505050565b6000610b0883836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250613741565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061309857634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050601f60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561310657600080fd5b505afa15801561311a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313e9190613852565b8160018151811061315f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601f5461318b91309162010000900416846121d7565b601f5460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac947906131c9908590600090869030904290600401613a87565b600060405180830381600087803b1580156131e357600080fd5b505af11580156131f7573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161322c929190613a6e565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561326e573d6000803e3d6000fd5b505050565b604080516002808252606082018352600092602083019080368337019050509050601f60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156132e257600080fd5b505afa1580156132f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061331a9190613852565b8160008151811061333b57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061337d57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601f546201000090041663b6f9de95836000847f000000000000000000000000000000000000000000000000000000000000dead6133d34261012c612a24565b6040518663ffffffff1660e01b81526004016133f294939291906139b1565b6000604051808303818588803b15801561340b57600080fd5b505af115801561341f573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a9624828260405161322c929190613a6e565b6014541580156134655750601654155b1561346c57565b601480546015556016805460175560009182905555565b60008060008060008061349587612a83565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506134c79088612ad2565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546134f69087612ad2565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546135259086612a24565b6001600160a01b03891660009081526003602052604090205561354781613775565b61355184836137fd565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161359691815260200190565b60405180910390a3505050505050505050565b6000806000806000806135bb87612a83565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506135ed9087612ad2565b6001600160a01b03808b16600090815260036020908152604080832094909455918b168152600490915220546136239084612a24565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546135259086612a24565b60008060008060008061366487612a83565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506136969088612ad2565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546135ed9087612ad2565b6000806000806000806136d787612a83565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506134f69087612ad2565b600061097360646128f760145485612b1490919063ffffffff16565b600061097360646128f760165485612b1490919063ffffffff16565b600081836137625760405162461bcd60e51b81526004016108a291906139e6565b5061376d8385613b7b565b949350505050565b600061377f6129bf565b9050600061378d8383612b14565b306000908152600360205260409020549091506137aa9082612a24565b30600090815260036020908152604080832093909355600a9052205460ff161561326e57306000908152600460205260409020546137e89084612a24565b30600090815260046020526040902055505050565b600d5461380a9083612ad2565b600d55600e5461381a9082612a24565b600e555050565b8035801515811461383157600080fd5b919050565b600060208284031215613847578081fd5b8135610b0881613bbb565b600060208284031215613863578081fd5b8151610b0881613bbb565b60008060408385031215613880578081fd5b823561388b81613bbb565b9150602083013561389b81613bbb565b809150509250929050565b6000806000606084860312156138ba578081fd5b83356138c581613bbb565b925060208401356138d581613bbb565b929592945050506040919091013590565b600080604083850312156138f8578182fd5b823561390381613bbb565b946020939093013593505050565b600060208284031215613922578081fd5b610b0882613821565b60006020828403121561393c578081fd5b5035919050565b60008060408385031215613955578182fd5b8235915061396560208401613821565b90509250929050565b6000815180845260208085019450808401835b838110156139a65781516001600160a01b031687529582019590820190600101613981565b509495945050505050565b8481526080602082015260006139ca608083018661396e565b6001600160a01b03949094166040830152506060015292915050565b6000602080835283518082850152825b81811015613a12578581018301518582016040015282016139f6565b81811115613a235783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b82815260406020820152600061376d604083018461396e565b85815284602082015260a060408201526000613aa660a083018661396e565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115613ad657613ad6613b8f565b500190565b600082613aea57613aea613ba5565b500490565b6000816000190483118215151615613b0957613b09613b8f565b500290565b600082821015613b2057613b20613b8f565b500390565b600181811c90821680613b3957607f821691505b60208210811415613b5a57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613b7457613b74613b8f565b5060010190565b600082613b8a57613b8a613ba5565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b0381168114613bd057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220dc1f057a8673229369734e63bbb41d0375cdbc3bbcb5bee98a81b7ef6aa446c864736f6c63430008040033

Deployed Bytecode Sourcemap

15661:28841:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44058:176;;;;;;;;;;-1:-1:-1;44058:176:0;;;;;:::i;:::-;;:::i;:::-;;26956:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27868:161;;;;;;;;;;-1:-1:-1;27868:161:0;;;;;:::i;:::-;;:::i;:::-;;;3714:14:1;;3707:22;3689:41;;3677:2;3662:18;27868:161:0;3644:92:1;28989:87:0;;;;;;;;;;-1:-1:-1;29058:10:0;;28989:87;;;12206:25:1;;;12194:2;12179:18;28989:87:0;12161:76:1;17377:41:0;;;;;;;;;;-1:-1:-1;17377:41:0;;;;;;;-1:-1:-1;;;;;17377:41:0;;;;;;-1:-1:-1;;;;;3196:32:1;;;3178:51;;3166:2;3151:18;17377:41:0;3133:102:1;27233:95:0;;;;;;;;;;-1:-1:-1;27313:7:0;;27233:95;;43930:109;;;;;;;;;;-1:-1:-1;43930:109:0;;;;;:::i;:::-;;:::i;28037:313::-;;;;;;;;;;-1:-1:-1;28037:313:0;;;;;:::i;:::-;;:::i;15777:81::-;;;;;;;;;;;;;;;43429:150;;;;;;;;;;-1:-1:-1;43429:150:0;;;;;:::i;:::-;;:::i;29919:253::-;;;;;;;;;;-1:-1:-1;29919:253:0;;;;;:::i;:::-;;:::i;27142:83::-;;;;;;;;;;-1:-1:-1;27208:9:0;;27142:83;;27208:9;;;;13308:36:1;;13296:2;13281:18;27142:83:0;13263:87:1;28358:218:0;;;;;;;;;;-1:-1:-1;28358:218:0;;;;;:::i;:::-;;:::i;16772:26::-;;;;;;;;;;;;;;;;29088:377;;;;;;;;;;-1:-1:-1;29088:377:0;;;;;:::i;:::-;;:::i;29475:436::-;;;;;;;;;;-1:-1:-1;29475:436:0;;;;;:::i;:::-;;:::i;17425:28::-;;;;;;;;;;-1:-1:-1;17425:28:0;;;;-1:-1:-1;;;;;17425:28:0;;;17490:41;;;;;;;;;;-1:-1:-1;17490:41:0;;;;-1:-1:-1;;;17490:41:0;;;;;;17158:37;;;;;;;;;;;;;;;;43147:123;;;;;;;;;;-1:-1:-1;43147:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;43235:27:0;43211:4;43235:27;;;:18;:27;;;;;;;;;43147:123;7099:90;;;;;;;;;;-1:-1:-1;7166:15:0;7099:90;;7001;;;;;;;;;;-1:-1:-1;7074:9:0;;7001:90;;17538:34;;;;;;;;;;-1:-1:-1;17538:34:0;;;;-1:-1:-1;;;17538:34:0;;;;;;30180:113;;;;;;;;;;-1:-1:-1;30180:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;30267:18:0;30243:4;30267:18;;;:9;:18;;;;;;;;;30180:113;43845:77;;;;;;;;;;-1:-1:-1;43845:77:0;;;;;:::i;:::-;;:::i;16853:32::-;;;;;;;;;;;;;;;;27336:198;;;;;;;;;;-1:-1:-1;27336:198:0;;;;;:::i;:::-;;:::i;16694:25::-;;;;;;;;;;;;;;;;44246:159;;;;;;;;;;-1:-1:-1;44246:159:0;;;;;:::i;:::-;;:::i;18519:8429::-;;;;;;;;;;;;;:::i;28861:120::-;;;;;;;;;;-1:-1:-1;28861:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;28953:20:0;28929:4;28953:20;;;:11;:20;;;;;;;;;28861:120;18168:343;;;;;;;;;;;;;:::i;6529:79::-;;;;;;;;;;-1:-1:-1;6567:7:0;6594:6;-1:-1:-1;;;;;6594:6:0;6529:79;;27047:87;;;;;;;;;;;;;:::i;16952:26::-;;;;;;;;;;;;;;;;43727:106;;;;;;;;;;-1:-1:-1;43727:106:0;;;;;:::i;:::-;;:::i;28584:269::-;;;;;;;;;;-1:-1:-1;28584:269:0;;;;;:::i;:::-;;:::i;7431:305::-;;;;;;;;;;;;;:::i;27542:167::-;;;;;;;;;;-1:-1:-1;27542:167:0;;;;;:::i;:::-;;:::i;17130:21::-;;;;;;;;;;;;;;;;7197:226;;;;;;;;;;-1:-1:-1;7197:226:0;;;;;:::i;:::-;;:::i;27717:143::-;;;;;;;;;;-1:-1:-1;27717:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;27825:18:0;;;27798:7;27825:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;27717:143;17093:30;;;;;;;;;;;;;;;;43280:133;;;;;;;;;;-1:-1:-1;43280:133:0;;;;;:::i;:::-;;:::i;6749:244::-;;;;;;;;;;-1:-1:-1;6749:244:0;;;;;:::i;:::-;;:::i;17282:31::-;;;;;;;;;;-1:-1:-1;17282:31:0;;;;;;;;;;;44058:176;6656:6;;-1:-1:-1;;;;;6656:6:0;927:10;6656:22;6648:67;;;;-1:-1:-1;;;6648:67:0;;;;;;;:::i;:::-;;;;;;;;;44162:2:::1;44153:6;44141:11;;:18;;;;:::i;:::-;44140:24;;44132:33;;;::::0;::::1;;44177:7;:16:::0;;;44204:15:::1;:22:::0;44058:176::o;26956:83::-;26993:13;27026:5;27019:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26956:83;:::o;27868:161::-;27943:4;27960:39;927:10;27983:7;27992:6;27960:8;:39::i;:::-;-1:-1:-1;28017:4:0;27868:161;;;;;:::o;43930:109::-;6656:6;;-1:-1:-1;;;;;6656:6:0;927:10;6656:22;6648:67;;;;-1:-1:-1;;;6648:67:0;;;;;;;:::i;:::-;44009:11:::1;:22:::0;43930:109::o;28037:313::-;28135:4;28152:36;28162:6;28170:9;28181:6;28152:9;:36::i;:::-;28199:121;28208:6;927:10;28230:89;28268:6;28230:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28230:19:0;;;;;;:11;:19;;;;;;;;927:10;28230:33;;;;;;;;;;:37;:89::i;:::-;28199:8;:121::i;:::-;-1:-1:-1;28338:4:0;28037:313;;;;;:::o;43429:150::-;6656:6;;-1:-1:-1;;;;;6656:6:0;927:10;6656:22;6648:67;;;;-1:-1:-1;;;6648:67:0;;;;;;;:::i;:::-;43499:14:::1;:25:::0;;-1:-1:-1;;;;43499:25:0::1;-1:-1:-1::0;;;43499:25:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;43540:31:::1;::::0;3689:41:1;;;43540:31:0::1;::::0;3662:18:1;43540:31:0::1;;;;;;;43429:150:::0;:::o;29919:253::-;29985:7;30024;;30013;:18;;30005:73;;;;-1:-1:-1;;;30005:73:0;;5705:2:1;30005:73:0;;;5687:21:1;5744:2;5724:18;;;5717:30;5783:34;5763:18;;;5756:62;-1:-1:-1;;;5834:18:1;;;5827:40;5884:19;;30005:73:0;5677:232:1;30005:73:0;30089:19;30112:10;:8;:10::i;:::-;30089:33;-1:-1:-1;30140:24:0;:7;30089:33;30140:11;:24::i;:::-;30133:31;29919:253;-1:-1:-1;;;29919:253:0:o;28358:218::-;927:10;28446:4;28495:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;28495:34:0;;;;;;;;;;28446:4;;28463:83;;28486:7;;28495:50;;28534:10;28495:38;:50::i;29088:377::-;927:10;29140:14;29189:19;;;:11;:19;;;;;;;;29188:20;29180:77;;;;-1:-1:-1;;;29180:77:0;;11093:2:1;29180:77:0;;;11075:21:1;11132:2;11112:18;;;11105:30;11171:34;11151:18;;;11144:62;-1:-1:-1;;;11222:18:1;;;11215:42;11274:19;;29180:77:0;11065:234:1;29180:77:0;29269:15;29293:19;29304:7;29293:10;:19::i;:::-;-1:-1:-1;;;;;;;;;29341:15:0;;;;;;:7;:15;;;;;;29268:44;;-1:-1:-1;29341:28:0;;:15;-1:-1:-1;29268:44:0;29341:19;:28::i;:::-;-1:-1:-1;;;;;29323:15:0;;;;;;:7;:15;;;;;:46;29390:7;;:20;;29402:7;29390:11;:20::i;:::-;29380:7;:30;29434:10;;:23;;29449:7;29434:14;:23::i;:::-;29421:10;:36;-1:-1:-1;;;29088:377:0:o;29475:436::-;29565:7;29604;;29593;:18;;29585:62;;;;-1:-1:-1;;;29585:62:0;;8036:2:1;29585:62:0;;;8018:21:1;8075:2;8055:18;;;8048:30;8114:33;8094:18;;;8087:61;8165:18;;29585:62:0;8008:181:1;29585:62:0;29663:17;29658:246;;29698:15;29722:19;29733:7;29722:10;:19::i;:::-;-1:-1:-1;29697:44:0;;-1:-1:-1;29756:14:0;;-1:-1:-1;;;;;29756:14:0;29658:246;29805:23;29836:19;29847:7;29836:10;:19::i;:::-;-1:-1:-1;29803:52:0;;-1:-1:-1;29870:22:0;;-1:-1:-1;;;;;29870:22:0;43845:77;6656:6;;-1:-1:-1;;;;;6656:6:0;927:10;6656:22;6648:67;;;;-1:-1:-1;;;6648:67:0;;;;;;;:::i;:::-;43906:1:::1;:8:::0;43845:77::o;27336:198::-;-1:-1:-1;;;;;27426:20:0;;27402:7;27426:20;;;:11;:20;;;;;;;;27422:49;;;-1:-1:-1;;;;;;27455:16:0;;;;;:7;:16;;;;;;;27336:198::o;27422:49::-;-1:-1:-1;;;;;27509:16:0;;;;;;:7;:16;;;;;;27489:37;;:19;:37::i;44246:159::-;6656:6;;-1:-1:-1;;;;;6656:6:0;927:10;6656:22;6648:67;;;;-1:-1:-1;;;6648:67:0;;;;;;;:::i;:::-;44358:2:::1;44348:7:::0;;44337:18:::1;::::0;:10;:18:::1;:::i;:::-;44336:24;;44328:33;;;::::0;::::1;;44373:11;:24:::0;44246:159::o;18519:8429::-;6656:6;;-1:-1:-1;;;;;6656:6:0;927:10;6656:22;6648:67;;;;-1:-1:-1;;;6648:67:0;;;;;;;:::i;:::-;18575:35:::1;18632:42;18575:100;;18720:16;-1:-1:-1::0;;;;;18720:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18702:66:0::1;;18777:4;18784:16;-1:-1:-1::0;;;;;18784:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18702:106;::::0;-1:-1:-1;;;;;;18702:106:0::1;::::0;;;;;;-1:-1:-1;;;;;3470:15:1;;;18702:106:0::1;::::0;::::1;3452:34:1::0;3522:15;;3502:18;;;3495:43;3387:18;;18702:106:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18686:13;:122:::0;;-1:-1:-1;;;;;;18686:122:0::1;-1:-1:-1::0;;;;;18686:122:0;;::::1;;::::0;;18821:15:::1;:34:::0;;-1:-1:-1;;;;;;18821:34:0::1;::::0;;;::::1;;;::::0;;-1:-1:-1;6594:6:0;;-1:-1:-1;;18868:18:0::1;::::0;-1:-1:-1;6594:6:0;-1:-1:-1;;;;;18868:27:0::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;18868:27:0;;;:34;;;::::1;;-1:-1:-1::0;;18868:34:0;;::::1;;::::0;;18940:4:::1;18913:33:::0;;:18:::1;:33:::0;;;;;:40;;;::::1;18868:34:::0;18913:40;;::::1;::::0;;;18976:9:::1;:62:::0;;;;:69;;;::::1;::::0;::::1;::::0;;19056:17:::1;:75:::0;;;;::::1;::::0;;;;;::::1;::::0;;-1:-1:-1;;;;;;19056:75:0;;::::1;18994:42;19056:75;::::0;;;19144:62;:69;;;::::1;::::0;::::1;::::0;;19224:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;19162:42;19224:75;::::0;;19312:62;:69;;;::::1;::::0;::::1;::::0;;19392:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;19330:42;19392:75:::0;;::::1;::::0;;;19480:69;;;::::1;::::0;::::1;::::0;;;19560:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;19648:62;:69;;;::::1;::::0;::::1;::::0;;19728:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;19666:42;19728:75;::::0;;19816:62;:69;;;::::1;::::0;::::1;::::0;;19896:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;19834:42;19896:75;::::0;;19984:62;:69;;;::::1;::::0;::::1;::::0;;20064:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;20002:42;20064:75;::::0;;20152:62;:69;;;::::1;::::0;::::1;::::0;;20232:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;20170:42;20232:75;::::0;;20320:62;:69;;;::::1;::::0;::::1;::::0;;20400:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;20338:42;20400:75;::::0;;20488:62;:69;;;::::1;::::0;::::1;::::0;;20568:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;20506:42;20568:75;::::0;;20656:62;:69;;;::::1;::::0;::::1;::::0;;20736:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;20674:42;20736:75;::::0;;20824:62;:69;;;::::1;::::0;::::1;::::0;;20904:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;20842:42;20904:75;::::0;;20992:62;:69;;;::::1;::::0;::::1;::::0;;21072:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;21010:42;21072:75;::::0;;21160:62;:69;;;::::1;::::0;::::1;::::0;;21240:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;21178:42;21240:75;::::0;;21328:62;:69;;;::::1;::::0;::::1;::::0;;21408:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;21346:42;21408:75;::::0;;21496:62;:69;;;::::1;::::0;::::1;::::0;;21576:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;21514:42;21576:75;::::0;;21664:62;:69;;;::::1;::::0;::::1;::::0;;21744:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;21682:42;21744:75;::::0;;21832:62;:69;;;::::1;::::0;::::1;::::0;;21912:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;21850:42;21912:75;::::0;;22000:62;:69;;;::::1;::::0;::::1;::::0;;22080:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;22018:42;22080:75;::::0;;22168:62;:69;;;::::1;::::0;::::1;::::0;;22248:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;22186:42;22248:75;::::0;;22336:62;:69;;;::::1;::::0;::::1;::::0;;22416:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;22354:42;22416:75;::::0;;22504:62;:69;;;::::1;::::0;::::1;::::0;;22584:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;22522:42;22584:75;::::0;;22672:62;:69;;;::::1;::::0;::::1;::::0;;22752:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;22690:42;22752:75;::::0;;22840:62;:69;;;::::1;::::0;::::1;::::0;;22920:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;22858:42;22920:75;::::0;;23008:62;:69;;;::::1;::::0;::::1;::::0;;23088:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;23026:42;23088:75;::::0;;23176:62;:69;;;::::1;::::0;::::1;::::0;;23256:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;23194:42;23256:75;::::0;;23344:62;:69;;;::::1;::::0;::::1;::::0;;23424:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;23362:42;23424:75;::::0;;23512:62;:69;;;::::1;::::0;::::1;::::0;;23592:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;23530:42;23592:75;::::0;;23680:62;:69;;;::::1;::::0;::::1;::::0;;23760:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;23698:42;23760:75:::0;;::::1;::::0;;;23848:62;:69;;;::::1;::::0;::::1;::::0;;23928:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;23866:42;23928:75;::::0;;24016:62;:69;;;::::1;::::0;::::1;::::0;;24096:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;24034:42;24096:75;::::0;;24184:62;:69;;;::::1;::::0;::::1;::::0;;24264:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;24202:42;24264:75;::::0;;24352:62;:69;;;::::1;::::0;::::1;::::0;;24432:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;24370:42;24432:75;::::0;;24520:62;:69;;;::::1;::::0;::::1;::::0;;24600:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;24538:42;24600:75;::::0;;24688:69;;;::::1;::::0;::::1;::::0;;;24768:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;24856:62;:69;;;::::1;::::0;::::1;::::0;;24936:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;24874:42;24936:75;::::0;;25024:62;:69;;;::::1;::::0;::::1;::::0;;25104:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;25042:42;25104:75;::::0;;25192:62;:69;;;::::1;::::0;::::1;::::0;;25272:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;25210:42;25272:75;::::0;;25360:62;:69;;;::::1;::::0;::::1;::::0;;25440:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;25378:42;25440:75;::::0;;25528:62;:69;;;::::1;::::0;::::1;::::0;;25608:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;25546:42;25608:75;::::0;;25696:62;:69;;;::::1;::::0;::::1;::::0;;25776:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;25714:42;25776:75;::::0;;25864:62;:69;;;::::1;::::0;::::1;::::0;;25944:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;25882:42;25944:75;::::0;;26032:62;:69;;;::::1;::::0;::::1;::::0;;26112:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;26050:42;26112:75;::::0;;26200:62;:69;;;::::1;::::0;::::1;::::0;;26280:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;26218:42;26280:75;::::0;;26368:62;:69;;;::::1;::::0;::::1;::::0;;26448:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;26386:42;26448:75;::::0;;26536:62;:69;;;::::1;::::0;::::1;::::0;;26616:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;26554:42;26616:75:::0;;::::1;::::0;;;26704:69;;;;::::1;::::0;::::1;::::0;;26784:75;;;;::::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;26872:14:0::1;:68:::0;;;-1:-1:-1;;;;;;26872:68:0;;::::1;;::::0;;18519:8429::o;18168:343::-;6656:6;;-1:-1:-1;;;;;6656:6:0;927:10;6656:22;6648:67;;;;-1:-1:-1;;;6648:67:0;;;;;;;:::i;:::-;18241:18:::1;18225:13;:34:::0;18282:1:::1;18270:11;:13:::0;;;18294::::1;:25:::0;18338:2:::1;18330:7;:10:::0;18351:21:::1;:28:::0;;-1:-1:-1;;;;18351:28:0::1;-1:-1:-1::0;;;18351:28:0::1;::::0;;18390:11:::1;:18:::0;;-1:-1:-1;;18390:18:0::1;18351:28;18390:18;::::0;;18432:15:::1;18419:10;:28:::0;;;18472:31:::1;::::0;18491:11:::1;18472:31;:::i;:::-;18458:11;:45:::0;18168:343::o;27047:87::-;27086:13;27119:7;27112:14;;;;;:::i;43727:106::-;6656:6;;-1:-1:-1;;;;;6656:6:0;927:10;6656:22;6648:67;;;;-1:-1:-1;;;6648:67:0;;;;;;;:::i;:::-;43802:11:::1;:23:::0;43727:106::o;28584:269::-;28677:4;28694:129;927:10;28717:7;28726:96;28765:15;28726:96;;;;;;;;;;;;;;;;;927:10;28726:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;28726:34:0;;;;;;;;;;;;:38;:96::i;7431:305::-;7483:14;;-1:-1:-1;;;;;7483:14:0;7501:10;7483:28;7475:76;;;;-1:-1:-1;;;7475:76:0;;11506:2:1;7475:76:0;;;11488:21:1;11545:2;11525:18;;;11518:30;11584:34;11564:18;;;11557:62;-1:-1:-1;;;11635:18:1;;;11628:33;11678:19;;7475:76:0;11478:225:1;7475:76:0;7588:9;;7570:15;:27;7562:72;;;;-1:-1:-1;;;7562:72:0;;10380:2:1;7562:72:0;;;10362:21:1;10419:2;10399:18;;;10392:30;10458:33;10438:18;;;10431:61;10509:18;;7562:72:0;10352:181:1;7562:72:0;7679:14;;;7671:6;;7650:44;;-1:-1:-1;;;;;7679:14:0;;;;7671:6;;;;7650:44;;;7714:14;;;7705:23;;-1:-1:-1;;;;;;7705:23:0;-1:-1:-1;;;;;7714:14:0;;;7705:23;;;;;;7431:305::o;27542:167::-;27620:4;27637:42;927:10;27661:9;27672:6;27637:9;:42::i;7197:226::-;6656:6;;-1:-1:-1;;;;;6656:6:0;927:10;6656:22;6648:67;;;;-1:-1:-1;;;6648:67:0;;;;;;;:::i;:::-;7278:6:::1;::::0;;;7261:23;;-1:-1:-1;;;;;;7261:23:0;;::::1;-1:-1:-1::0;;;;;7278:6:0;::::1;7261:23;::::0;;;7295:19:::1;::::0;;7337:22:::1;7355:4:::0;7337:15:::1;:22;:::i;:::-;7325:9;:34:::0;7412:1:::1;7396:6:::0;;7375:40:::1;::::0;-1:-1:-1;;;;;7396:6:0;;::::1;::::0;7375:40:::1;::::0;7412:1;;7375:40:::1;7197:226:::0;:::o;43280:133::-;6656:6;;-1:-1:-1;;;;;6656:6:0;927:10;6656:22;6648:67;;;;-1:-1:-1;;;6648:67:0;;;;;;;:::i;:::-;43364:14:::1;:41:::0;;-1:-1:-1;;;;;43364:41:0;;::::1;;;-1:-1:-1::0;;;;;;43364:41:0;;::::1;::::0;;;::::1;::::0;;43280:133::o;6749:244::-;6656:6;;-1:-1:-1;;;;;6656:6:0;927:10;6656:22;6648:67;;;;-1:-1:-1;;;6648:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6838:22:0;::::1;6830:73;;;::::0;-1:-1:-1;;;6830:73:0;;6116:2:1;6830:73:0::1;::::0;::::1;6098:21:1::0;6155:2;6135:18;;;6128:30;6194:34;6174:18;;;6167:62;-1:-1:-1;;;6245:18:1;;;6238:36;6291:19;;6830:73:0::1;6088:228:1::0;6830:73:0::1;6940:6;::::0;;6919:38:::1;::::0;-1:-1:-1;;;;;6919:38:0;;::::1;::::0;6940:6;::::1;::::0;6919:38:::1;::::0;::::1;6968:6;:17:::0;;-1:-1:-1;;;;;;6968:17:0::1;-1:-1:-1::0;;;;;6968:17:0;;;::::1;::::0;;;::::1;::::0;;6749:244::o;30301:337::-;-1:-1:-1;;;;;30394:19:0;;30386:68;;;;-1:-1:-1;;;30386:68:0;;9975:2:1;30386:68:0;;;9957:21:1;10014:2;9994:18;;;9987:30;10053:34;10033:18;;;10026:62;-1:-1:-1;;;10104:18:1;;;10097:34;10148:19;;30386:68:0;9947:226:1;30386:68:0;-1:-1:-1;;;;;30473:21:0;;30465:68;;;;-1:-1:-1;;;30465:68:0;;6523:2:1;30465:68:0;;;6505:21:1;6562:2;6542:18;;;6535:30;6601:34;6581:18;;;6574:62;-1:-1:-1;;;6652:18:1;;;6645:32;6694:19;;30465:68:0;6495:224:1;30465:68:0;-1:-1:-1;;;;;30546:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;30598:32;;12206:25:1;;;30598:32:0;;12179:18:1;30598:32:0;;;;;;;30301:337;;;:::o;30646:3611::-;-1:-1:-1;;;;;30777:20:0;;30769:70;;;;-1:-1:-1;;;30769:70:0;;9569:2:1;30769:70:0;;;9551:21:1;9608:2;9588:18;;;9581:30;9647:34;9627:18;;;9620:62;-1:-1:-1;;;9698:18:1;;;9691:35;9743:19;;30769:70:0;9541:227:1;30769:70:0;-1:-1:-1;;;;;30858:23:0;;30850:71;;;;-1:-1:-1;;;30850:71:0;;5301:2:1;30850:71:0;;;5283:21:1;5340:2;5320:18;;;5313:30;5379:34;5359:18;;;5352:62;-1:-1:-1;;;5430:18:1;;;5423:33;5473:19;;30850:71:0;5273:225:1;30850:71:0;30949:1;30940:6;:10;30932:64;;;;-1:-1:-1;;;30932:64:0;;9159:2:1;30932:64:0;;;9141:21:1;9198:2;9178:18;;;9171:30;9237:34;9217:18;;;9210:62;-1:-1:-1;;;9288:18:1;;;9281:39;9337:19;;30932:64:0;9131:231:1;30932:64:0;-1:-1:-1;;;;;31016:20:0;;;;;;:9;:20;;;;;;;;31015:21;31007:57;;;;-1:-1:-1;;;31007:57:0;;11910:2:1;31007:57:0;;;11892:21:1;11949:2;11929:18;;;11922:30;-1:-1:-1;;;11968:18:1;;;11961:53;12031:18;;31007:57:0;11882:173:1;31007:57:0;31094:10;31084:21;;;;:9;:21;;;;;;;;31083:22;31075:58;;;;-1:-1:-1;;;31075:58:0;;11910:2:1;31075:58:0;;;11892:21:1;11949:2;11929:18;;;11922:30;-1:-1:-1;;;11968:18:1;;;11961:53;12031:18;;31075:58:0;11882:173:1;31075:58:0;6567:7;6594:6;-1:-1:-1;;;;;31151:17:0;;;6594:6;;31151:17;;;;:41;;-1:-1:-1;6567:7:0;6594:6;-1:-1:-1;;;;;31172:20:0;;;6594:6;;31172:20;;31151:41;31148:553;;;31228:11;;;;;;;31223:283;;-1:-1:-1;;;;;31266:23:0;;31284:4;31266:23;;:53;;-1:-1:-1;;;;;;31293:26:0;;31314:4;31293:26;31266:53;:100;;;-1:-1:-1;6567:7:0;6594:6;-1:-1:-1;;;;;31340:26:0;;;6594:6;;31340:26;31266:100;:133;;;-1:-1:-1;6567:7:0;6594:6;-1:-1:-1;;;;;31370:29:0;;;6594:6;;31370:29;31266:133;31260:231;;31433:11;;;;;;;31425:46;;;;-1:-1:-1;;;31425:46:0;;7685:2:1;31425:46:0;;;7667:21:1;7724:2;7704:18;;;7697:30;-1:-1:-1;;;7743:18:1;;;7736:52;7805:18;;31425:46:0;7657:172:1;31425:46:0;31525:16;;;;31522:168;;;31575:10;31566:20;;;;:8;:20;;;;;:27;;;;;31562:113;;31641:14;;;;;;;;-1:-1:-1;31641:14:0;;;;;;;;;;31650:4;31641:14;;;;;;31627:10;31618:20;;:8;:20;;;;;;;:37;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31618:37:0;;;;;;;;;;31562:113;31759:13;;-1:-1:-1;;;;;31749:23:0;;;31759:13;;31749:23;:64;;;;-1:-1:-1;31797:15:0;;-1:-1:-1;;;;;31776:37:0;;;31797:15;;;;;31776:37;;31749:64;:98;;;;-1:-1:-1;;;;;;31818:29:0;;;;;;:18;:29;;;;;;;;31817:30;31749:98;31746:797;;;31876:11;;;;;;;31868:48;;;;-1:-1:-1;;;31868:48:0;;10740:2:1;31868:48:0;;;10722:21:1;10779:2;10759:18;;;10752:30;10818:26;10798:18;;;10791:54;10862:18;;31868:48:0;10712:174:1;31868:48:0;31967:11;;31953:13;:25;32018:16;;;;32015:378;;;32076:15;32062:11;;:29;32059:315;;;32138:13;;32128:6;:23;;32120:32;;;;;;-1:-1:-1;;;;;32187:19:0;;;;;;:8;:19;;;;;:23;32213:15;-1:-1:-1;32179:88:0;;;;-1:-1:-1;;;32179:88:0;;6926:2:1;32179:88:0;;;6908:21:1;6965:2;6945:18;;;6938:30;7004:34;6984:18;;;6977:62;-1:-1:-1;;;7055:18:1;;;7048:32;7097:19;;32179:88:0;6898:224:1;32179:88:0;32320:30;:15;32339:10;32320:30;:::i;:::-;-1:-1:-1;;;;;32294:19:0;;;;;;:8;:19;;;;;:56;32059:315;32414:16;;;;32411:121;;;32482:30;:15;32501:10;32482:30;:::i;:::-;-1:-1:-1;;;;;32455:19:0;;;;;;:8;:19;;;;;:24;;:57;32411:121;32576:16;;-1:-1:-1;;;32576:16:0;;;;32575:17;:42;;;;-1:-1:-1;32596:21:0;;-1:-1:-1;;;32596:21:0;;;;32575:42;:72;;;;-1:-1:-1;32634:13:0;;-1:-1:-1;;;;;32621:26:0;;;32634:13;;32621:26;32575:72;32571:1357;;;32712:19;;;;32709:231;;;32756:16;32775:26;32786:14;;32775:6;:10;;:26;;;;:::i;:::-;32858:13;;32756:45;;-1:-1:-1;32835:50:0;;32848:36;;32877:6;;32848:24;;-1:-1:-1;;;;;32858:13:0;32848:9;:24::i;:::-;:28;;:36::i;:::-;32835:8;;:12;:50::i;:::-;32824:61;;32908:16;32915:8;32908:6;:16::i;:::-;32709:231;;32989:13;;32968:18;33108:24;33126:4;33108:9;:24::i;:::-;33077:55;-1:-1:-1;33151:24:0;;33148:96;;33196:32;33207:20;33196:10;:32::i;:::-;33425:14;;33313:21;;-1:-1:-1;;;33425:14:0;;;;:39;;;;;33453:11;;33443:6;:21;;33425:39;33421:393;;;33503:11;33517:2;33503:16;;33556:21;33580:89;33666:2;33580:81;33596:64;33604:55;33647:11;;33605:36;33639:1;;33606:27;33621:11;;33606:10;:14;;:27;;;;:::i;:::-;33605:33;;:36::i;:::-;33604:42;;:55::i;:::-;33596:3;;:7;:64::i;:::-;33580:11;;;:15;:81::i;:89::-;33556:113;;33753:13;33742:7;:24;33738:60;;33770:28;33784:13;33770;:28::i;:::-;33421:393;;;-1:-1:-1;;33890:13:0;:26;32571:1357;-1:-1:-1;;;;;34059:26:0;;33940:12;34059:26;;;:18;:26;;;;;;33955:4;;34059:26;;;:59;;-1:-1:-1;;;;;;34089:29:0;;;;;;:18;:29;;;;;;;;34059:59;34056:105;;;-1:-1:-1;34144:5:0;34056:105;34201:48;34216:6;34224:9;34234:6;34241:7;34201:14;:48::i;:::-;30646:3611;;;;:::o;2238:192::-;2324:7;2360:12;2352:6;;;;2344:29;;;;-1:-1:-1;;;2344:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2384:9:0;2396:5;2400:1;2396;:5;:::i;:::-;2384:17;2238:192;-1:-1:-1;;;;;2238:192:0:o;41339:163::-;41380:7;41401:15;41418;41437:19;:17;:19::i;:::-;41400:56;;-1:-1:-1;41400:56:0;-1:-1:-1;41474:20:0;41400:56;;41474:11;:20::i;:::-;41467:27;;;;41339:163;:::o;2698:132::-;2756:7;2783:39;2787:1;2790;2783:39;;;;;;;;;;;;;;;;;:3;:39::i;1905:181::-;1963:7;;1995:5;1999:1;1995;:5;:::i;:::-;1983:17;;2024:1;2019;:6;;2011:46;;;;-1:-1:-1;;;2011:46:0;;7329:2:1;2011:46:0;;;7311:21:1;7368:2;7348:18;;;7341:30;7407:29;7387:18;;;7380:57;7454:18;;2011:46:0;7301:177:1;40137:419:0;40196:7;40205;40214;40223;40232;40241;40262:23;40287:12;40301:18;40323:20;40335:7;40323:11;:20::i;:::-;40261:82;;;;;;40355:15;40372:23;40397:12;40413:50;40425:7;40434:4;40440:10;40452;:8;:10::i;:::-;40413:11;:50::i;:::-;40354:109;;;;-1:-1:-1;40354:109:0;;-1:-1:-1;40514:15:0;;-1:-1:-1;40531:4:0;;-1:-1:-1;40537:10:0;;-1:-1:-1;40137:419:0;;-1:-1:-1;;;;;40137:419:0:o;2094:136::-;2152:7;2179:43;2183:1;2186;2179:43;;;;;;;;;;;;;;;;;:3;:43::i;2438:250::-;2496:7;2520:6;2516:47;;-1:-1:-1;2550:1:0;2543:8;;2516:47;2575:9;2587:5;2591:1;2587;:5;:::i;:::-;2575:17;-1:-1:-1;2620:1:0;2611:5;2615:1;2575:17;2611:5;:::i;:::-;:10;2603:56;;;;-1:-1:-1;;;2603:56:0;;8396:2:1;2603:56:0;;;8378:21:1;8435:2;8415:18;;;8408:30;8474:34;8454:18;;;8447:62;-1:-1:-1;;;8525:18:1;;;8518:31;8566:19;;2603:56:0;8368:223:1;34777:428:0;34852:11;;34877:23;;;34874:201;;;-1:-1:-1;34930:11:0;;34874:201;;;34974:2;34962:9;:14;34959:116;;;-1:-1:-1;35006:2:0;34959:116;;;-1:-1:-1;35054:9:0;34959:116;35088:17;:10;35103:1;35088:14;:17::i;:::-;:22;35085:66;;35127:12;;;;:::i;:::-;;;;35085:66;35171:13;:26;-1:-1:-1;34777:428:0:o;34265:346::-;17950:16;:23;;-1:-1:-1;;;;17950:23:0;-1:-1:-1;;;17950:23:0;;;34373:21:::1;34405:38;34422:20:::0;34405:16:::1;:38::i;:::-;34454:26;34483:41;:21;34509:14:::0;34483:25:::1;:41::i;:::-;34559:14;::::0;34454:70;;-1:-1:-1;34538:63:0::1;::::0;34559:14:::1;::::0;::::1;-1:-1:-1::0;;;;;34559:14:0::1;34575:25;34454:70:::0;34598:1:::1;34575:22;:25::i;:::-;34538:20;:63::i;:::-;-1:-1:-1::0;;17996:16:0;:24;;-1:-1:-1;;;;17996:24:0;;;-1:-1:-1;34265:346:0:o;34621:144::-;17950:16;:23;;-1:-1:-1;;;;17950:23:0;-1:-1:-1;;;17950:23:0;;;34695:10;;34691:67:::1;;34722:24;34739:6;34722:16;:24::i;:::-;-1:-1:-1::0;17996:16:0;:24;;-1:-1:-1;;;;17996:24:0;;;34621:144::o;36980:688::-;37091:7;37087:40;;37113:14;:12;:14::i;:::-;-1:-1:-1;;;;;37144:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;37168:22:0;;;;;;:11;:22;;;;;;;;37167:23;37144:46;37140:467;;;37207:48;37229:6;37237:9;37248:6;37207:21;:48::i;:::-;37140:467;;;-1:-1:-1;;;;;37278:19:0;;;;;;:11;:19;;;;;;;;37277:20;:46;;;;-1:-1:-1;;;;;;37301:22:0;;;;;;:11;:22;;;;;;;;37277:46;37273:334;;;37340:46;37360:6;37368:9;37379:6;37340:19;:46::i;37273:334::-;-1:-1:-1;;;;;37408:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;37431:22:0;;;;;;:11;:22;;;;;;;;37408:45;37404:203;;;37470:48;37492:6;37500:9;37511:6;37470:21;:48::i;37404:203::-;37551:44;37569:6;37577:9;37588:6;37551:17;:44::i;:::-;37623:7;37619:41;;37645:15;43068;;43058:7;:25;43110:21;;43094:13;:37;43014:125;41510:555;41607:7;;41643;;41560;;;;;41661:289;41685:9;:16;41681:20;;41661:289;;;41751:7;41727;:21;41735:9;41745:1;41735:12;;;;;;-1:-1:-1;;;41735:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41735:12:0;41727:21;;;;;;;;;;;;;:31;;:66;;;41786:7;41762;:21;41770:9;41780:1;41770:12;;;;;;-1:-1:-1;;;41770:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41770:12:0;41762:21;;;;;;;;;;;;;:31;41727:66;41723:97;;;41803:7;;41812;;41795:25;;;;;;;41510:555;;:::o;41723:97::-;41845:34;41857:7;:21;41865:9;41875:1;41865:12;;;;;;-1:-1:-1;;;41865:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41865:12:0;41857:21;;;;;;;;;;;;;41845:7;;:11;:34::i;:::-;41835:44;;41904:34;41916:7;:21;41924:9;41934:1;41924:12;;;;;;-1:-1:-1;;;41924:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41924:12:0;41916:21;;;;;;;;;;;;;41904:7;;:11;:34::i;:::-;41894:44;-1:-1:-1;41703:3:0;;;;:::i;:::-;;;;41661:289;;;-1:-1:-1;41986:7:0;;41974;;:20;;:11;:20::i;:::-;41964:7;:30;41960:61;;;42004:7;;42013;;41996:25;;;;;;41510:555;;:::o;41960:61::-;42040:7;;42049;;-1:-1:-1;41510:555:0;-1:-1:-1;41510:555:0:o;2838:278::-;2924:7;2959:12;2952:5;2944:28;;;;-1:-1:-1;;;2944:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2983:9:0;2995:5;2999:1;2995;:5;:::i;40564:330::-;40624:7;40633;40642;40662:12;40677:24;40693:7;40677:15;:24::i;:::-;40662:39;;40712:18;40733:30;40755:7;40733:21;:30::i;:::-;40712:51;-1:-1:-1;40774:23:0;40800:33;40712:51;40800:17;:7;40812:4;40800:11;:17::i;:::-;:21;;:33::i;:::-;40774:59;40869:4;;-1:-1:-1;40875:10:0;;-1:-1:-1;40564:330:0;;-1:-1:-1;;;40564:330:0:o;40902:429::-;41017:7;;;;41073:24;:7;41085:11;41073;:24::i;:::-;41055:42;-1:-1:-1;41108:12:0;41123:21;:4;41132:11;41123:8;:21::i;:::-;41108:36;-1:-1:-1;41155:18:0;41176:27;:10;41191:11;41176:14;:27::i;:::-;41155:48;-1:-1:-1;41214:23:0;41240:33;41155:48;41240:17;:7;41252:4;41240:11;:17::i;:33::-;41292:7;;;;-1:-1:-1;41318:4:0;;-1:-1:-1;40902:429:0;;-1:-1:-1;;;;;;;40902:429:0:o;3124:130::-;3182:7;3209:37;3213:1;3216;3209:37;;;;;;;;;;;;;;;;;:3;:37::i;35213:658::-;35363:16;;;35377:1;35363:16;;;;;;;;35339:21;;35363:16;;;;;;;;;;-1:-1:-1;35363:16:0;35339:40;;35408:4;35390;35395:1;35390:7;;;;;;-1:-1:-1;;;35390:7:0;;;;;;;;;;;;;;:23;-1:-1:-1;;;;;35390:23:0;;;-1:-1:-1;;;;;35390:23:0;;;;;35434:15;;;;;;;;;-1:-1:-1;;;;;35434:15:0;-1:-1:-1;;;;;35434:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35424:4;35429:1;35424:7;;;;;;-1:-1:-1;;;35424:7:0;;;;;;;;;-1:-1:-1;;;;;35424:32:0;;;:7;;;;;;;;;:32;35501:15;;35469:62;;35486:4;;35501:15;;;;35519:11;35469:8;:62::i;:::-;35570:15;;:240;;-1:-1:-1;;;35570:240:0;;:15;;;;-1:-1:-1;;;;;35570:15:0;;:66;;:240;;35651:11;;35677:1;;35721:4;;35748;;35784:15;;35570:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35828:35;35845:11;35858:4;35828:35;;;;;;;:::i;:::-;;;;;;;;35213:658;;:::o;43587:126::-;43679:26;;-1:-1:-1;;;;;43679:18:0;;;:26;;;;;43698:6;;43679:26;;;;43698:6;43679:18;:26;;;;;;;;;;;;;;;;;;;;;43587:126;;:::o;35879:572::-;36024:16;;;36038:1;36024:16;;;;;;;;36000:21;;36024:16;;;;;;;;;;-1:-1:-1;36024:16:0;36000:40;;36061:15;;;;;;;;;-1:-1:-1;;;;;36061:15:0;-1:-1:-1;;;;;36061:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36051:4;36056:1;36051:7;;;;;;-1:-1:-1;;;36051:7:0;;;;;;;;;;;;;;:32;-1:-1:-1;;;;;36051:32:0;;;-1:-1:-1;;;;;36051:32:0;;;;;36112:4;36094;36099:1;36094:7;;;;;;-1:-1:-1;;;36094:7:0;;;;;;;;;-1:-1:-1;;;;;36094:23:0;;;:7;;;;;;;;;:23;36156:15;;;;;;:66;36230:6;36252:1;36299:4;36318:11;36360:24;:15;36380:3;36360:19;:24::i;:::-;36156:239;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36413:30;36430:6;36438:4;36413:30;;;;;;;:::i;42772:234::-;42818:7;;:12;:34;;;;-1:-1:-1;42834:13:0;;:18;42818:34;42815:46;;;42772:234::o;42815:46::-;42891:7;;;42873:15;:25;42933:13;;;42909:21;:37;-1:-1:-1;42959:11:0;;;;42981:17;42772:234::o;38769:563::-;38872:15;38889:23;38914:12;38928:23;38953:12;38967:18;38989:19;39000:7;38989:10;:19::i;:::-;-1:-1:-1;;;;;39037:15:0;;;;;;:7;:15;;;;;;38871:137;;-1:-1:-1;38871:137:0;;-1:-1:-1;38871:137:0;;-1:-1:-1;38871:137:0;-1:-1:-1;38871:137:0;-1:-1:-1;38871:137:0;-1:-1:-1;39037:28:0;;39057:7;39037:19;:28::i;:::-;-1:-1:-1;;;;;39019:15:0;;;;;;:7;:15;;;;;;;;:46;;;;39094:7;:15;;;;:28;;39114:7;39094:19;:28::i;:::-;-1:-1:-1;;;;;39076:15:0;;;;;;;:7;:15;;;;;;:46;;;;39154:18;;;;;;;:39;;39177:15;39154:22;:39::i;:::-;-1:-1:-1;;;;;39133:18:0;;;;;;:7;:18;;;;;:60;39204:26;39219:10;39204:14;:26::i;:::-;39241:23;39253:4;39259;39241:11;:23::i;:::-;39297:9;-1:-1:-1;;;;;39280:44:0;39289:6;-1:-1:-1;;;;;39280:44:0;;39308:15;39280:44;;;;12206:25:1;;12194:2;12179:18;;12161:76;39280:44:0;;;;;;;;38769:563;;;;;;;;;:::o;38186:575::-;38287:15;38304:23;38329:12;38343:23;38368:12;38382:18;38404:19;38415:7;38404:10;:19::i;:::-;-1:-1:-1;;;;;38452:15:0;;;;;;:7;:15;;;;;;38286:137;;-1:-1:-1;38286:137:0;;-1:-1:-1;38286:137:0;;-1:-1:-1;38286:137:0;-1:-1:-1;38286:137:0;-1:-1:-1;38286:137:0;-1:-1:-1;38452:28:0;;38286:137;38452:19;:28::i;:::-;-1:-1:-1;;;;;38434:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;38512:18;;;;;:7;:18;;;;;:39;;38535:15;38512:22;:39::i;:::-;-1:-1:-1;;;;;38491:18:0;;;;;;:7;:18;;;;;;;;:60;;;;38583:7;:18;;;;:39;;38606:15;38583:22;:39::i;39340:634::-;39443:15;39460:23;39485:12;39499:23;39524:12;39538:18;39560:19;39571:7;39560:10;:19::i;:::-;-1:-1:-1;;;;;39608:15:0;;;;;;:7;:15;;;;;;39442:137;;-1:-1:-1;39442:137:0;;-1:-1:-1;39442:137:0;;-1:-1:-1;39442:137:0;-1:-1:-1;39442:137:0;-1:-1:-1;39442:137:0;-1:-1:-1;39608:28:0;;39628:7;39608:19;:28::i;:::-;-1:-1:-1;;;;;39590:15:0;;;;;;:7;:15;;;;;;;;:46;;;;39665:7;:15;;;;:28;;39685:7;39665:19;:28::i;37676:502::-;37775:15;37792:23;37817:12;37831:23;37856:12;37870:18;37892:19;37903:7;37892:10;:19::i;:::-;-1:-1:-1;;;;;37940:15:0;;;;;;:7;:15;;;;;;37774:137;;-1:-1:-1;37774:137:0;;-1:-1:-1;37774:137:0;;-1:-1:-1;37774:137:0;-1:-1:-1;37774:137:0;-1:-1:-1;37774:137:0;-1:-1:-1;37940:28:0;;37774:137;37940:19;:28::i;42436:154::-;42500:7;42527:55;42566:5;42527:20;42539:7;;42527;:11;;:20;;;;:::i;42598:166::-;42668:7;42695:61;42740:5;42695:26;42707:13;;42695:7;:11;;:26;;;;:::i;3262:166::-;3348:7;3384:12;3376:6;3368:29;;;;-1:-1:-1;;;3368:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3415:5:0;3419:1;3415;:5;:::i;:::-;3408:12;3262:166;-1:-1:-1;;;;3262:166:0:o;42073:355::-;42136:19;42159:10;:8;:10::i;:::-;42136:33;-1:-1:-1;42180:18:0;42201:27;:10;42136:33;42201:14;:27::i;:::-;42280:4;42264:22;;;;:7;:22;;;;;;42180:48;;-1:-1:-1;42264:38:0;;42180:48;42264:26;:38::i;:::-;42255:4;42239:22;;;;:7;:22;;;;;;;;:63;;;;42316:11;:26;;;;;;42313:107;;;42398:4;42382:22;;;;:7;:22;;;;;;:38;;42409:10;42382:26;:38::i;:::-;42373:4;42357:22;;;;:7;:22;;;;;:63;42073:355;;;:::o;39982:147::-;40060:7;;:17;;40072:4;40060:11;:17::i;:::-;40050:7;:27;40101:10;;:20;;40116:4;40101:14;:20::i;:::-;40088:10;:33;-1:-1:-1;;39982:147:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;707:398::-;775:6;783;836:2;824:9;815:7;811:23;807:32;804:2;;;857:6;849;842:22;804:2;901:9;888:23;920:31;945:5;920:31;:::i;:::-;970:5;-1:-1:-1;1027:2:1;1012:18;;999:32;1040:33;999:32;1040:33;:::i;:::-;1092:7;1082:17;;;794:311;;;;;:::o;1110:466::-;1187:6;1195;1203;1256:2;1244:9;1235:7;1231:23;1227:32;1224:2;;;1277:6;1269;1262:22;1224:2;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;-1:-1:-1;1447:2:1;1432:18;;1419:32;1460:33;1419:32;1460:33;:::i;:::-;1214:362;;1512:7;;-1:-1:-1;;;1566:2:1;1551:18;;;;1538:32;;1214:362::o;1581:325::-;1649:6;1657;1710:2;1698:9;1689:7;1685:23;1681:32;1678:2;;;1731:6;1723;1716:22;1678:2;1775:9;1762:23;1794:31;1819:5;1794:31;:::i;:::-;1844:5;1896:2;1881:18;;;;1868:32;;-1:-1:-1;;;1668:238:1:o;1911:190::-;1967:6;2020:2;2008:9;1999:7;1995:23;1991:32;1988:2;;;2041:6;2033;2026:22;1988:2;2069:26;2085:9;2069:26;:::i;2106:190::-;2165:6;2218:2;2206:9;2197:7;2193:23;2189:32;2186:2;;;2239:6;2231;2224:22;2186:2;-1:-1:-1;2267:23:1;;2176:120;-1:-1:-1;2176:120:1:o;2301:258::-;2366:6;2374;2427:2;2415:9;2406:7;2402:23;2398:32;2395:2;;;2448:6;2440;2433:22;2395:2;2489:9;2476:23;2466:33;;2518:35;2549:2;2538:9;2534:18;2518:35;:::i;:::-;2508:45;;2385:174;;;;;:::o;2564:463::-;2617:3;2655:5;2649:12;2682:6;2677:3;2670:19;2708:4;2737:2;2732:3;2728:12;2721:19;;2774:2;2767:5;2763:14;2795:3;2807:195;2821:6;2818:1;2815:13;2807:195;;;2886:13;;-1:-1:-1;;;;;2882:39:1;2870:52;;2942:12;;;;2977:15;;;;2918:1;2836:9;2807:195;;;-1:-1:-1;3018:3:1;;2625:402;-1:-1:-1;;;;;2625:402:1:o;3976:510::-;4247:6;4236:9;4229:25;4290:3;4285:2;4274:9;4270:18;4263:31;4210:4;4311:57;4363:3;4352:9;4348:19;4340:6;4311:57;:::i;:::-;-1:-1:-1;;;;;4404:32:1;;;;4399:2;4384:18;;4377:60;-1:-1:-1;4468:2:1;4453:18;4446:34;4303:65;4219:267;-1:-1:-1;;4219:267:1:o;4491:603::-;4603:4;4632:2;4661;4650:9;4643:21;4693:6;4687:13;4736:6;4731:2;4720:9;4716:18;4709:34;4761:4;4774:140;4788:6;4785:1;4782:13;4774:140;;;4883:14;;;4879:23;;4873:30;4849:17;;;4868:2;4845:26;4838:66;4803:10;;4774:140;;;4932:6;4929:1;4926:13;4923:2;;;5002:4;4997:2;4988:6;4977:9;4973:22;4969:31;4962:45;4923:2;-1:-1:-1;5078:2:1;5057:15;-1:-1:-1;;5053:29:1;5038:45;;;;5085:2;5034:54;;4612:482;-1:-1:-1;;;4612:482:1:o;8596:356::-;8798:2;8780:21;;;8817:18;;;8810:30;8876:34;8871:2;8856:18;;8849:62;8943:2;8928:18;;8770:182::o;12242:332::-;12449:6;12438:9;12431:25;12492:2;12487;12476:9;12472:18;12465:30;12412:4;12512:56;12564:2;12553:9;12549:18;12541:6;12512:56;:::i;12579:582::-;12878:6;12867:9;12860:25;12921:6;12916:2;12905:9;12901:18;12894:34;12964:3;12959:2;12948:9;12944:18;12937:31;12841:4;12985:57;13037:3;13026:9;13022:19;13014:6;12985:57;:::i;:::-;-1:-1:-1;;;;;13078:32:1;;;;13073:2;13058:18;;13051:60;-1:-1:-1;13142:3:1;13127:19;13120:35;12977:65;12850:311;-1:-1:-1;;;12850:311:1:o;13355:128::-;13395:3;13426:1;13422:6;13419:1;13416:13;13413:2;;;13432:18;;:::i;:::-;-1:-1:-1;13468:9:1;;13403:80::o;13488:120::-;13528:1;13554;13544:2;;13559:18;;:::i;:::-;-1:-1:-1;13593:9:1;;13534:74::o;13613:168::-;13653:7;13719:1;13715;13711:6;13707:14;13704:1;13701:21;13696:1;13689:9;13682:17;13678:45;13675:2;;;13726:18;;:::i;:::-;-1:-1:-1;13766:9:1;;13665:116::o;13786:125::-;13826:4;13854:1;13851;13848:8;13845:2;;;13859:18;;:::i;:::-;-1:-1:-1;13896:9:1;;13835:76::o;13916:380::-;13995:1;13991:12;;;;14038;;;14059:2;;14113:4;14105:6;14101:17;14091:27;;14059:2;14166;14158:6;14155:14;14135:18;14132:38;14129:2;;;14212:10;14207:3;14203:20;14200:1;14193:31;14247:4;14244:1;14237:15;14275:4;14272:1;14265:15;14129:2;;13971:325;;;:::o;14301:135::-;14340:3;-1:-1:-1;;14361:17:1;;14358:2;;;14381:18;;:::i;:::-;-1:-1:-1;14428:1:1;14417:13;;14348:88::o;14441:112::-;14473:1;14499;14489:2;;14504:18;;:::i;:::-;-1:-1:-1;14538:9:1;;14479:74::o;14558:127::-;14619:10;14614:3;14610:20;14607:1;14600:31;14650:4;14647:1;14640:15;14674:4;14671:1;14664:15;14690:127;14751:10;14746:3;14742:20;14739:1;14732:31;14782:4;14779:1;14772:15;14806:4;14803:1;14796:15;14822:131;-1:-1:-1;;;;;14897:31:1;;14887:42;;14877:2;;14943:1;14940;14933:12;14877:2;14867:86;:::o

Swarm Source

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