ETH Price: $3,403.02 (+2.02%)

Token

Unseen Crime (CAPTIVITY)
 

Overview

Max Total Supply

1,000,000,000,000 CAPTIVITY

Holders

39

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9,200,000,000 CAPTIVITY

Value
$0.00
0x913f8ecf4d9a0240514c1188d44b149a63119a69
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:
Unseen

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**
 *Verified as Tor Media Locker compliant on 2022-04-11
 *Iterations: 200
 */

// SPDX-License-Identifier: Unlicensed

/*

https://t.me/UnseenCrime
https://unseencri.me/

*/

pragma solidity ^0.8.9;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        return msg.data;
    }
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 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 (uint256);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    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 (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    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(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual 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 _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(
            amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mintTokens(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(
            amount,
            "ERC20: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != -1 || a != MIN_INT256);

        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }

    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}

library SafeMathUint {
    function toInt256Safe(uint256 a) internal pure returns (int256) {
        int256 b = int256(a);
        require(b >= 0);
        return b;
    }
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

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

contract Unseen is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    string public torMediaLockerID;
    uint256 public lockerMediaFrame;
    uint256 public frameInterval;

    bool private swapping;

    address private operationsWallet;
    address private philanthropyWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public tradingActive = false;
    bool public swapEnabled = false;
    bool public limitsInEffect = true;
    bool public enableEarlySellTax = true;

    mapping(address => uint256) private _walletsLastTransferTIMESTAMP;
    mapping(address => uint256) private _walletsFirstBuyTIMESTAMP;

    mapping(address => bool) private _snipers;

    mapping(address => uint256) public _contributorSnapshot;

    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;
    uint256 public buyPhilanthropyFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;
    uint256 public sellPhilanthropyFee;

    uint256 public earlySellLiquidityFee;
    uint256 public earlysellOperationsFee;
    uint256 public earlysellPhilanthropyFee;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;
    uint256 public tokensForPhilanthropy;

    uint256 launchedAt;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event operationsWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event philanthropyWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event AutoNukeLP();

    event ManualNukeLP();

    constructor() ERC20("Unseen Crime", "CAPTIVITY") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _startingFrame = 1;
        uint256 _startingInterval = 2;

        uint256 _buyFeeOperations = 1;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyPhilanthropyFee = 7;

        uint256 _sellOperationsFee = 1;
        uint256 _sellLiquidityFee = 2;
        uint256 _sellPhilanthropyFee = 5;

        uint256 _earlySellLiquidityFee = 2;
        uint256 _earlysellOperationsFee = 1;
        uint256 _earlysellPhilanthropyFee = 9;
        uint256 totalSupply = 1 * 1e12 * 1e18;

        torMediaLockerID = "dw-93b01d7c-a924-4772-b8e6-a9e4fbb6aace";
        lockerMediaFrame = _startingFrame;
        frameInterval = _startingInterval;

        maxTransactionAmount = (totalSupply * 10) / 1000; // 1% max tx
        maxWallet = (totalSupply * 20) / 1000; // 2% max wallet
        swapTokensAtAmount = (totalSupply * 10) / 10000; // 0.1% swap num

        buyOperationsFee = _buyFeeOperations;
        buyLiquidityFee = _buyLiquidityFee;
        buyPhilanthropyFee = _buyPhilanthropyFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyPhilanthropyFee;

        sellOperationsFee = _sellOperationsFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellPhilanthropyFee = _sellPhilanthropyFee;
        sellTotalFees =
            sellOperationsFee +
            sellLiquidityFee +
            sellPhilanthropyFee;

        earlySellLiquidityFee = _earlySellLiquidityFee;
        earlysellOperationsFee = _earlysellOperationsFee;
        earlysellPhilanthropyFee = _earlysellPhilanthropyFee;

        operationsWallet = address(owner()); // operations wallet addr
        philanthropyWallet = address(
            0xbA1bCBfaF844673BaFeD038bC6fB0397eDE466d3
        );

        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(owner(), true);

        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(owner(), true);

        _mintTokens(msg.sender, totalSupply);
    }

    receive() external payable {}

    // enable trading after adding liquidity
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        launchedAt = block.number;
    }

    // remove limits after token is stable
    function removeSwapLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }

    function setEarlySellTax(bool onoff) external onlyOwner {
        enableEarlySellTax = onoff;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        maxTransactionAmount = newNum * (10**18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newNum * (10**18);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function setTorMediaLocker(
        string calldata _uuid,
        uint256 _frameInterval,
        address _philantropyBenefactor
    ) external onlyOwner {
        torMediaLockerID = _uuid;
        lockerMediaFrame = 1;
        frameInterval = _frameInterval;
        philanthropyWallet = _philantropyBenefactor;
        require(buyTotalFees <= 10, "Must keep fees at 10% or less");
    }

    function updateBuyFees(
        uint256 _operationsFee,
        uint256 _liquidityFee,
        uint256 _philanthropyFee
    ) external onlyOwner {
        buyOperationsFee = _operationsFee;
        buyLiquidityFee = _liquidityFee;
        buyPhilanthropyFee = _philanthropyFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyPhilanthropyFee;
        require(buyTotalFees <= 10, "Must keep fees at 10% or less");
    }

    function updateSellFees(
        uint256 _operationsFee,
        uint256 _liquidityFee,
        uint256 _philanthropyFee,
        uint256 _earlySellLiquidityFee,
        uint256 _earlysellOperationsFee,
        uint256 _earlysellPhilanthropyFee
    ) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellPhilanthropyFee = _philanthropyFee;
        earlySellLiquidityFee = _earlySellLiquidityFee;
        earlysellOperationsFee = _earlysellOperationsFee;
        earlysellPhilanthropyFee = _earlysellPhilanthropyFee;
        sellTotalFees =
            sellOperationsFee +
            sellLiquidityFee +
            sellPhilanthropyFee;
        require(sellTotalFees <= 15, "Must keep fees at 15% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function blacklist(address[] memory _address, bool isBlacklisted)
        public
        onlyOwner
    {
        for (uint256 i = 0; i < _address.length; i++) {
            _snipers[_address[i]] = isBlacklisted;
        }
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateOperationsWallet(address newWallet) external onlyOwner {
        emit operationsWalletUpdated(newWallet, operationsWallet);
        operationsWallet = newWallet;
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    event BoughtEarly(address indexed sniper);

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(
            !_snipers[to] && !_snipers[from],
            "You have been blacklisted from transfering tokens"
        );
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniswapV2Router) &&
                        to != address(uniswapV2Pair)
                    ) {
                        require(
                            _walletsLastTransferTIMESTAMP[tx.origin] <
                                block.number,
                            "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                        );
                        _walletsLastTransferTIMESTAMP[tx.origin] = block.number;
                    }
                }

                // wisemen
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                // lost
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        // anti-bot, catch bots on early blocks
        if (
            block.number <= (launchedAt + 3) &&
            to != uniswapV2Pair &&
            to != address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D)
        ) {
            _snipers[to] = true;
        }

        // early sell handler
        bool isBuy = from == uniswapV2Pair;
        if (!isBuy && enableEarlySellTax) {
            if (
                _walletsFirstBuyTIMESTAMP[from] != 0 &&
                (_walletsFirstBuyTIMESTAMP[from] + (24 hours) >=
                    block.timestamp)
            ) {
                sellLiquidityFee = earlySellLiquidityFee;
                sellOperationsFee = earlysellOperationsFee;
                sellPhilanthropyFee = earlysellPhilanthropyFee;
                sellTotalFees =
                    sellOperationsFee +
                    sellLiquidityFee +
                    sellPhilanthropyFee;
            } else {
                sellLiquidityFee = 2;
                sellOperationsFee = 3;
                sellTotalFees =
                    sellOperationsFee +
                    sellLiquidityFee +
                    sellPhilanthropyFee;
            }
        } else {
            if (_walletsFirstBuyTIMESTAMP[to] == 0) {
                _walletsFirstBuyTIMESTAMP[to] = block.timestamp;
            }

            if (!enableEarlySellTax) {
                sellLiquidityFee = 3;
                sellOperationsFee = 6;
                sellPhilanthropyFee = 6;
                sellTotalFees =
                    sellOperationsFee +
                    sellLiquidityFee +
                    sellPhilanthropyFee;
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForPhilanthropy +=
                    (fees * sellPhilanthropyFee) /
                    sellTotalFees;
                tokensForOperations +=
                    (fees * sellOperationsFee) /
                    sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                _contributorSnapshot[to] = lockerMediaFrame;
                lockerMediaFrame += frameInterval;
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForPhilanthropy +=
                    (fees * buyPhilanthropyFee) /
                    buyTotalFees;
                tokensForOperations += (fees * buyOperationsFee) / buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    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),
            block.timestamp
        );
    }

    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
            address(this),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForOperations +
            tokensForPhilanthropy;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForOperations = ethBalance.mul(tokensForOperations).div(
            totalTokensToSwap
        );
        uint256 ethForPhilanthropy = ethBalance.mul(tokensForPhilanthropy).div(
            totalTokensToSwap
        );
        uint256 ethForLiquidity = ethBalance -
            ethForOperations -
            ethForPhilanthropy;

        tokensForLiquidity = 0;
        tokensForOperations = 0;
        tokensForPhilanthropy = 0;

        (success, ) = address(philanthropyWallet).call{
            value: ethForPhilanthropy
        }("");

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

        (success, ) = address(operationsWallet).call{
            value: address(this).balance
        }("");
    }
}

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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"operationsWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"philanthropyWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_contributorSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyPhilanthropyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlySellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlysellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlysellPhilanthropyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"frameInterval","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockerMediaFrame","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"removeSwapLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellPhilanthropyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uuid","type":"string"},{"internalType":"uint256","name":"_frameInterval","type":"uint256"},{"internalType":"address","name":"_philantropyBenefactor","type":"address"}],"name":"setTorMediaLocker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForPhilanthropy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"torMediaLockerID","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_philanthropyFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateOperationsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_philanthropyFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_earlysellOperationsFee","type":"uint256"},{"internalType":"uint256","name":"_earlysellPhilanthropyFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600e805463ffffffff191663010100001790556013805460ff191660011790553480156200003157600080fd5b50604080518082018252600c81526b556e7365656e204372696d6560a01b60208083019182528351808501909452600984526843415054495649545960b81b9084015281519192916200008791600391620007cd565b5080516200009d906004906020840190620007cd565b5050506000620000b2620004eb60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d62000122816001620004ef565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200016857600080fd5b505afa1580156200017d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a3919062000873565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001ec57600080fd5b505afa15801562000201573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000227919062000873565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200027057600080fd5b505af115801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab919062000873565b6001600160a01b031660a0819052620002c6906001620004ef565b60a051620002d690600162000569565b60408051606081019091526027808252600191600291839160009160079184918691600591839185916009916c0c9f2c9cd04674edea400000009162003d5f602083013980516200033091600691602090910190620007cd565b5060078c905560088b90556103e86200034b82600a620008b4565b620003579190620008d6565b600b556103e86200036a826014620008b4565b620003769190620008d6565b600d556127106200038982600a620008b4565b620003959190620008d6565b600c5560158a90556016899055601788905587620003b48a8c620008f9565b620003c09190620008f9565b6014556019879055601a869055601b85905584620003df8789620008f9565b620003eb9190620008f9565b601855601c849055601d839055601e8290556005546001600160a01b0316600980546001600160a01b039290921661010002610100600160a81b0319909216919091179055600a80546001600160a01b03191673ba1bcbfaf844673bafed038bc6fb0397ede466d317905562000463306001620005bd565b6200047261dead6001620005bd565b62000491620004896005546001600160a01b031690565b6001620005bd565b6200049e306001620004ef565b620004ad61dead6001620004ef565b620004cc620004c46005546001600160a01b031690565b6001620004ef565b620004d8338262000667565b5050505050505050505050505062000951565b3390565b6005546001600160a01b031633146200053e5760405162461bcd60e51b8152602060048201819052602482015260008051602062003d8683398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152602460205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260256020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620006085760405162461bcd60e51b8152602060048201819052602482015260008051602062003d86833981519152604482015260640162000535565b6001600160a01b038216600081815260236020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006bf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000535565b620006db816002546200076360201b620018091790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200070e9183906200180962000763821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600080620007728385620008f9565b905083811015620007c65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000535565b9392505050565b828054620007db9062000914565b90600052602060002090601f016020900481019282620007ff57600085556200084a565b82601f106200081a57805160ff19168380011785556200084a565b828001600101855582156200084a579182015b828111156200084a5782518255916020019190600101906200082d565b50620008589291506200085c565b5090565b5b808211156200085857600081556001016200085d565b6000602082840312156200088657600080fd5b81516001600160a01b0381168114620007c657600080fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620008d157620008d16200089e565b500290565b600082620008f457634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156200090f576200090f6200089e565b500190565b600181811c908216806200092957607f821691505b602082108114156200094b57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a0516133a2620009bd600039600081816106060152818161124701528181611c0701528181611f6a0152611ff301526000818161047101528181611bc9015281816129cd01528181612a9501528181612ad101528181612b430152612b9f01526133a26000f3fe6080604052600436106103a65760003560e01c80637571336a116101e7578063c02466681161010d578063e2f45605116100a0578063f2fde38b1161006f578063f2fde38b14610abc578063f637434214610adc578063f8b45b0514610af2578063fb002c9714610b0857600080fd5b8063e2f4560514610a4e578063e8460fe114610a64578063e884f26014610a91578063f11a24d314610aa657600080fd5b8063c997eb8d116100dc578063c997eb8d146109b2578063d257b34f146109d2578063d85ba063146109f2578063dd62ed3e14610a0857600080fd5b8063c024666814610942578063c18bc19514610962578063c876d0b914610982578063c8c8ebe41461099c57600080fd5b8063a265777811610185578063a9059cbb11610154578063a9059cbb146108c2578063b62496f5146108e2578063b722090b14610912578063bbc0c7421461092857600080fd5b8063a26577781461084b578063a34fb6521461086b578063a457c2d714610881578063a4d15b64146108a157600080fd5b80638da5cb5b116101c15780638da5cb5b146107d8578063924de9b7146107f657806395d89b41146108165780639a7a23d61461082b57600080fd5b80637571336a146107835780638095d564146107a35780638a8c523c146107c357600080fd5b80633915f572116102cc578063541a43cf1161026a5780636a486a8e116102395780636a486a8e146107035780636ddd17131461071957806370a0823114610738578063715018a61461076e57600080fd5b8063541a43cf146106ad5780635a139dd4146106c357806365d88c1d146106d957806366ce89f6146106ee57600080fd5b80634a62bb65116102a65780634a62bb65146106285780634e4d7690146106485780634f77f6c01461065e5780634fbee1931461067457600080fd5b80633915f572146105be57806339509351146105d457806349bd5a5e146105f457600080fd5b8063203e727e116103445780632b383f66116103135780632b383f66146105565780632b64dec51461056c57806330d5d18d14610582578063313ce567146105a257600080fd5b8063203e727e146104e057806322d3e2aa1461050057806323b872dd1461052057806329b9ae581461054057600080fd5b806310d5de531161038057806310d5de531461042f5780631694505e1461045f57806318160ddd146104ab5780631a8145bb146104ca57600080fd5b806305dac89a146103b257806306fdde03146103d4578063095ea7b3146103ff57600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103d26103cd366004612d16565b610b1e565b005b3480156103e057600080fd5b506103e9610bda565b6040516103f69190612da1565b60405180910390f35b34801561040b57600080fd5b5061041f61041a366004612df6565b610c6c565b60405190151581526020016103f6565b34801561043b57600080fd5b5061041f61044a366004612e22565b60246020526000908152604090205460ff1681565b34801561046b57600080fd5b506104937f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103f6565b3480156104b757600080fd5b506002545b6040519081526020016103f6565b3480156104d657600080fd5b506104bc60205481565b3480156104ec57600080fd5b506103d26104fb366004612e3f565b610c83565b34801561050c57600080fd5b506103d261051b366004612e58565b610d60565b34801561052c57600080fd5b5061041f61053b366004612e9b565b610e1a565b34801561054c57600080fd5b506104bc601d5481565b34801561056257600080fd5b506104bc601b5481565b34801561057857600080fd5b506104bc601e5481565b34801561058e57600080fd5b506103d261059d366004612e22565b610e83565b3480156105ae57600080fd5b50604051601281526020016103f6565b3480156105ca57600080fd5b506104bc60085481565b3480156105e057600080fd5b5061041f6105ef366004612df6565b610f15565b34801561060057600080fd5b506104937f000000000000000000000000000000000000000000000000000000000000000081565b34801561063457600080fd5b50600e5461041f9062010000900460ff1681565b34801561065457600080fd5b506104bc60075481565b34801561066a57600080fd5b506104bc60195481565b34801561068057600080fd5b5061041f61068f366004612e22565b6001600160a01b031660009081526023602052604090205460ff1690565b3480156106b957600080fd5b506104bc601c5481565b3480156106cf57600080fd5b506104bc60155481565b3480156106e557600080fd5b506103e9610f4b565b3480156106fa57600080fd5b5061041f610fd9565b34801561070f57600080fd5b506104bc60185481565b34801561072557600080fd5b50600e5461041f90610100900460ff1681565b34801561074457600080fd5b506104bc610753366004612e22565b6001600160a01b031660009081526020819052604090205490565b34801561077a57600080fd5b506103d2611018565b34801561078f57600080fd5b506103d261079e366004612eec565b61108c565b3480156107af57600080fd5b506103d26107be366004612f21565b6110e1565b3480156107cf57600080fd5b506103d2611189565b3480156107e457600080fd5b506005546001600160a01b0316610493565b34801561080257600080fd5b506103d2610811366004612f4d565b6111c8565b34801561082257600080fd5b506103e961120c565b34801561083757600080fd5b506103d2610846366004612eec565b61121b565b34801561085757600080fd5b506103d2610866366004612f4d565b6112fb565b34801561087757600080fd5b506104bc60175481565b34801561088d57600080fd5b5061041f61089c366004612df6565b611343565b3480156108ad57600080fd5b50600e5461041f906301000000900460ff1681565b3480156108ce57600080fd5b5061041f6108dd366004612df6565b611392565b3480156108ee57600080fd5b5061041f6108fd366004612e22565b60256020526000908152604090205460ff1681565b34801561091e57600080fd5b506104bc60215481565b34801561093457600080fd5b50600e5461041f9060ff1681565b34801561094e57600080fd5b506103d261095d366004612eec565b61139f565b34801561096e57600080fd5b506103d261097d366004612e3f565b611428565b34801561098e57600080fd5b5060135461041f9060ff1681565b3480156109a857600080fd5b506104bc600b5481565b3480156109be57600080fd5b506103d26109cd366004612f7e565b6114f9565b3480156109de57600080fd5b5061041f6109ed366004612e3f565b61158a565b3480156109fe57600080fd5b506104bc60145481565b348015610a1457600080fd5b506104bc610a23366004613055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a5a57600080fd5b506104bc600c5481565b348015610a7057600080fd5b506104bc610a7f366004612e22565b60126020526000908152604090205481565b348015610a9d57600080fd5b5061041f6116e1565b348015610ab257600080fd5b506104bc60165481565b348015610ac857600080fd5b506103d2610ad7366004612e22565b61171e565b348015610ae857600080fd5b506104bc601a5481565b348015610afe57600080fd5b506104bc600d5481565b348015610b1457600080fd5b506104bc601f5481565b6005546001600160a01b03163314610b515760405162461bcd60e51b8152600401610b489061308e565b60405180910390fd5b610b5d60068585612c5a565b5060016007556008829055600a80546001600160a01b0319166001600160a01b0383161781556014541115610bd45760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610b48565b50505050565b606060038054610be9906130c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610c15906130c3565b8015610c625780601f10610c3757610100808354040283529160200191610c62565b820191906000526020600020905b815481529060010190602001808311610c4557829003601f168201915b5050505050905090565b6000610c7933848461186f565b5060015b92915050565b6005546001600160a01b03163314610cad5760405162461bcd60e51b8152600401610b489061308e565b670de0b6b3a76400006103e8610cc260025490565b610ccd906001613114565b610cd79190613133565b610ce19190613133565b811015610d485760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610b48565b610d5a81670de0b6b3a7640000613114565b600b5550565b6005546001600160a01b03163314610d8a5760405162461bcd60e51b8152600401610b489061308e565b6019869055601a859055601b849055601c839055601d829055601e81905583610db38688613155565b610dbd9190613155565b6018819055600f1015610e125760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c6573730000006044820152606401610b48565b505050505050565b6000610e27848484611994565b610e798433610e7485604051806060016040528060288152602001613320602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906124a0565b61186f565b5060019392505050565b6005546001600160a01b03163314610ead5760405162461bcd60e51b8152600401610b489061308e565b6009546040516001600160a01b036101009092048216918316907fe1bb4a3e2b2b99353f84d73df9e136cfe17627ed07083a649101dfa6bde8459c90600090a3600980546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610c79918590610e749086611809565b60068054610f58906130c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610f84906130c3565b8015610fd15780601f10610fa657610100808354040283529160200191610fd1565b820191906000526020600020905b815481529060010190602001808311610fb457829003601f168201915b505050505081565b6005546000906001600160a01b031633146110065760405162461bcd60e51b8152600401610b489061308e565b50600e805462ff000019169055600190565b6005546001600160a01b031633146110425760405162461bcd60e51b8152600401610b489061308e565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110b65760405162461bcd60e51b8152600401610b489061308e565b6001600160a01b03919091166000908152602460205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461110b5760405162461bcd60e51b8152600401610b489061308e565b601583905560168290556017819055806111258385613155565b61112f9190613155565b6014819055600a10156111845760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610b48565b505050565b6005546001600160a01b031633146111b35760405162461bcd60e51b8152600401610b489061308e565b600e805461ffff191661010117905543602255565b6005546001600160a01b031633146111f25760405162461bcd60e51b8152600401610b489061308e565b600e80549115156101000261ff0019909216919091179055565b606060048054610be9906130c3565b6005546001600160a01b031633146112455760405162461bcd60e51b8152600401610b489061308e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156112ed5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610b48565b6112f782826124da565b5050565b6005546001600160a01b031633146113255760405162461bcd60e51b8152600401610b489061308e565b600e805491151563010000000263ff00000019909216919091179055565b6000610c793384610e7485604051806060016040528060258152602001613348602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906124a0565b6000610c79338484611994565b6005546001600160a01b031633146113c95760405162461bcd60e51b8152600401610b489061308e565b6001600160a01b038216600081815260236020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146114525760405162461bcd60e51b8152600401610b489061308e565b670de0b6b3a76400006103e861146760025490565b611472906005613114565b61147c9190613133565b6114869190613133565b8110156114e15760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610b48565b6114f381670de0b6b3a7640000613114565b600d5550565b6005546001600160a01b031633146115235760405162461bcd60e51b8152600401610b489061308e565b60005b82518110156111845781601160008584815181106115465761154661316d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061158281613183565b915050611526565b6005546000906001600160a01b031633146115b75760405162461bcd60e51b8152600401610b489061308e565b620186a06115c460025490565b6115cf906001613114565b6115d99190613133565b8210156116465760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610b48565b6103e861165260025490565b61165d906005613114565b6116679190613133565b8211156116d35760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610b48565b50600c81905560015b919050565b6005546000906001600160a01b0316331461170e5760405162461bcd60e51b8152600401610b489061308e565b506013805460ff19169055600190565b6005546001600160a01b031633146117485760405162461bcd60e51b8152600401610b489061308e565b6001600160a01b0381166117ad5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b48565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000806118168385613155565b9050838110156118685760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b48565b9392505050565b6001600160a01b0383166118d15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b48565b6001600160a01b0382166119325760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b48565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166119ba5760405162461bcd60e51b8152600401610b489061319e565b6001600160a01b0382166119e05760405162461bcd60e51b8152600401610b48906131e3565b6001600160a01b03821660009081526011602052604090205460ff16158015611a2257506001600160a01b03831660009081526011602052604090205460ff16155b611a885760405162461bcd60e51b815260206004820152603160248201527f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460448201527072616e73666572696e6720746f6b656e7360781b6064820152608401610b48565b80611a99576111848383600061252e565b600e5462010000900460ff1615611f50576005546001600160a01b03848116911614801590611ad657506005546001600160a01b03838116911614155b8015611aea57506001600160a01b03821615155b8015611b0157506001600160a01b03821661dead14155b8015611b10575060095460ff16155b15611f5057600e5460ff16611ba3576001600160a01b03831660009081526023602052604090205460ff1680611b5e57506001600160a01b03821660009081526023602052604090205460ff165b611ba35760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b48565b60135460ff1615611cea576005546001600160a01b03838116911614801590611bfe57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b8015611c3c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15611cea57326000908152600f60205260409020544311611cd75760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b48565b326000908152600f602052604090204390555b6001600160a01b03831660009081526025602052604090205460ff168015611d2b57506001600160a01b03821660009081526024602052604090205460ff16155b15611e0f57600b54811115611da05760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610b48565b600d546001600160a01b038316600090815260208190526040902054611dc69083613155565b1115611e0a5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b48565b611f50565b6001600160a01b03821660009081526025602052604090205460ff168015611e5057506001600160a01b03831660009081526024602052604090205460ff16155b15611ec657600b54811115611e0a5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610b48565b6001600160a01b03821660009081526024602052604090205460ff16611f5057600d546001600160a01b038316600090815260208190526040902054611f0c9083613155565b1115611f505760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b48565b602254611f5e906003613155565b4311158015611f9f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b8015611fc857506001600160a01b038216737a250d5630b4cf539739df2c5dacb4c659f2488d14155b15611ff1576001600160a01b0382166000908152601160205260409020805460ff191660011790555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116908416148015816120375750600e546301000000900460ff165b156120dd576001600160a01b0384166000908152601060205260409020541580159061208957506001600160a01b03841660009081526010602052604090205442906120869062015180613155565b10155b156120c257601c54601a819055601d546019819055601e54601b819055916120b091613155565b6120ba9190613155565b601855612153565b6002601a81905560036019819055601b54916120b091613155565b6001600160a01b038316600090815260106020526040902054612116576001600160a01b03831660009081526010602052604090204290555b600e546301000000900460ff16612153576003601a81905560066019819055601b819055906121459082613155565b61214f9190613155565b6018555b30600090815260208190526040902054600c548110801590819061217e5750600e54610100900460ff165b801561218d575060095460ff16155b80156121b257506001600160a01b03861660009081526025602052604090205460ff16155b80156121d757506001600160a01b03861660009081526023602052604090205460ff16155b80156121fc57506001600160a01b03851660009081526023602052604090205460ff16155b15612221576009805460ff19166001179055612216612637565b6009805460ff191690555b6009546001600160a01b03871660009081526023602052604090205460ff9182161591168061226857506001600160a01b03861660009081526023602052604090205460ff165b15612271575060005b6000811561248b576001600160a01b03871660009081526025602052604090205460ff1680156122a357506000601854115b15612361576122c860646122c26018548961287390919063ffffffff16565b906128f2565b9050601854601a54826122db9190613114565b6122e59190613133565b602060008282546122f69190613155565b9091555050601854601b5461230b9083613114565b6123159190613133565b602160008282546123269190613155565b909155505060185460195461233b9083613114565b6123459190613133565b601f60008282546123569190613155565b9091555061246d9050565b6001600160a01b03881660009081526025602052604090205460ff16801561238b57506000601454115b1561246d57600780546001600160a01b038916600090815260126020526040812082905560085492916123bf908490613155565b90915550506014546123d9906064906122c2908990612873565b9050601454601654826123ec9190613114565b6123f69190613133565b602060008282546124079190613155565b909155505060145460175461241c9083613114565b6124269190613133565b602160008282546124379190613155565b909155505060145460155461244c9083613114565b6124569190613133565b601f60008282546124679190613155565b90915550505b801561247e5761247e88308361252e565b6124888187613226565b95505b61249688888861252e565b5050505050505050565b600081848411156124c45760405162461bcd60e51b8152600401610b489190612da1565b5060006124d18486613226565b95945050505050565b6001600160a01b038216600081815260256020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166125545760405162461bcd60e51b8152600401610b489061319e565b6001600160a01b03821661257a5760405162461bcd60e51b8152600401610b48906131e3565b6125b7816040518060600160405280602681526020016132fa602691396001600160a01b03861660009081526020819052604090205491906124a0565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546125e69082611809565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611987565b3060009081526020819052604081205490506000602154601f5460205461265e9190613155565b6126689190613155565b90506000821580612677575081155b1561268157505050565b600c5461268f906014613114565b8311156126a757600c546126a4906014613114565b92505b6000600283602054866126ba9190613114565b6126c49190613133565b6126ce9190613133565b905060006126dc8583612934565b9050476126e882612976565b60006126f44783612934565b90506000612711876122c2601f548561287390919063ffffffff16565b9050600061272e886122c26021548661287390919063ffffffff16565b905060008161273d8486613226565b6127479190613226565b60006020819055601f8190556021819055600a546040519293506001600160a01b031691849181818185875af1925050503d80600081146127a4576040519150601f19603f3d011682016040523d82523d6000602084013e6127a9565b606091505b509098505086158015906127bd5750600081115b1561280e576127cc8782612b3d565b60208054604080518981529283018490528201527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6009546040516101009091046001600160a01b0316904790600081818185875af1925050503d806000811461285f576040519150601f19603f3d011682016040523d82523d6000602084013e612864565b606091505b50505050505050505050505050565b60008261288257506000610c7d565b600061288e8385613114565b90508261289b8583613133565b146118685760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b48565b600061186883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c2c565b600061186883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124a0565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106129ab576129ab61316d565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612a2457600080fd5b505afa158015612a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5c919061323d565b81600181518110612a6f57612a6f61316d565b60200260200101906001600160a01b031690816001600160a01b031681525050612aba307f00000000000000000000000000000000000000000000000000000000000000008461186f565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612b0f90859060009086903090429060040161325a565b600060405180830381600087803b158015612b2957600080fd5b505af1158015610e12573d6000803e3d6000fd5b612b68307f00000000000000000000000000000000000000000000000000000000000000008461186f565b60405163f305d71960e01b8152306004820181905260248201849052600060448301819052606483015260848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c4016060604051808303818588803b158015612bec57600080fd5b505af1158015612c00573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c2591906132cb565b5050505050565b60008183612c4d5760405162461bcd60e51b8152600401610b489190612da1565b5060006124d18486613133565b828054612c66906130c3565b90600052602060002090601f016020900481019282612c885760008555612cce565b82601f10612ca15782800160ff19823516178555612cce565b82800160010185558215612cce579182015b82811115612cce578235825591602001919060010190612cb3565b50612cda929150612cde565b5090565b5b80821115612cda5760008155600101612cdf565b6001600160a01b0381168114612d0857600080fd5b50565b80356116dc81612cf3565b60008060008060608587031215612d2c57600080fd5b843567ffffffffffffffff80821115612d4457600080fd5b818701915087601f830112612d5857600080fd5b813581811115612d6757600080fd5b886020828501011115612d7957600080fd5b6020928301965094505085013591506040850135612d9681612cf3565b939692955090935050565b600060208083528351808285015260005b81811015612dce57858101830151858201604001528201612db2565b81811115612de0576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612e0957600080fd5b8235612e1481612cf3565b946020939093013593505050565b600060208284031215612e3457600080fd5b813561186881612cf3565b600060208284031215612e5157600080fd5b5035919050565b60008060008060008060c08789031215612e7157600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080600060608486031215612eb057600080fd5b8335612ebb81612cf3565b92506020840135612ecb81612cf3565b929592945050506040919091013590565b803580151581146116dc57600080fd5b60008060408385031215612eff57600080fd5b8235612f0a81612cf3565b9150612f1860208401612edc565b90509250929050565b600080600060608486031215612f3657600080fd5b505081359360208301359350604090920135919050565b600060208284031215612f5f57600080fd5b61186882612edc565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612f9157600080fd5b823567ffffffffffffffff80821115612fa957600080fd5b818501915085601f830112612fbd57600080fd5b8135602082821115612fd157612fd1612f68565b8160051b604051601f19603f83011681018181108682111715612ff657612ff6612f68565b60405292835281830193508481018201928984111561301457600080fd5b948201945b838610156130395761302a86612d0b565b85529482019493820193613019565b96506130489050878201612edc565b9450505050509250929050565b6000806040838503121561306857600080fd5b823561307381612cf3565b9150602083013561308381612cf3565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806130d757607f821691505b602082108114156130f857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561312e5761312e6130fe565b500290565b60008261315057634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115613168576131686130fe565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415613197576131976130fe565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600082821015613238576132386130fe565b500390565b60006020828403121561324f57600080fd5b815161186881612cf3565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132aa5784516001600160a01b031683529383019391830191600101613285565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156132e057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b2e9733ad87ff8c50dd6ae0aa05011f927a240e43c2afeba484e0a6fdb9337e864736f6c6343000809003364772d39336230316437632d613932342d343737322d623865362d6139653466626236616163654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106103a65760003560e01c80637571336a116101e7578063c02466681161010d578063e2f45605116100a0578063f2fde38b1161006f578063f2fde38b14610abc578063f637434214610adc578063f8b45b0514610af2578063fb002c9714610b0857600080fd5b8063e2f4560514610a4e578063e8460fe114610a64578063e884f26014610a91578063f11a24d314610aa657600080fd5b8063c997eb8d116100dc578063c997eb8d146109b2578063d257b34f146109d2578063d85ba063146109f2578063dd62ed3e14610a0857600080fd5b8063c024666814610942578063c18bc19514610962578063c876d0b914610982578063c8c8ebe41461099c57600080fd5b8063a265777811610185578063a9059cbb11610154578063a9059cbb146108c2578063b62496f5146108e2578063b722090b14610912578063bbc0c7421461092857600080fd5b8063a26577781461084b578063a34fb6521461086b578063a457c2d714610881578063a4d15b64146108a157600080fd5b80638da5cb5b116101c15780638da5cb5b146107d8578063924de9b7146107f657806395d89b41146108165780639a7a23d61461082b57600080fd5b80637571336a146107835780638095d564146107a35780638a8c523c146107c357600080fd5b80633915f572116102cc578063541a43cf1161026a5780636a486a8e116102395780636a486a8e146107035780636ddd17131461071957806370a0823114610738578063715018a61461076e57600080fd5b8063541a43cf146106ad5780635a139dd4146106c357806365d88c1d146106d957806366ce89f6146106ee57600080fd5b80634a62bb65116102a65780634a62bb65146106285780634e4d7690146106485780634f77f6c01461065e5780634fbee1931461067457600080fd5b80633915f572146105be57806339509351146105d457806349bd5a5e146105f457600080fd5b8063203e727e116103445780632b383f66116103135780632b383f66146105565780632b64dec51461056c57806330d5d18d14610582578063313ce567146105a257600080fd5b8063203e727e146104e057806322d3e2aa1461050057806323b872dd1461052057806329b9ae581461054057600080fd5b806310d5de531161038057806310d5de531461042f5780631694505e1461045f57806318160ddd146104ab5780631a8145bb146104ca57600080fd5b806305dac89a146103b257806306fdde03146103d4578063095ea7b3146103ff57600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103d26103cd366004612d16565b610b1e565b005b3480156103e057600080fd5b506103e9610bda565b6040516103f69190612da1565b60405180910390f35b34801561040b57600080fd5b5061041f61041a366004612df6565b610c6c565b60405190151581526020016103f6565b34801561043b57600080fd5b5061041f61044a366004612e22565b60246020526000908152604090205460ff1681565b34801561046b57600080fd5b506104937f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016103f6565b3480156104b757600080fd5b506002545b6040519081526020016103f6565b3480156104d657600080fd5b506104bc60205481565b3480156104ec57600080fd5b506103d26104fb366004612e3f565b610c83565b34801561050c57600080fd5b506103d261051b366004612e58565b610d60565b34801561052c57600080fd5b5061041f61053b366004612e9b565b610e1a565b34801561054c57600080fd5b506104bc601d5481565b34801561056257600080fd5b506104bc601b5481565b34801561057857600080fd5b506104bc601e5481565b34801561058e57600080fd5b506103d261059d366004612e22565b610e83565b3480156105ae57600080fd5b50604051601281526020016103f6565b3480156105ca57600080fd5b506104bc60085481565b3480156105e057600080fd5b5061041f6105ef366004612df6565b610f15565b34801561060057600080fd5b506104937f000000000000000000000000459b386ba5cc5b23444332a27f84e15c886d553981565b34801561063457600080fd5b50600e5461041f9062010000900460ff1681565b34801561065457600080fd5b506104bc60075481565b34801561066a57600080fd5b506104bc60195481565b34801561068057600080fd5b5061041f61068f366004612e22565b6001600160a01b031660009081526023602052604090205460ff1690565b3480156106b957600080fd5b506104bc601c5481565b3480156106cf57600080fd5b506104bc60155481565b3480156106e557600080fd5b506103e9610f4b565b3480156106fa57600080fd5b5061041f610fd9565b34801561070f57600080fd5b506104bc60185481565b34801561072557600080fd5b50600e5461041f90610100900460ff1681565b34801561074457600080fd5b506104bc610753366004612e22565b6001600160a01b031660009081526020819052604090205490565b34801561077a57600080fd5b506103d2611018565b34801561078f57600080fd5b506103d261079e366004612eec565b61108c565b3480156107af57600080fd5b506103d26107be366004612f21565b6110e1565b3480156107cf57600080fd5b506103d2611189565b3480156107e457600080fd5b506005546001600160a01b0316610493565b34801561080257600080fd5b506103d2610811366004612f4d565b6111c8565b34801561082257600080fd5b506103e961120c565b34801561083757600080fd5b506103d2610846366004612eec565b61121b565b34801561085757600080fd5b506103d2610866366004612f4d565b6112fb565b34801561087757600080fd5b506104bc60175481565b34801561088d57600080fd5b5061041f61089c366004612df6565b611343565b3480156108ad57600080fd5b50600e5461041f906301000000900460ff1681565b3480156108ce57600080fd5b5061041f6108dd366004612df6565b611392565b3480156108ee57600080fd5b5061041f6108fd366004612e22565b60256020526000908152604090205460ff1681565b34801561091e57600080fd5b506104bc60215481565b34801561093457600080fd5b50600e5461041f9060ff1681565b34801561094e57600080fd5b506103d261095d366004612eec565b61139f565b34801561096e57600080fd5b506103d261097d366004612e3f565b611428565b34801561098e57600080fd5b5060135461041f9060ff1681565b3480156109a857600080fd5b506104bc600b5481565b3480156109be57600080fd5b506103d26109cd366004612f7e565b6114f9565b3480156109de57600080fd5b5061041f6109ed366004612e3f565b61158a565b3480156109fe57600080fd5b506104bc60145481565b348015610a1457600080fd5b506104bc610a23366004613055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a5a57600080fd5b506104bc600c5481565b348015610a7057600080fd5b506104bc610a7f366004612e22565b60126020526000908152604090205481565b348015610a9d57600080fd5b5061041f6116e1565b348015610ab257600080fd5b506104bc60165481565b348015610ac857600080fd5b506103d2610ad7366004612e22565b61171e565b348015610ae857600080fd5b506104bc601a5481565b348015610afe57600080fd5b506104bc600d5481565b348015610b1457600080fd5b506104bc601f5481565b6005546001600160a01b03163314610b515760405162461bcd60e51b8152600401610b489061308e565b60405180910390fd5b610b5d60068585612c5a565b5060016007556008829055600a80546001600160a01b0319166001600160a01b0383161781556014541115610bd45760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610b48565b50505050565b606060038054610be9906130c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610c15906130c3565b8015610c625780601f10610c3757610100808354040283529160200191610c62565b820191906000526020600020905b815481529060010190602001808311610c4557829003601f168201915b5050505050905090565b6000610c7933848461186f565b5060015b92915050565b6005546001600160a01b03163314610cad5760405162461bcd60e51b8152600401610b489061308e565b670de0b6b3a76400006103e8610cc260025490565b610ccd906001613114565b610cd79190613133565b610ce19190613133565b811015610d485760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610b48565b610d5a81670de0b6b3a7640000613114565b600b5550565b6005546001600160a01b03163314610d8a5760405162461bcd60e51b8152600401610b489061308e565b6019869055601a859055601b849055601c839055601d829055601e81905583610db38688613155565b610dbd9190613155565b6018819055600f1015610e125760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c6573730000006044820152606401610b48565b505050505050565b6000610e27848484611994565b610e798433610e7485604051806060016040528060288152602001613320602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906124a0565b61186f565b5060019392505050565b6005546001600160a01b03163314610ead5760405162461bcd60e51b8152600401610b489061308e565b6009546040516001600160a01b036101009092048216918316907fe1bb4a3e2b2b99353f84d73df9e136cfe17627ed07083a649101dfa6bde8459c90600090a3600980546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610c79918590610e749086611809565b60068054610f58906130c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610f84906130c3565b8015610fd15780601f10610fa657610100808354040283529160200191610fd1565b820191906000526020600020905b815481529060010190602001808311610fb457829003601f168201915b505050505081565b6005546000906001600160a01b031633146110065760405162461bcd60e51b8152600401610b489061308e565b50600e805462ff000019169055600190565b6005546001600160a01b031633146110425760405162461bcd60e51b8152600401610b489061308e565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110b65760405162461bcd60e51b8152600401610b489061308e565b6001600160a01b03919091166000908152602460205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461110b5760405162461bcd60e51b8152600401610b489061308e565b601583905560168290556017819055806111258385613155565b61112f9190613155565b6014819055600a10156111845760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610b48565b505050565b6005546001600160a01b031633146111b35760405162461bcd60e51b8152600401610b489061308e565b600e805461ffff191661010117905543602255565b6005546001600160a01b031633146111f25760405162461bcd60e51b8152600401610b489061308e565b600e80549115156101000261ff0019909216919091179055565b606060048054610be9906130c3565b6005546001600160a01b031633146112455760405162461bcd60e51b8152600401610b489061308e565b7f000000000000000000000000459b386ba5cc5b23444332a27f84e15c886d55396001600160a01b0316826001600160a01b031614156112ed5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610b48565b6112f782826124da565b5050565b6005546001600160a01b031633146113255760405162461bcd60e51b8152600401610b489061308e565b600e805491151563010000000263ff00000019909216919091179055565b6000610c793384610e7485604051806060016040528060258152602001613348602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906124a0565b6000610c79338484611994565b6005546001600160a01b031633146113c95760405162461bcd60e51b8152600401610b489061308e565b6001600160a01b038216600081815260236020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146114525760405162461bcd60e51b8152600401610b489061308e565b670de0b6b3a76400006103e861146760025490565b611472906005613114565b61147c9190613133565b6114869190613133565b8110156114e15760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610b48565b6114f381670de0b6b3a7640000613114565b600d5550565b6005546001600160a01b031633146115235760405162461bcd60e51b8152600401610b489061308e565b60005b82518110156111845781601160008584815181106115465761154661316d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061158281613183565b915050611526565b6005546000906001600160a01b031633146115b75760405162461bcd60e51b8152600401610b489061308e565b620186a06115c460025490565b6115cf906001613114565b6115d99190613133565b8210156116465760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610b48565b6103e861165260025490565b61165d906005613114565b6116679190613133565b8211156116d35760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610b48565b50600c81905560015b919050565b6005546000906001600160a01b0316331461170e5760405162461bcd60e51b8152600401610b489061308e565b506013805460ff19169055600190565b6005546001600160a01b031633146117485760405162461bcd60e51b8152600401610b489061308e565b6001600160a01b0381166117ad5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b48565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000806118168385613155565b9050838110156118685760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b48565b9392505050565b6001600160a01b0383166118d15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b48565b6001600160a01b0382166119325760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b48565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166119ba5760405162461bcd60e51b8152600401610b489061319e565b6001600160a01b0382166119e05760405162461bcd60e51b8152600401610b48906131e3565b6001600160a01b03821660009081526011602052604090205460ff16158015611a2257506001600160a01b03831660009081526011602052604090205460ff16155b611a885760405162461bcd60e51b815260206004820152603160248201527f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460448201527072616e73666572696e6720746f6b656e7360781b6064820152608401610b48565b80611a99576111848383600061252e565b600e5462010000900460ff1615611f50576005546001600160a01b03848116911614801590611ad657506005546001600160a01b03838116911614155b8015611aea57506001600160a01b03821615155b8015611b0157506001600160a01b03821661dead14155b8015611b10575060095460ff16155b15611f5057600e5460ff16611ba3576001600160a01b03831660009081526023602052604090205460ff1680611b5e57506001600160a01b03821660009081526023602052604090205460ff165b611ba35760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b48565b60135460ff1615611cea576005546001600160a01b03838116911614801590611bfe57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b8015611c3c57507f000000000000000000000000459b386ba5cc5b23444332a27f84e15c886d55396001600160a01b0316826001600160a01b031614155b15611cea57326000908152600f60205260409020544311611cd75760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b48565b326000908152600f602052604090204390555b6001600160a01b03831660009081526025602052604090205460ff168015611d2b57506001600160a01b03821660009081526024602052604090205460ff16155b15611e0f57600b54811115611da05760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610b48565b600d546001600160a01b038316600090815260208190526040902054611dc69083613155565b1115611e0a5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b48565b611f50565b6001600160a01b03821660009081526025602052604090205460ff168015611e5057506001600160a01b03831660009081526024602052604090205460ff16155b15611ec657600b54811115611e0a5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610b48565b6001600160a01b03821660009081526024602052604090205460ff16611f5057600d546001600160a01b038316600090815260208190526040902054611f0c9083613155565b1115611f505760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b48565b602254611f5e906003613155565b4311158015611f9f57507f000000000000000000000000459b386ba5cc5b23444332a27f84e15c886d55396001600160a01b0316826001600160a01b031614155b8015611fc857506001600160a01b038216737a250d5630b4cf539739df2c5dacb4c659f2488d14155b15611ff1576001600160a01b0382166000908152601160205260409020805460ff191660011790555b7f000000000000000000000000459b386ba5cc5b23444332a27f84e15c886d55396001600160a01b03908116908416148015816120375750600e546301000000900460ff165b156120dd576001600160a01b0384166000908152601060205260409020541580159061208957506001600160a01b03841660009081526010602052604090205442906120869062015180613155565b10155b156120c257601c54601a819055601d546019819055601e54601b819055916120b091613155565b6120ba9190613155565b601855612153565b6002601a81905560036019819055601b54916120b091613155565b6001600160a01b038316600090815260106020526040902054612116576001600160a01b03831660009081526010602052604090204290555b600e546301000000900460ff16612153576003601a81905560066019819055601b819055906121459082613155565b61214f9190613155565b6018555b30600090815260208190526040902054600c548110801590819061217e5750600e54610100900460ff165b801561218d575060095460ff16155b80156121b257506001600160a01b03861660009081526025602052604090205460ff16155b80156121d757506001600160a01b03861660009081526023602052604090205460ff16155b80156121fc57506001600160a01b03851660009081526023602052604090205460ff16155b15612221576009805460ff19166001179055612216612637565b6009805460ff191690555b6009546001600160a01b03871660009081526023602052604090205460ff9182161591168061226857506001600160a01b03861660009081526023602052604090205460ff165b15612271575060005b6000811561248b576001600160a01b03871660009081526025602052604090205460ff1680156122a357506000601854115b15612361576122c860646122c26018548961287390919063ffffffff16565b906128f2565b9050601854601a54826122db9190613114565b6122e59190613133565b602060008282546122f69190613155565b9091555050601854601b5461230b9083613114565b6123159190613133565b602160008282546123269190613155565b909155505060185460195461233b9083613114565b6123459190613133565b601f60008282546123569190613155565b9091555061246d9050565b6001600160a01b03881660009081526025602052604090205460ff16801561238b57506000601454115b1561246d57600780546001600160a01b038916600090815260126020526040812082905560085492916123bf908490613155565b90915550506014546123d9906064906122c2908990612873565b9050601454601654826123ec9190613114565b6123f69190613133565b602060008282546124079190613155565b909155505060145460175461241c9083613114565b6124269190613133565b602160008282546124379190613155565b909155505060145460155461244c9083613114565b6124569190613133565b601f60008282546124679190613155565b90915550505b801561247e5761247e88308361252e565b6124888187613226565b95505b61249688888861252e565b5050505050505050565b600081848411156124c45760405162461bcd60e51b8152600401610b489190612da1565b5060006124d18486613226565b95945050505050565b6001600160a01b038216600081815260256020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166125545760405162461bcd60e51b8152600401610b489061319e565b6001600160a01b03821661257a5760405162461bcd60e51b8152600401610b48906131e3565b6125b7816040518060600160405280602681526020016132fa602691396001600160a01b03861660009081526020819052604090205491906124a0565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546125e69082611809565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611987565b3060009081526020819052604081205490506000602154601f5460205461265e9190613155565b6126689190613155565b90506000821580612677575081155b1561268157505050565b600c5461268f906014613114565b8311156126a757600c546126a4906014613114565b92505b6000600283602054866126ba9190613114565b6126c49190613133565b6126ce9190613133565b905060006126dc8583612934565b9050476126e882612976565b60006126f44783612934565b90506000612711876122c2601f548561287390919063ffffffff16565b9050600061272e886122c26021548661287390919063ffffffff16565b905060008161273d8486613226565b6127479190613226565b60006020819055601f8190556021819055600a546040519293506001600160a01b031691849181818185875af1925050503d80600081146127a4576040519150601f19603f3d011682016040523d82523d6000602084013e6127a9565b606091505b509098505086158015906127bd5750600081115b1561280e576127cc8782612b3d565b60208054604080518981529283018490528201527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6009546040516101009091046001600160a01b0316904790600081818185875af1925050503d806000811461285f576040519150601f19603f3d011682016040523d82523d6000602084013e612864565b606091505b50505050505050505050505050565b60008261288257506000610c7d565b600061288e8385613114565b90508261289b8583613133565b146118685760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b48565b600061186883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c2c565b600061186883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124a0565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106129ab576129ab61316d565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612a2457600080fd5b505afa158015612a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5c919061323d565b81600181518110612a6f57612a6f61316d565b60200260200101906001600160a01b031690816001600160a01b031681525050612aba307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461186f565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612b0f90859060009086903090429060040161325a565b600060405180830381600087803b158015612b2957600080fd5b505af1158015610e12573d6000803e3d6000fd5b612b68307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461186f565b60405163f305d71960e01b8152306004820181905260248201849052600060448301819052606483015260848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c4016060604051808303818588803b158015612bec57600080fd5b505af1158015612c00573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c2591906132cb565b5050505050565b60008183612c4d5760405162461bcd60e51b8152600401610b489190612da1565b5060006124d18486613133565b828054612c66906130c3565b90600052602060002090601f016020900481019282612c885760008555612cce565b82601f10612ca15782800160ff19823516178555612cce565b82800160010185558215612cce579182015b82811115612cce578235825591602001919060010190612cb3565b50612cda929150612cde565b5090565b5b80821115612cda5760008155600101612cdf565b6001600160a01b0381168114612d0857600080fd5b50565b80356116dc81612cf3565b60008060008060608587031215612d2c57600080fd5b843567ffffffffffffffff80821115612d4457600080fd5b818701915087601f830112612d5857600080fd5b813581811115612d6757600080fd5b886020828501011115612d7957600080fd5b6020928301965094505085013591506040850135612d9681612cf3565b939692955090935050565b600060208083528351808285015260005b81811015612dce57858101830151858201604001528201612db2565b81811115612de0576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612e0957600080fd5b8235612e1481612cf3565b946020939093013593505050565b600060208284031215612e3457600080fd5b813561186881612cf3565b600060208284031215612e5157600080fd5b5035919050565b60008060008060008060c08789031215612e7157600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080600060608486031215612eb057600080fd5b8335612ebb81612cf3565b92506020840135612ecb81612cf3565b929592945050506040919091013590565b803580151581146116dc57600080fd5b60008060408385031215612eff57600080fd5b8235612f0a81612cf3565b9150612f1860208401612edc565b90509250929050565b600080600060608486031215612f3657600080fd5b505081359360208301359350604090920135919050565b600060208284031215612f5f57600080fd5b61186882612edc565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612f9157600080fd5b823567ffffffffffffffff80821115612fa957600080fd5b818501915085601f830112612fbd57600080fd5b8135602082821115612fd157612fd1612f68565b8160051b604051601f19603f83011681018181108682111715612ff657612ff6612f68565b60405292835281830193508481018201928984111561301457600080fd5b948201945b838610156130395761302a86612d0b565b85529482019493820193613019565b96506130489050878201612edc565b9450505050509250929050565b6000806040838503121561306857600080fd5b823561307381612cf3565b9150602083013561308381612cf3565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806130d757607f821691505b602082108114156130f857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561312e5761312e6130fe565b500290565b60008261315057634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115613168576131686130fe565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415613197576131976130fe565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600082821015613238576132386130fe565b500390565b60006020828403121561324f57600080fd5b815161186881612cf3565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132aa5784516001600160a01b031683529383019391830191600101613285565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156132e057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b2e9733ad87ff8c50dd6ae0aa05011f927a240e43c2afeba484e0a6fdb9337e864736f6c63430008090033

Deployed Bytecode Sourcemap

19541:20245:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26929:399;;;;;;;;;;-1:-1:-1;26929:399:0;;;;;:::i;:::-;;:::i;:::-;;5490:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6545:210;;;;;;;;;;-1:-1:-1;6545:210:0;;;;;:::i;:::-;;:::i;:::-;;;2182:14:1;;2175:22;2157:41;;2145:2;2130:18;6545:210:0;2017:187:1;21182:63:0;;;;;;;;;;-1:-1:-1;21182:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19617:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2652:32:1;;;2634:51;;2622:2;2607:18;19617:51:0;2461:230:1;5811:108:0;;;;;;;;;;-1:-1:-1;5899:12:0;;5811:108;;;2842:25:1;;;2830:2;2815:18;5811:108:0;2696:177:1;21011:33:0;;;;;;;;;;;;;;;;26011:275;;;;;;;;;;-1:-1:-1;26011:275:0;;;;;:::i;:::-;;:::i;27787:797::-;;;;;;;;;;-1:-1:-1;27787:797:0;;;;;:::i;:::-;;:::i;6763:454::-;;;;;;;;;;-1:-1:-1;6763:454:0;;;;;:::i;:::-;;:::i;20878:37::-;;;;;;;;;;;;;;;;20792:34;;;;;;;;;;;;;;;;20922:39;;;;;;;;;;;;;;;;29532:185;;;;;;;;;;-1:-1:-1;29532:185:0;;;;;:::i;:::-;;:::i;5710:93::-;;;;;;;;;;-1:-1:-1;5710:93:0;;5793:2;4194:36:1;;4182:2;4167:18;5710:93:0;4052:184:1;19797:28:0;;;;;;;;;;;;;;;;7225:300;;;;;;;;;;-1:-1:-1;7225:300:0;;;;;:::i;:::-;;:::i;19675:38::-;;;;;;;;;;;;;;;20139:33;;;;;;;;;;-1:-1:-1;20139:33:0;;;;;;;;;;;19759:31;;;;;;;;;;;;;;;;20715:32;;;;;;;;;;;;;;;;29725:126;;;;;;;;;;-1:-1:-1;29725:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;29815:28:0;29791:4;29815:28;;;:19;:28;;;;;;;;;29725:126;20835:36;;;;;;;;;;;;;;;;20563:31;;;;;;;;;;;;;;;;19722:30;;;;;;;;;;;;;:::i;25006:125::-;;;;;;;;;;;;;:::i;20680:28::-;;;;;;;;;;;;;;;;20101:31;;;;;;;;;;-1:-1:-1;20101:31:0;;;;;;;;;;;5927:177;;;;;;;;;;-1:-1:-1;5927:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;6078:18:0;6046:7;6078:18;;;;;;;;;;;;5927:177;12059:148;;;;;;;;;;;;;:::i;26558:167::-;;;;;;;;;;-1:-1:-1;26558:167:0;;;;;:::i;:::-;;:::i;27336:443::-;;;;;;;;;;-1:-1:-1;27336:443:0;;;;;:::i;:::-;;:::i;24806:148::-;;;;;;;;;;;;;:::i;11845:79::-;;;;;;;;;;-1:-1:-1;11910:6:0;;-1:-1:-1;;;;;11910:6:0;11845:79;;26821:100;;;;;;;;;;-1:-1:-1;26821:100:0;;;;;:::i;:::-;;:::i;5598:104::-;;;;;;;;;;;;;:::i;29024:304::-;;;;;;;;;;-1:-1:-1;29024:304:0;;;;;:::i;:::-;;:::i;25335:101::-;;;;;;;;;;-1:-1:-1;25335:101:0;;;;;:::i;:::-;;:::i;20638:33::-;;;;;;;;;;;;;;;;7533:400;;;;;;;;;;-1:-1:-1;7533:400:0;;;;;:::i;:::-;;:::i;20179:37::-;;;;;;;;;;-1:-1:-1;20179:37:0;;;;;;;;;;;6112:216;;;;;;;;;;-1:-1:-1;6112:216:0;;;;;:::i;:::-;;:::i;21254:57::-;;;;;;;;;;-1:-1:-1;21254:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21051:36;;;;;;;;;;;;;;;;20061:33;;;;;;;;;;-1:-1:-1;20061:33:0;;;;;;;;28592:182;;;;;;;;;;-1:-1:-1;28592:182:0;;;;;:::i;:::-;;:::i;26294:256::-;;;;;;;;;;-1:-1:-1;26294:256:0;;;;;:::i;:::-;;:::i;20481:39::-;;;;;;;;;;-1:-1:-1;20481:39:0;;;;;;;;19946:35;;;;;;;;;;;;;;;;28782:234;;;;;;;;;;-1:-1:-1;28782:234:0;;;;;:::i;:::-;;:::i;25506:497::-;;;;;;;;;;-1:-1:-1;25506:497:0;;;;;:::i;:::-;;:::i;20529:27::-;;;;;;;;;;;;;;;;6336:201;;;;;;;;;;-1:-1:-1;6336:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;6502:18:0;;;6470:7;6502:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6336:201;19988:33;;;;;;;;;;;;;;;;20417:55;;;;;;;;;;-1:-1:-1;20417:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;25192:135;;;;;;;;;;;;;:::i;20601:30::-;;;;;;;;;;;;;;;;12215:281;;;;;;;;;;-1:-1:-1;12215:281:0;;;;;:::i;:::-;;:::i;20754:31::-;;;;;;;;;;;;;;;;20028:24;;;;;;;;;;;;;;;;20970:34;;;;;;;;;;;;;;;;26929:399;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;;;;;;;;;27099:24:::1;:16;27118:5:::0;;27099:24:::1;:::i;:::-;-1:-1:-1::0;27153:1:0::1;27134:16;:20:::0;27165:13:::1;:30:::0;;;27206:18:::1;:43:::0;;-1:-1:-1;;;;;;27206:43:0::1;-1:-1:-1::0;;;;;27206:43:0;::::1;;::::0;;27268:12:::1;::::0;:18:::1;;27260:60;;;::::0;-1:-1:-1;;;27260:60:0;;7724:2:1;27260:60:0::1;::::0;::::1;7706:21:1::0;7763:2;7743:18;;;7736:30;7802:31;7782:18;;;7775:59;7851:18;;27260:60:0::1;7522:353:1::0;27260:60:0::1;26929:399:::0;;;;:::o;5490:100::-;5544:13;5577:5;5570:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5490:100;:::o;6545:210::-;6664:4;6686:39;332:10;6709:7;6718:6;6686:8;:39::i;:::-;-1:-1:-1;6743:4:0;6545:210;;;;;:::o;26011:275::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;26148:4:::1;26140;26119:13;5899:12:::0;;;5811:108;26119:13:::1;:17;::::0;26135:1:::1;26119:17;:::i;:::-;26118:26;;;;:::i;:::-;26117:35;;;;:::i;:::-;26107:6;:45;;26085:142;;;::::0;-1:-1:-1;;;26085:142:0;;8994:2:1;26085:142:0::1;::::0;::::1;8976:21:1::0;9033:2;9013:18;;;9006:30;9072:34;9052:18;;;9045:62;-1:-1:-1;;;9123:18:1;;;9116:45;9178:19;;26085:142:0::1;8792:411:1::0;26085:142:0::1;26261:17;:6:::0;26271::::1;26261:17;:::i;:::-;26238:20;:40:::0;-1:-1:-1;26011:275:0:o;27787:797::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;28075:17:::1;:34:::0;;;28120:16:::1;:32:::0;;;28163:19:::1;:38:::0;;;28212:21:::1;:46:::0;;;28269:22:::1;:48:::0;;;28328:24:::1;:52:::0;;;28185:16;28420:49:::1;28139:13:::0;28095:14;28420:49:::1;:::i;:::-;:84;;;;:::i;:::-;28391:13;:113:::0;;;28540:2:::1;-1:-1:-1::0;28523:19:0::1;28515:61;;;::::0;-1:-1:-1;;;28515:61:0;;9543:2:1;28515:61:0::1;::::0;::::1;9525:21:1::0;9582:2;9562:18;;;9555:30;9621:31;9601:18;;;9594:59;9670:18;;28515:61:0::1;9341:353:1::0;28515:61:0::1;27787:797:::0;;;;;;:::o;6763:454::-;6903:4;6920:36;6930:6;6938:9;6949:6;6920:9;:36::i;:::-;6967:220;6990:6;332:10;7038:138;7094:6;7038:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7038:19:0;;;;;;:11;:19;;;;;;;;332:10;7038:33;;;;;;;;;;:37;:138::i;:::-;6967:8;:220::i;:::-;-1:-1:-1;7205:4:0;6763:454;;;;;:::o;29532:185::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;29653:16:::1;::::0;29618:52:::1;::::0;-1:-1:-1;;;;;29653:16:0::1;::::0;;::::1;::::0;::::1;::::0;29618:52;::::1;::::0;::::1;::::0;;;::::1;29681:16;:28:::0;;-1:-1:-1;;;;;29681:28:0;;::::1;;;-1:-1:-1::0;;;;;;29681:28:0;;::::1;::::0;;;::::1;::::0;;29532:185::o;7225:300::-;332:10;7340:4;7434:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7434:34:0;;;;;;;;;;7340:4;;7362:133;;7412:7;;7434:50;;7473:10;7434:38;:50::i;19722:30::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25006:125::-;11972:6;;25062:4;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;-1:-1:-1;25079:14:0::1;:22:::0;;-1:-1:-1;;25079:22:0::1;::::0;;;25006:125;:::o;12059:148::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;12150:6:::1;::::0;12129:40:::1;::::0;12166:1:::1;::::0;-1:-1:-1;;;;;12150:6:0::1;::::0;12129:40:::1;::::0;12166:1;;12129:40:::1;12180:6;:19:::0;;-1:-1:-1;;;;;;12180:19:0::1;::::0;;12059:148::o;26558:167::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26671:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;26671:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26558:167::o;27336:443::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;27496:16:::1;:33:::0;;;27540:15:::1;:31:::0;;;27582:18:::1;:37:::0;;;27603:16;27645:34:::1;27558:13:::0;27515:14;27645:34:::1;:::i;:::-;:55;;;;:::i;:::-;27630:12;:70:::0;;;27735:2:::1;-1:-1:-1::0;27719:18:0::1;27711:60;;;::::0;-1:-1:-1;;;27711:60:0;;7724:2:1;27711:60:0::1;::::0;::::1;7706:21:1::0;7763:2;7743:18;;;7736:30;7802:31;7782:18;;;7775:59;7851:18;;27711:60:0::1;7522:353:1::0;27711:60:0::1;27336:443:::0;;;:::o;24806:148::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;24861:13:::1;:20:::0;;-1:-1:-1;;24892:18:0;;;;;24934:12:::1;24921:10;:25:::0;24806:148::o;26821:100::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;26892:11:::1;:21:::0;;;::::1;;;;-1:-1:-1::0;;26892:21:0;;::::1;::::0;;;::::1;::::0;;26821:100::o;5598:104::-;5654:13;5687:7;5680:14;;;;;:::i;29024:304::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;29168:13:::1;-1:-1:-1::0;;;;;29160:21:0::1;:4;-1:-1:-1::0;;;;;29160:21:0::1;;;29138:128;;;::::0;-1:-1:-1;;;29138:128:0;;9901:2:1;29138:128:0::1;::::0;::::1;9883:21:1::0;9940:2;9920:18;;;9913:30;9979:34;9959:18;;;9952:62;10050:27;10030:18;;;10023:55;10095:19;;29138:128:0::1;9699:421:1::0;29138:128:0::1;29279:41;29308:4;29314:5;29279:28;:41::i;:::-;29024:304:::0;;:::o;25335:101::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;25402:18:::1;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;25402:26:0;;::::1;::::0;;;::::1;::::0;;25335:101::o;7533:400::-;7653:4;7675:228;332:10;7725:7;7747:145;7804:15;7747:145;;;;;;;;;;;;;;;;;332:10;7747:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7747:34:0;;;;;;;;;;;;:38;:145::i;6112:216::-;6234:4;6256:42;332:10;6280:9;6291:6;6256:9;:42::i;28592:182::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28677:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;28677:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;28732:34;;2157:41:1;;;28732:34:0::1;::::0;2130:18:1;28732:34:0::1;;;;;;;28592:182:::0;;:::o;26294:256::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;26434:4:::1;26426;26405:13;5899:12:::0;;;5811:108;26405:13:::1;:17;::::0;26421:1:::1;26405:17;:::i;:::-;26404:26;;;;:::i;:::-;26403:35;;;;:::i;:::-;26393:6;:45;;26371:131;;;::::0;-1:-1:-1;;;26371:131:0;;10327:2:1;26371:131:0::1;::::0;::::1;10309:21:1::0;10366:2;10346:18;;;10339:30;10405:34;10385:18;;;10378:62;-1:-1:-1;;;10456:18:1;;;10449:34;10500:19;;26371:131:0::1;10125:400:1::0;26371:131:0::1;26525:17;:6:::0;26535::::1;26525:17;:::i;:::-;26513:9;:29:::0;-1:-1:-1;26294:256:0:o;28782:234::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;28904:9:::1;28899:110;28923:8;:15;28919:1;:19;28899:110;;;28984:13;28960:8;:21;28969:8;28978:1;28969:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;28960:21:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;28960:21:0;:37;;-1:-1:-1;;28960:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28940:3;::::1;::::0;::::1;:::i;:::-;;;;28899:110;;25506:497:::0;11972:6;;25614:4;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;25693:6:::1;25672:13;5899:12:::0;;;5811:108;25672:13:::1;:17;::::0;25688:1:::1;25672:17;:::i;:::-;25671:28;;;;:::i;:::-;25658:9;:41;;25636:144;;;::::0;-1:-1:-1;;;25636:144:0;;11004:2:1;25636:144:0::1;::::0;::::1;10986:21:1::0;11043:2;11023:18;;;11016:30;11082:34;11062:18;;;11055:62;-1:-1:-1;;;11133:18:1;;;11126:51;11194:19;;25636:144:0::1;10802:417:1::0;25636:144:0::1;25848:4;25827:13;5899:12:::0;;;5811:108;25827:13:::1;:17;::::0;25843:1:::1;25827:17;:::i;:::-;25826:26;;;;:::i;:::-;25813:9;:39;;25791:141;;;::::0;-1:-1:-1;;;25791:141:0;;11426:2:1;25791:141:0::1;::::0;::::1;11408:21:1::0;11465:2;11445:18;;;11438:30;11504:34;11484:18;;;11477:62;-1:-1:-1;;;11555:18:1;;;11548:50;11615:19;;25791:141:0::1;11224:416:1::0;25791:141:0::1;-1:-1:-1::0;25943:18:0::1;:30:::0;;;25991:4:::1;12042:1;25506:497:::0;;;:::o;25192:135::-;11972:6;;25252:4;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;-1:-1:-1;25269:20:0::1;:28:::0;;-1:-1:-1;;25269:28:0::1;::::0;;;25192:135;:::o;12215:281::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12318:22:0;::::1;12296:110;;;::::0;-1:-1:-1;;;12296:110:0;;11847:2:1;12296:110:0::1;::::0;::::1;11829:21:1::0;11886:2;11866:18;;;11859:30;11925:34;11905:18;;;11898:62;-1:-1:-1;;;11976:18:1;;;11969:36;12022:19;;12296:110:0::1;11645:402:1::0;12296:110:0::1;12443:6;::::0;12422:38:::1;::::0;-1:-1:-1;;;;;12422:38:0;;::::1;::::0;12443:6:::1;::::0;12422:38:::1;::::0;12443:6:::1;::::0;12422:38:::1;12471:6;:17:::0;;-1:-1:-1;;;;;;12471:17:0::1;-1:-1:-1::0;;;;;12471:17:0;;;::::1;::::0;;;::::1;::::0;;12215:281::o;9958:181::-;10016:7;;10048:5;10052:1;10048;:5;:::i;:::-;10036:17;;10077:1;10072;:6;;10064:46;;;;-1:-1:-1;;;10064:46:0;;12254:2:1;10064:46:0;;;12236:21:1;12293:2;12273:18;;;12266:30;12332:29;12312:18;;;12305:57;12379:18;;10064:46:0;12052:351:1;10064:46:0;10130:1;9958:181;-1:-1:-1;;;9958:181:0:o;9414:380::-;-1:-1:-1;;;;;9550:19:0;;9542:68;;;;-1:-1:-1;;;9542:68:0;;12610:2:1;9542:68:0;;;12592:21:1;12649:2;12629:18;;;12622:30;12688:34;12668:18;;;12661:62;-1:-1:-1;;;12739:18:1;;;12732:34;12783:19;;9542:68:0;12408:400:1;9542:68:0;-1:-1:-1;;;;;9629:21:0;;9621:68;;;;-1:-1:-1;;;9621:68:0;;13015:2:1;9621:68:0;;;12997:21:1;13054:2;13034:18;;;13027:30;13093:34;13073:18;;;13066:62;-1:-1:-1;;;13144:18:1;;;13137:32;13186:19;;9621:68:0;12813:398:1;9621:68:0;-1:-1:-1;;;;;9702:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9754:32;;2842:25:1;;;9754:32:0;;2815:18:1;9754:32:0;;;;;;;;9414:380;;;:::o;29909:6845::-;-1:-1:-1;;;;;30041:18:0;;30033:68;;;;-1:-1:-1;;;30033:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30120:16:0;;30112:64;;;;-1:-1:-1;;;30112:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30210:12:0;;;;;;:8;:12;;;;;;;;30209:13;:32;;;;-1:-1:-1;;;;;;30227:14:0;;;;;;:8;:14;;;;;;;;30226:15;30209:32;30187:131;;;;-1:-1:-1;;;30187:131:0;;14228:2:1;30187:131:0;;;14210:21:1;14267:2;14247:18;;;14240:30;14306:34;14286:18;;;14279:62;-1:-1:-1;;;14357:18:1;;;14350:47;14414:19;;30187:131:0;14026:413:1;30187:131:0;30333:11;30329:93;;30361:28;30377:4;30383:2;30387:1;30361:15;:28::i;30329:93::-;30438:14;;;;;;;30434:2485;;;11910:6;;-1:-1:-1;;;;;30491:15:0;;;11910:6;;30491:15;;;;:49;;-1:-1:-1;11910:6:0;;-1:-1:-1;;;;;30527:13:0;;;11910:6;;30527:13;;30491:49;:86;;;;-1:-1:-1;;;;;;30561:16:0;;;;30491:86;:128;;;;-1:-1:-1;;;;;;30598:21:0;;30612:6;30598:21;;30491:128;:158;;;;-1:-1:-1;30641:8:0;;;;30640:9;30491:158;30469:2439;;;30689:13;;;;30684:223;;-1:-1:-1;;;;;30761:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;30790:23:0;;;;;;:19;:23;;;;;;;;30761:52;30727:160;;;;-1:-1:-1;;;30727:160:0;;14646:2:1;30727:160:0;;;14628:21:1;14685:2;14665:18;;;14658:30;-1:-1:-1;;;14704:18:1;;;14697:52;14766:18;;30727:160:0;14444:346:1;30727:160:0;31063:20;;;;31059:643;;;11910:6;;-1:-1:-1;;;;;31138:13:0;;;11910:6;;31138:13;;;;:72;;;31194:15;-1:-1:-1;;;;;31180:30:0;:2;-1:-1:-1;;;;;31180:30:0;;;31138:72;:129;;;;;31253:13;-1:-1:-1;;;;;31239:28:0;:2;-1:-1:-1;;;;;31239:28:0;;;31138:129;31108:575;;;31386:9;31356:40;;;;:29;:40;;;;;;31432:12;-1:-1:-1;31318:259:0;;;;-1:-1:-1;;;31318:259:0;;14997:2:1;31318:259:0;;;14979:21:1;15036:2;15016:18;;;15009:30;15075:34;15055:18;;;15048:62;15146:34;15126:18;;;15119:62;-1:-1:-1;;;15197:19:1;;;15190:40;15247:19;;31318:259:0;14795:477:1;31318:259:0;31634:9;31604:40;;;;:29;:40;;;;;31647:12;31604:55;;31108:575;-1:-1:-1;;;;;31776:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;31833:35:0;;;;;;:31;:35;;;;;;;;31832:36;31776:92;31750:1143;;;31955:20;;31945:6;:30;;31911:169;;;;-1:-1:-1;;;31911:169:0;;15479:2:1;31911:169:0;;;15461:21:1;15518:2;15498:18;;;15491:30;15557:34;15537:18;;;15530:62;-1:-1:-1;;;15608:18:1;;;15601:51;15669:19;;31911:169:0;15277:417:1;31911:169:0;32163:9;;-1:-1:-1;;;;;6078:18:0;;6046:7;6078:18;;;;;;;;;;;32137:22;;:6;:22;:::i;:::-;:35;;32103:140;;;;-1:-1:-1;;;32103:140:0;;15901:2:1;32103:140:0;;;15883:21:1;15940:2;15920:18;;;15913:30;-1:-1:-1;;;15959:18:1;;;15952:49;16018:18;;32103:140:0;15699:343:1;32103:140:0;31750:1143;;;-1:-1:-1;;;;;32337:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;32392:37:0;;;;;;:31;:37;;;;;;;;32391:38;32337:92;32311:582;;;32516:20;;32506:6;:30;;32472:170;;;;-1:-1:-1;;;32472:170:0;;16249:2:1;32472:170:0;;;16231:21:1;16288:2;16268:18;;;16261:30;16327:34;16307:18;;;16300:62;-1:-1:-1;;;16378:18:1;;;16371:52;16440:19;;32472:170:0;16047:418:1;32311:582:0;-1:-1:-1;;;;;32673:35:0;;;;;;:31;:35;;;;;;;;32668:225;;32793:9;;-1:-1:-1;;;;;6078:18:0;;6046:7;6078:18;;;;;;;;;;;32767:22;;:6;:22;:::i;:::-;:35;;32733:140;;;;-1:-1:-1;;;32733:140:0;;15901:2:1;32733:140:0;;;15883:21:1;15940:2;15920:18;;;15913:30;-1:-1:-1;;;15959:18:1;;;15952:49;16018:18;;32733:140:0;15699:343:1;32733:140:0;33015:10;;:14;;33028:1;33015:14;:::i;:::-;32998:12;:32;;:68;;;;;33053:13;-1:-1:-1;;;;;33047:19:0;:2;-1:-1:-1;;;;;33047:19:0;;;32998:68;:142;;;;-1:-1:-1;;;;;;33083:57:0;;33097:42;33083:57;;32998:142;32980:218;;;-1:-1:-1;;;;;33167:12:0;;;;;;:8;:12;;;;;:19;;-1:-1:-1;;33167:19:0;33182:4;33167:19;;;32980:218;33262:13;-1:-1:-1;;;;;33254:21:0;;;;;;;33290:6;;33254:21;33290:28;;-1:-1:-1;33300:18:0;;;;;;;33290:28;33286:1343;;;-1:-1:-1;;;;;33357:31:0;;;;;;:25;:31;;;;;;:36;;;;:143;;-1:-1:-1;;;;;;33415:31:0;;;;;;:25;:31;;;;;;33484:15;;33415:44;;33450:8;33415:44;:::i;:::-;:84;;33357:143;33335:795;;;33554:21;;33535:16;:40;;;33614:22;;33594:17;:42;;;33677:24;;33655:19;:46;;;33677:24;33757:57;;;:::i;:::-;:100;;;;:::i;:::-;33720:13;:137;33286:1343;;33335:795;33917:1;33898:16;:20;;;33957:1;33937:17;:21;;;34095:19;;;34014:57;;;:::i;33286:1343::-;-1:-1:-1;;;;;34166:29:0;;;;;;:25;:29;;;;;;34162:122;;-1:-1:-1;;;;;34221:29:0;;;;;;:25;:29;;;;;34253:15;34221:47;;34162:122;34305:18;;;;;;;34300:318;;34363:1;34344:16;:20;;;34403:1;34383:17;:21;;;34423:19;:23;;;34403:1;34502:57;;34403:1;34502:57;:::i;:::-;:100;;;;:::i;:::-;34465:13;:137;34300:318;34690:4;34641:28;6078:18;;;;;;;;;;;34748;;34724:42;;;;;;;34797:35;;-1:-1:-1;34821:11:0;;;;;;;34797:35;:61;;;;-1:-1:-1;34850:8:0;;;;34849:9;34797:61;:110;;;;-1:-1:-1;;;;;;34876:31:0;;;;;;:25;:31;;;;;;;;34875:32;34797:110;:153;;;;-1:-1:-1;;;;;;34925:25:0;;;;;;:19;:25;;;;;;;;34924:26;34797:153;:194;;;;-1:-1:-1;;;;;;34968:23:0;;;;;;:19;:23;;;;;;;;34967:24;34797:194;34779:326;;;35018:8;:15;;-1:-1:-1;;35018:15:0;35029:4;35018:15;;;35050:10;:8;:10::i;:::-;35077:8;:16;;-1:-1:-1;;35077:16:0;;;34779:326;35133:8;;-1:-1:-1;;;;;35243:25:0;;35117:12;35243:25;;;:19;:25;;;;;;35133:8;;;;35132:9;;35243:25;;:52;;-1:-1:-1;;;;;;35272:23:0;;;;;;:19;:23;;;;;;;;35243:52;35239:100;;;-1:-1:-1;35322:5:0;35239:100;35351:12;35456:7;35452:1249;;;-1:-1:-1;;;;;35508:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;35557:1;35541:13;;:17;35508:50;35504:1048;;;35586:34;35616:3;35586:25;35597:13;;35586:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;35579:41;;35689:13;;35669:16;;35662:4;:23;;;;:::i;:::-;35661:41;;;;:::i;:::-;35639:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;35819:13:0;;35775:19;;35768:26;;:4;:26;:::i;:::-;35767:65;;;;:::i;:::-;35721:21;;:111;;;;;;;:::i;:::-;;;;-1:-1:-1;;35945:13:0;;35903:17;;35896:24;;:4;:24;:::i;:::-;35895:63;;;;:::i;:::-;35851:19;;:107;;;;;;;:::i;:::-;;;;-1:-1:-1;35504:1048:0;;-1:-1:-1;35504:1048:0;;-1:-1:-1;;;;;36020:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;36070:1;36055:12;;:16;36020:51;36016:536;;;36119:16;;;-1:-1:-1;;;;;36092:24:0;;;;;;:20;:24;;;;;:43;;;36174:13;;;36119:16;36154:33;;36174:13;;36154:33;:::i;:::-;;;;-1:-1:-1;;36224:12:0;;36213:33;;36242:3;;36213:24;;:6;;:10;:24::i;:33::-;36206:40;;36314:12;;36295:15;;36288:4;:22;;;;:::i;:::-;36287:39;;;;:::i;:::-;36265:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;36442:12:0;;36399:18;;36392:25;;:4;:25;:::i;:::-;36391:63;;;;:::i;:::-;36345:21;;:109;;;;;;;:::i;:::-;;;;-1:-1:-1;;36524:12:0;;36504:16;;36497:23;;:4;:23;:::i;:::-;36496:40;;;;:::i;:::-;36473:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;36016:536:0;36572:8;;36568:91;;36601:42;36617:4;36631;36638;36601:15;:42::i;:::-;36675:14;36685:4;36675:14;;:::i;:::-;;;35452:1249;36713:33;36729:4;36735:2;36739:6;36713:15;:33::i;:::-;30022:6732;;;;;29909:6845;;;:::o;10291:226::-;10411:7;10447:12;10439:6;;;;10431:29;;;;-1:-1:-1;;;10431:29:0;;;;;;;;:::i;:::-;-1:-1:-1;10471:9:0;10483:5;10487:1;10483;:5;:::i;:::-;10471:17;10291:226;-1:-1:-1;;;;;10291:226:0:o;29336:188::-;-1:-1:-1;;;;;29419:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;29419:39:0;;;;;;;;;;29476:40;;29419:39;;:31;29476:40;;;29336:188;;:::o;7941:610::-;-1:-1:-1;;;;;8081:20:0;;8073:70;;;;-1:-1:-1;;;8073:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8162:23:0;;8154:71;;;;-1:-1:-1;;;8154:71:0;;;;;;;:::i;:::-;8318:108;8354:6;8318:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8318:17:0;;:9;:17;;;;;;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;8298:17:0;;;:9;:17;;;;;;;;;;;:128;;;;8460:20;;;;;;;:32;;8485:6;8460:24;:32::i;:::-;-1:-1:-1;;;;;8437:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;8508:35;2842:25:1;;;8437:20:0;;8508:35;;;;;;2815:18:1;8508:35:0;2696:177:1;37886:1897:0;37969:4;37925:23;6078:18;;;;;;;;;;;37925:50;;37986:25;38083:21;;38048:19;;38014:18;;:53;;;;:::i;:::-;:90;;;;:::i;:::-;37986:118;-1:-1:-1;38115:12:0;38144:20;;;:46;;-1:-1:-1;38168:22:0;;38144:46;38140:85;;;38207:7;;;37886:1897::o;38140:85::-;38259:18;;:23;;38280:2;38259:23;:::i;:::-;38241:15;:41;38237:115;;;38317:18;;:23;;38338:2;38317:23;:::i;:::-;38299:41;;38237:115;38413:23;38526:1;38493:17;38458:18;;38440:15;:36;;;;:::i;:::-;38439:71;;;;:::i;:::-;:88;;;;:::i;:::-;38413:114;-1:-1:-1;38538:26:0;38567:36;:15;38413:114;38567:19;:36::i;:::-;38538:65;-1:-1:-1;38644:21:0;38678:36;38538:65;38678:16;:36::i;:::-;38727:18;38748:44;:21;38774:17;38748:25;:44::i;:::-;38727:65;;38805:24;38832:82;38886:17;38832:35;38847:19;;38832:10;:14;;:35;;;;:::i;:82::-;38805:109;;38925:26;38954:84;39010:17;38954:37;38969:21;;38954:10;:14;;:37;;;;:::i;:84::-;38925:113;-1:-1:-1;39049:23:0;38925:113;39075:42;39101:16;39075:10;:42;:::i;:::-;:76;;;;:::i;:::-;39185:1;39164:18;:22;;;39197:19;:23;;;39231:21;:25;;;39291:18;;39283:87;;39049:102;;-1:-1:-1;;;;;;39291:18:0;;39337;;39283:87;39185:1;39283:87;39337:18;39291;39283:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39269:101:0;;-1:-1:-1;;39387:19:0;;;;;:42;;;39428:1;39410:15;:19;39387:42;39383:278;;;39446:46;39459:15;39476;39446:12;:46::i;:::-;39616:18;;;39512:137;;;17012:25:1;;;17053:18;;;17046:34;;;17096:18;;17089:34;39512:137:0;;17000:2:1;16985:18;39512:137:0;;;;;;;39383:278;39695:16;;39687:88;;39695:16;;;;-1:-1:-1;;;;;39695:16:0;;39739:21;;39687:88;;;;39739:21;39695:16;39687:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;37886:1897:0:o;10525:250::-;10583:7;10607:6;10603:47;;-1:-1:-1;10637:1:0;10630:8;;10603:47;10662:9;10674:5;10678:1;10674;:5;:::i;:::-;10662:17;-1:-1:-1;10707:1:0;10698:5;10702:1;10662:17;10698:5;:::i;:::-;:10;10690:56;;;;-1:-1:-1;;;10690:56:0;;17336:2:1;10690:56:0;;;17318:21:1;17375:2;17355:18;;;17348:30;17414:34;17394:18;;;17387:62;-1:-1:-1;;;17465:18:1;;;17458:31;17506:19;;10690:56:0;17134:397:1;10783:132:0;10841:7;10868:39;10872:1;10875;10868:39;;;;;;;;;;;;;;;;;:3;:39::i;10147:136::-;10205:7;10232:43;10236:1;10239;10232:43;;;;;;;;;;;;;;;;;:3;:43::i;36762:589::-;36912:16;;;36926:1;36912:16;;;;;;;;36888:21;;36912:16;;;;;;;;;;-1:-1:-1;36912:16:0;36888:40;;36957:4;36939;36944:1;36939:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;36939:23:0;;;-1:-1:-1;;;;;36939:23:0;;;;;36983:15;-1:-1:-1;;;;;36983:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36973:4;36978:1;36973:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;36973:32:0;;;-1:-1:-1;;;;;36973:32:0;;;;;37018:62;37035:4;37050:15;37068:11;37018:8;:62::i;:::-;37119:224;;-1:-1:-1;;;37119:224:0;;-1:-1:-1;;;;;37119:15:0;:66;;;;:224;;37200:11;;37226:1;;37270:4;;37297;;37317:15;;37119:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37359:519;37507:62;37524:4;37539:15;37557:11;37507:8;:62::i;:::-;37612:258;;-1:-1:-1;;;37612:258:0;;37684:4;37612:258;;;19118:34:1;;;19168:18;;;19161:34;;;37730:1:0;19211:18:1;;;19204:34;;;19254:18;;;19247:34;19297:19;;;19290:44;37844:15:0;19350:19:1;;;19343:35;37612:15:0;-1:-1:-1;;;;;37612:31:0;;;;37651:9;;19052:19:1;;37612:258:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;37359:519;;:::o;10923:225::-;11043:7;11078:12;11071:5;11063:28;;;;-1:-1:-1;;;11063:28:0;;;;;;;;:::i;:::-;-1:-1:-1;11102:9:0;11114:5;11118:1;11114;:5;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:1;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:134::-;218:20;;247:31;218:20;247:31;:::i;289:801::-;378:6;386;394;402;455:2;443:9;434:7;430:23;426:32;423:52;;;471:1;468;461:12;423:52;511:9;498:23;540:18;581:2;573:6;570:14;567:34;;;597:1;594;587:12;567:34;635:6;624:9;620:22;610:32;;680:7;673:4;669:2;665:13;661:27;651:55;;702:1;699;692:12;651:55;742:2;729:16;768:2;760:6;757:14;754:34;;;784:1;781;774:12;754:34;831:7;824:4;815:6;811:2;807:15;803:26;800:39;797:59;;;852:1;849;842:12;797:59;883:4;875:13;;;;-1:-1:-1;907:6:1;-1:-1:-1;;945:20:1;;932:34;;-1:-1:-1;1016:2:1;1001:18;;988:32;1029:31;988:32;1029:31;:::i;:::-;289:801;;;;-1:-1:-1;289:801:1;;-1:-1:-1;;289:801:1:o;1095:597::-;1207:4;1236:2;1265;1254:9;1247:21;1297:6;1291:13;1340:6;1335:2;1324:9;1320:18;1313:34;1365:1;1375:140;1389:6;1386:1;1383:13;1375:140;;;1484:14;;;1480:23;;1474:30;1450:17;;;1469:2;1446:26;1439:66;1404:10;;1375:140;;;1533:6;1530:1;1527:13;1524:91;;;1603:1;1598:2;1589:6;1578:9;1574:22;1570:31;1563:42;1524:91;-1:-1:-1;1676:2:1;1655:15;-1:-1:-1;;1651:29:1;1636:45;;;;1683:2;1632:54;;1095:597;-1:-1:-1;;;1095:597:1:o;1697:315::-;1765:6;1773;1826:2;1814:9;1805:7;1801:23;1797:32;1794:52;;;1842:1;1839;1832:12;1794:52;1881:9;1868:23;1900:31;1925:5;1900:31;:::i;:::-;1950:5;2002:2;1987:18;;;;1974:32;;-1:-1:-1;;;1697:315:1:o;2209:247::-;2268:6;2321:2;2309:9;2300:7;2296:23;2292:32;2289:52;;;2337:1;2334;2327:12;2289:52;2376:9;2363:23;2395:31;2420:5;2395:31;:::i;2878:180::-;2937:6;2990:2;2978:9;2969:7;2965:23;2961:32;2958:52;;;3006:1;3003;2996:12;2958:52;-1:-1:-1;3029:23:1;;2878:180;-1:-1:-1;2878:180:1:o;3063:523::-;3167:6;3175;3183;3191;3199;3207;3260:3;3248:9;3239:7;3235:23;3231:33;3228:53;;;3277:1;3274;3267:12;3228:53;-1:-1:-1;;3300:23:1;;;3370:2;3355:18;;3342:32;;-1:-1:-1;3421:2:1;3406:18;;3393:32;;3472:2;3457:18;;3444:32;;-1:-1:-1;3523:3:1;3508:19;;3495:33;;-1:-1:-1;3575:3:1;3560:19;3547:33;;-1:-1:-1;3063:523:1;-1:-1:-1;3063:523:1:o;3591:456::-;3668:6;3676;3684;3737:2;3725:9;3716:7;3712:23;3708:32;3705:52;;;3753:1;3750;3743:12;3705:52;3792:9;3779:23;3811:31;3836:5;3811:31;:::i;:::-;3861:5;-1:-1:-1;3918:2:1;3903:18;;3890:32;3931:33;3890:32;3931:33;:::i;:::-;3591:456;;3983:7;;-1:-1:-1;;;4037:2:1;4022:18;;;;4009:32;;3591:456::o;4449:160::-;4514:20;;4570:13;;4563:21;4553:32;;4543:60;;4599:1;4596;4589:12;4614:315;4679:6;4687;4740:2;4728:9;4719:7;4715:23;4711:32;4708:52;;;4756:1;4753;4746:12;4708:52;4795:9;4782:23;4814:31;4839:5;4814:31;:::i;:::-;4864:5;-1:-1:-1;4888:35:1;4919:2;4904:18;;4888:35;:::i;:::-;4878:45;;4614:315;;;;;:::o;4934:316::-;5011:6;5019;5027;5080:2;5068:9;5059:7;5055:23;5051:32;5048:52;;;5096:1;5093;5086:12;5048:52;-1:-1:-1;;5119:23:1;;;5189:2;5174:18;;5161:32;;-1:-1:-1;5240:2:1;5225:18;;;5212:32;;4934:316;-1:-1:-1;4934:316:1:o;5255:180::-;5311:6;5364:2;5352:9;5343:7;5339:23;5335:32;5332:52;;;5380:1;5377;5370:12;5332:52;5403:26;5419:9;5403:26;:::i;5440:127::-;5501:10;5496:3;5492:20;5489:1;5482:31;5532:4;5529:1;5522:15;5556:4;5553:1;5546:15;5572:1191;5662:6;5670;5723:2;5711:9;5702:7;5698:23;5694:32;5691:52;;;5739:1;5736;5729:12;5691:52;5779:9;5766:23;5808:18;5849:2;5841:6;5838:14;5835:34;;;5865:1;5862;5855:12;5835:34;5903:6;5892:9;5888:22;5878:32;;5948:7;5941:4;5937:2;5933:13;5929:27;5919:55;;5970:1;5967;5960:12;5919:55;6006:2;5993:16;6028:4;6051:2;6047;6044:10;6041:36;;;6057:18;;:::i;:::-;6103:2;6100:1;6096:10;6135:2;6129:9;6198:2;6194:7;6189:2;6185;6181:11;6177:25;6169:6;6165:38;6253:6;6241:10;6238:22;6233:2;6221:10;6218:18;6215:46;6212:72;;;6264:18;;:::i;:::-;6300:2;6293:22;6350:18;;;6384:15;;;;-1:-1:-1;6426:11:1;;;6422:20;;;6454:19;;;6451:39;;;6486:1;6483;6476:12;6451:39;6510:11;;;;6530:148;6546:6;6541:3;6538:15;6530:148;;;6612:23;6631:3;6612:23;:::i;:::-;6600:36;;6563:12;;;;6656;;;;6530:148;;;6697:6;-1:-1:-1;6722:35:1;;-1:-1:-1;6738:18:1;;;6722:35;:::i;:::-;6712:45;;;;;;5572:1191;;;;;:::o;6768:388::-;6836:6;6844;6897:2;6885:9;6876:7;6872:23;6868:32;6865:52;;;6913:1;6910;6903:12;6865:52;6952:9;6939:23;6971:31;6996:5;6971:31;:::i;:::-;7021:5;-1:-1:-1;7078:2:1;7063:18;;7050:32;7091:33;7050:32;7091:33;:::i;:::-;7143:7;7133:17;;;6768:388;;;;;:::o;7161:356::-;7363:2;7345:21;;;7382:18;;;7375:30;7441:34;7436:2;7421:18;;7414:62;7508:2;7493:18;;7161:356::o;7880:380::-;7959:1;7955:12;;;;8002;;;8023:61;;8077:4;8069:6;8065:17;8055:27;;8023:61;8130:2;8122:6;8119:14;8099:18;8096:38;8093:161;;;8176:10;8171:3;8167:20;8164:1;8157:31;8211:4;8208:1;8201:15;8239:4;8236:1;8229:15;8093:161;;7880:380;;;:::o;8265:127::-;8326:10;8321:3;8317:20;8314:1;8307:31;8357:4;8354:1;8347:15;8381:4;8378:1;8371:15;8397:168;8437:7;8503:1;8499;8495:6;8491:14;8488:1;8485:21;8480:1;8473:9;8466:17;8462:45;8459:71;;;8510:18;;:::i;:::-;-1:-1:-1;8550:9:1;;8397:168::o;8570:217::-;8610:1;8636;8626:132;;8680:10;8675:3;8671:20;8668:1;8661:31;8715:4;8712:1;8705:15;8743:4;8740:1;8733:15;8626:132;-1:-1:-1;8772:9:1;;8570:217::o;9208:128::-;9248:3;9279:1;9275:6;9272:1;9269:13;9266:39;;;9285:18;;:::i;:::-;-1:-1:-1;9321:9:1;;9208:128::o;10530:127::-;10591:10;10586:3;10582:20;10579:1;10572:31;10622:4;10619:1;10612:15;10646:4;10643:1;10636:15;10662:135;10701:3;-1:-1:-1;;10722:17:1;;10719:43;;;10742:18;;:::i;:::-;-1:-1:-1;10789:1:1;10778:13;;10662:135::o;13216:401::-;13418:2;13400:21;;;13457:2;13437:18;;;13430:30;13496:34;13491:2;13476:18;;13469:62;-1:-1:-1;;;13562:2:1;13547:18;;13540:35;13607:3;13592:19;;13216:401::o;13622:399::-;13824:2;13806:21;;;13863:2;13843:18;;;13836:30;13902:34;13897:2;13882:18;;13875:62;-1:-1:-1;;;13968:2:1;13953:18;;13946:33;14011:3;13996:19;;13622:399::o;16470:125::-;16510:4;16538:1;16535;16532:8;16529:34;;;16543:18;;:::i;:::-;-1:-1:-1;16580:9:1;;16470:125::o;17536:251::-;17606:6;17659:2;17647:9;17638:7;17634:23;17630:32;17627:52;;;17675:1;17672;17665:12;17627:52;17707:9;17701:16;17726:31;17751:5;17726:31;:::i;17792:980::-;18054:4;18102:3;18091:9;18087:19;18133:6;18122:9;18115:25;18159:2;18197:6;18192:2;18181:9;18177:18;18170:34;18240:3;18235:2;18224:9;18220:18;18213:31;18264:6;18299;18293:13;18330:6;18322;18315:22;18368:3;18357:9;18353:19;18346:26;;18407:2;18399:6;18395:15;18381:29;;18428:1;18438:195;18452:6;18449:1;18446:13;18438:195;;;18517:13;;-1:-1:-1;;;;;18513:39:1;18501:52;;18608:15;;;;18573:12;;;;18549:1;18467:9;18438:195;;;-1:-1:-1;;;;;;;18689:32:1;;;;18684:2;18669:18;;18662:60;-1:-1:-1;;;18753:3:1;18738:19;18731:35;18650:3;17792:980;-1:-1:-1;;;17792:980:1:o;19389:306::-;19477:6;19485;19493;19546:2;19534:9;19525:7;19521:23;19517:32;19514:52;;;19562:1;19559;19552:12;19514:52;19591:9;19585:16;19575:26;;19641:2;19630:9;19626:18;19620:25;19610:35;;19685:2;19674:9;19670:18;19664:25;19654:35;;19389:306;;;;;:::o

Swarm Source

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