CRO Price: $0.14 (+8.16%)

Token

Hibiki.finance (cHIBIKI)

Overview

Max Total Supply

10,000,000 cHIBIKI

Holders

2,051

Market

Price

$0.0183 @ 0.132062 CRO

Onchain Market Cap

$183,100.20

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Null: 0x000…000
Balance
313,283.136995517492612389 cHIBIKI

Value
$5,736.22 ( ~41,372.6625 CRO) [3.1328%]
0x0000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Hibiki.finance is a affordable multi-chain token tooling, passive income, and sustainable P2E games.

Market

Volume (24H):$58.78
Market Capitalization:$0.00
Circulating Supply:0.00 cHIBIKI
Market Data Source: Coinmarketcap

Contract Source Code Verified (Exact Match)

Contract Name:
cHibiki

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 2 of 6: cHibiki.sol
/**
 * 響
 * ひびき
 * /çibʲikʲi/
 * 
 * The sound of money in your pocket. The echoes of the cries of those who didn't buy. The reverberation of the rocket going to the moon.
 *
 * Multichain tools and blockchain games.
 * https://hibiki.finance
 * https://t.me/hibikifinance 
 */

// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.9.0;

import "./Auth.sol";
import "./IBEP20.sol";
import "./IDexRouter.sol";
import "./IDexFactory.sol";

contract cHibiki is IBEP20, Auth {

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

	string constant _name = "Hibiki.finance";
    string constant _symbol = "cHIBIKI";
    uint8 constant _decimals = 18;

    uint256 _totalSupply = 10_000_000 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply / 100;
	uint256 public _maxWalletAmount = _totalSupply / 100;

	mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

	// Fees. Some may be completely inactive at all times.
	uint256 liquidityFee = 20;
    uint256 burnFee = 0;
	uint256 stakingFee = 20;
	uint256 nftStakingFee = 10;
    uint256 feeDenominator = 1000;
	bool public feeOnNonTrade = false;

	uint256 public stakingPrizePool = 0;
	bool public stakingRewardsActive = false;
	address public stakingRewardsContract;
	uint256 public nftStakingPrizePool = 0;
	bool public nftStakingRewardsActive = false;
	address public nftStakingRewardsContract;

	address public autoLiquidityReceiver;

	IDexRouter public router;
    address pcs2BNBPair;
	mapping(address => bool) public pairs;

	bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 2000;
    bool inSwap;
    modifier swapping() {
		inSwap = true;
		_;
		inSwap = false;
	}

	uint256 public launchedAt = 0;
	uint256 private antiSniperBlocks = 2;
	mapping (address => bool) sniper;

	event AutoLiquifyEnabled(bool enabledOrNot);
	event AutoLiquify(uint256 amountBNB, uint256 autoBuybackAmount);
	event StakingRewards(bool activate);
	event NFTStakingRewards(bool active);

	constructor() Auth(msg.sender) {
		router = IDexRouter(0x600d0b65C2A25b64C9b517A43B7a44592448d285);
        pcs2BNBPair = IDexFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

		isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
		isTxLimitExempt[msg.sender] = true;
		isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;

		autoLiquidityReceiver = msg.sender;
		pairs[pcs2BNBPair] = true;
		_balances[msg.sender] = _totalSupply;

		emit Transfer(address(0), msg.sender, _totalSupply);
	}

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

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

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

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

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

        return _transferFrom(sender, recipient, amount);
    }

	function _isStakingReward(address sender, address recipient) internal view returns (bool) {
		return sender == stakingRewardsContract
			|| sender == nftStakingRewardsContract
			|| recipient == stakingRewardsContract
			|| recipient == nftStakingRewardsContract;
	}

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

        checkTxLimit(sender, recipient, amount);

        if (shouldSwapBack()) {
            liquify();
        }

        if (!launched() && recipient == pcs2BNBPair) {
            require(_balances[sender] > 0);
            require(sender == owner, "Only the owner can be the first to add liquidity.");
            launch();
        }

		if (sniper[sender] || sniper[recipient]) {
			revert("watch Symphogear and respond a quiz by the dev to get blacklist removed");
		}

		require(amount <= _balances[sender], "Insufficient Balance");
        _balances[sender] -= amount;

        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] += amountReceived;

		// Update staking pool, if active.
		// Update of the pool can be deactivated for launch and staking contract migration.
		if (stakingRewardsActive) {
			sendToStakingPool();
		}
		if (nftStakingRewardsActive) {
			sendToNftStakingPool();
		}

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

	function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
		require(amount <= _balances[sender], "Insufficient Balance");
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

	function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender] || isTxLimitExempt[recipient] && sender == pcs2BNBPair, "TX Limit Exceeded");
		// Max wallet check.
		if (sender != owner
            && recipient != owner
            && !isTxLimitExempt[recipient]
            && recipient != ZERO 
            && recipient != DEAD 
            && recipient != pcs2BNBPair 
            && recipient != address(this)
        ) {
            uint256 newBalance = balanceOf(recipient) + amount;
            require(newBalance <= _maxWalletAmount, "Exceeds max wallet.");
        }
    }

	// Decides whether this trade should take a fee.
	// Trades with pairs are always taxed, unless sender or receiver is exempted.
	// Non trades, like wallet to wallet, are configured, untaxed by default.
	function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        if (isFeeExempt[sender] || isFeeExempt[recipient] || !launched()) {
			return false;
		}

		if (pairs[sender] == true || pairs[recipient] == true) {
			return true;
		}

        return feeOnNonTrade;
    }

	function setAntisniperBlocks(uint256 blocks) external authorized {
		antiSniperBlocks = blocks;
	}

	function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
		if (!launched()) {
			return amount;
		}
		uint256 liqFee = 0;
		uint256 bf = 0;
		uint256 steak = 0;
		uint256 nftStake = 0;
		if (block.number - launchedAt <= antiSniperBlocks) {
			liqFee = amount * feeDenominator - 1 / feeDenominator;
            _balances[address(this)] += liqFee;
			amount -= liqFee;
			if (pairs[sender]) {
				sniper[recipient] = true;
			}
			emit Transfer(sender, address(this), liqFee);
        } else {
			// If there is a liquidity tax active for autoliq, the contract keeps it.
			if (liquidityFee > 0) {
				liqFee = amount * liquidityFee / feeDenominator;
				_balances[address(this)] += liqFee;
				emit Transfer(sender, address(this), liqFee);
			}
			// If there is an active burn fee, burn a percentage and give it to dead address.
			if (burnFee > 0) {
				bf = amount * burnFee / feeDenominator;
				_balances[DEAD] += bf;
				emit Transfer(sender, DEAD, bf);
			}
			// If staking tax is active, it is stored on ZERO address.
			// If staking payout itself is active, it is later moved from ZERO to the appropriate staking address.
			if (stakingFee > 0) {
				steak = amount * stakingFee / feeDenominator;
				_balances[ZERO] += steak;
				stakingPrizePool += steak;
				emit Transfer(sender, ZERO, steak);
			}
			if (nftStakingFee > 0) {
				nftStake = amount * nftStakingFee / feeDenominator;
				_balances[ZERO] += nftStake;
				nftStakingPrizePool += nftStake;
				emit Transfer(sender, ZERO, nftStake);
			}
		}

        return amount - liqFee - bf - steak - nftStake;
    }

	function sendToStakingPool() internal {
		if (stakingRewardsContract != address(0)) {
			_balances[ZERO] -= stakingPrizePool;
			_balances[stakingRewardsContract] += stakingPrizePool;
			emit Transfer(ZERO, stakingRewardsContract, stakingPrizePool);
			stakingPrizePool = 0;
		}
	}

	function sendToNftStakingPool() internal {
		if (nftStakingRewardsContract != address(0)) {
			_balances[ZERO] -= nftStakingPrizePool;
			_balances[nftStakingRewardsContract] += nftStakingPrizePool;
			emit Transfer(ZERO, nftStakingRewardsContract, nftStakingPrizePool);
			nftStakingPrizePool = 0;
		}
	}

	function setStakingRewardsAddress(address addy) external authorized {
		stakingRewardsContract = addy;
		isFeeExempt[addy] = true;
		isTxLimitExempt[addy] = true;
	}

	function setNftStakingRewardsAddress(address addy) external authorized {
		nftStakingRewardsContract = addy;
		isFeeExempt[addy] = true;
		isTxLimitExempt[addy] = true;
	}

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

	function setSwapEnabled(bool set) external authorized {
		swapEnabled = set;
		emit AutoLiquifyEnabled(set);
	}

	function setSwapTreshold(uint256 treshold) external authorized {
		swapThreshold = treshold;
	}

	function liquify() internal swapping {
        uint256 amountToLiquify = swapThreshold / 2;
		uint256 balanceBefore = address(this).balance;

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

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

        uint256 amountBNB = address(this).balance - balanceBefore;
        uint256 amountBNBLiquidity = amountBNB / 2;

		router.addLiquidityETH{value: amountBNBLiquidity}(
			address(this),
			amountToLiquify,
			0,
			0,
			autoLiquidityReceiver,
			block.timestamp
		);
		emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
    }

	function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

	function setTxLimit(uint256 amount) external authorized {
        require(amount >= _totalSupply / 1000);
        _maxTxAmount = amount;
    }

	function setMaxWallet(uint256 amount) external authorized {
		require(amount >= _totalSupply / 1000);
		_maxWalletAmount = amount;
	}

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

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

    function setFees(uint256 _liquidityFee, uint256 _burnFee, uint256 _stakingFee, uint256 _nftStakingFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        burnFee = _burnFee;
		stakingFee = _stakingFee;
		nftStakingFee = _nftStakingFee;
        feeDenominator = _feeDenominator;
		uint256 totalFee = _liquidityFee + _burnFee + _stakingFee + _nftStakingFee;
        require(totalFee < feeDenominator / 5, "Maximum allowed taxation on this contract is 20%.");
    }

    function setLiquidityReceiver(address _autoLiquidityReceiver) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
    }

	function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(DEAD) - balanceOf(ZERO) + stakingPrizePool + nftStakingPrizePool;
    }

	// Recover any BNB sent to the contract by mistake.
	function rescue() external {
        payable(owner).transfer(address(this).balance);
    }

	function setStakingRewardsActive(bool active) external authorized {
		stakingRewardsActive = active;
		emit StakingRewards(active);
	}

	function setNftStakingRewardsActive(bool active) external authorized {
		nftStakingRewardsActive = active;
		emit NFTStakingRewards(active);
	}

	function addPair(address pair) external authorized {
        pairs[pair] = true;
    }
    
    function removePair(address pair) external authorized {
        pairs[pair] = false;
    }

	function setRouter(address r) external authorized {
		router = IDexRouter(r);
        pcs2BNBPair = IDexFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
	}

	function setSniper(address snipy) external authorized {
		require(block.number < launchedAt + 3000, "Launch has passed.");
		sniper[snipy] = true;
	}

	function removeSniper(address snipy) external authorized {
		sniper[snipy] = false;
	}
}

File 1 of 6: Auth.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.9.0;

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

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

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

File 3 of 6: IBEP20.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.9.0;

interface IBEP20 {
  /**
   * @dev Returns the amount of tokens in existence.
   */
  function totalSupply() external view returns (uint256);

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external view returns (uint8);

  /**
   * @dev Returns the token symbol.
   */
  function symbol() external view returns (string memory);

  /**
  * @dev Returns the token name.
  */
  function name() external view returns (string memory);

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

  /**
   * @dev Returns the amount of tokens owned by `account`.
   */
  function balanceOf(address account) external view returns (uint256);

  /**
   * @dev Moves `amount` tokens from the caller's account to `recipient`.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transfer(address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Returns the remaining number of tokens that `spender` will be
   * allowed to spend on behalf of `owner` through {transferFrom}. This is
   * zero by default.
   *
   * This value changes when {approve} or {transferFrom} are called.
   */
  function allowance(address _owner, address spender) external view returns (uint256);

  /**
   * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * IMPORTANT: Beware that changing an allowance with this method brings the risk
   * that someone may use both the old and the new allowance by unfortunate
   * transaction ordering. One possible solution to mitigate this race
   * condition is to first reduce the spender's allowance to 0 and set the
   * desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   *
   * Emits an {Approval} event.
   */
  function approve(address spender, uint256 amount) external returns (bool);

  /**
   * @dev Moves `amount` tokens from `sender` to `recipient` using the
   * allowance mechanism. `amount` is then deducted from the caller's
   * allowance.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Emitted when `value` tokens are moved from one account (`from`) to
   * another (`to`).
   *
   * Note that `value` may be zero.
   */
  event Transfer(address indexed from, address indexed to, uint256 value);

  /**
   * @dev Emitted when the allowance of a `spender` for an `owner` is set by
   * a call to {approve}. `value` is the new allowance.
   */
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 4 of 6: IDexFactory.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.9.0;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

File 5 of 6: IDexPair.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.9.0;

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

File 6 of 6: IDexRouter.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.9.0;

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"autoBuybackAmount","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabledOrNot","type":"bool"}],"name":"AutoLiquifyEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"active","type":"bool"}],"name":"NFTStakingRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"activate","type":"bool"}],"name":"StakingRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feeOnNonTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"nftStakingPrizePool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftStakingRewardsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftStakingRewardsContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"removePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"snipy","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"setAntisniperBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"},{"internalType":"uint256","name":"_nftStakingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"}],"name":"setLiquidityReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"active","type":"bool"}],"name":"setNftStakingRewardsActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"setNftStakingRewardsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"r","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"snipy","type":"address"}],"name":"setSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"active","type":"bool"}],"name":"setStakingRewardsActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"setStakingRewardsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"set","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"treshold","type":"uint256"}],"name":"setSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingPrizePool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingRewardsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingRewardsContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811661dead17909155600380549091169055620000326012600a62000476565b62000041906298968062000537565b60045560646004546200005591906200040c565b60055560646004546200006991906200040c565b6006556014600b8190556000600c819055600d829055600a600e556103e8600f556010805460ff199081169091556011829055601280548216905560139190915581548116909155601980549091166001179055600454620000cf906107d0906200040c565b601a556000601c556002601d55348015620000e957600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff19169092179091556016805473600d0b65c2a25b64c9b517a43b7a44592448d285931683179055825163c45a015560e01b81529251919263c45a01559260048083019392829003018186803b1580156200016b57600080fd5b505afa15801562000180573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a69190620003dc565b6001600160a01b031663c9c65396601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200020357600080fd5b505afa15801562000218573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023e9190620003dc565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200028657600080fd5b505af11580156200029b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c19190620003dc565b601780546001600160a01b03199081166001600160a01b0393841617825530600081815260086020908152604080832060165488168452825280832060001990553380845260098352818420805460ff1990811660019081179092558686528386208054821683179055828652600a8552838620805482168317905595855282852080548716821790556002548916855282852080548716821790556003548916855282852080548716821790556015805490971682179096559554909616825260188152858220805490931690931790915560045483825260078352848220819055935193845291927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200056f565b600060208284031215620003ee578081fd5b81516001600160a01b038116811462000405578182fd5b9392505050565b6000826200042857634e487b7160e01b81526012600452602481fd5b500490565b600181815b808511156200046e57816000190482111562000452576200045262000559565b808516156200046057918102915b93841c939080029062000432565b509250929050565b60006200040560ff841683600082620004925750600162000531565b81620004a15750600062000531565b8160018114620004ba5760028114620004c557620004e5565b600191505062000531565b60ff841115620004d957620004d962000559565b50506001821b62000531565b5060208310610133831016604e8410600b84101617156200050a575081810a62000531565b6200051683836200042d565b80600019048211156200052d576200052d62000559565b0290505b92915050565b600081600019048311821515161562000554576200055462000559565b500290565b634e487b7160e01b600052601160045260246000fd5b612851806200057f6000396000f3fe6080604052600436106102e85760003560e01c80637d1db4a511610190578063c2b7bbb6116100dc578063f2fde38b11610095578063f8bc7e2f1161006f578063f8bc7e2f14610925578063f91564af1461093b578063fe33b3021461095b578063fe9fbb801461098b57600080fd5b8063f2fde38b146108c5578063f84ba65d146108e5578063f887ea401461090557600080fd5b8063c2b7bbb6146107df578063ca33e64c146107ff578063cfd1940e1461081f578063dd62ed3e1461083f578063e01af92c14610885578063f0b37c04146108a557600080fd5b8063ac0526ee11610149578063b57e368211610123578063b57e368214610769578063b6a5d7de14610789578063bf56b371146107a9578063c0d78655146107bf57600080fd5b8063ac0526ee1461070f578063af6c9c1d1461072f578063b08b9b461461074f57600080fd5b80637d1db4a51461064b5780637d253fc214610661578063815e1c1214610681578063893d20e8146106a157806395d89b41146106bf578063a9059cbb146106ef57600080fd5b806330a3ff401161024f578063571ac8b011610208578063658d4b7f116101e2578063658d4b7f146105c55780636c0a24eb146105e55780636ddd1713146105fb57806370a082311461061557600080fd5b8063571ac8b0146105655780635c85974f146105855780635d0044ca146105a557600080fd5b806330a3ff4014610493578063313ce567146104d057806333251a0b146104ec578063336237941461050c57806340448591146105315780634e9a96951461054b57600080fd5b80631bed98fd116102a15780631bed98fd146103e45780631fbe1979146103fa57806323b872dd1461040f5780632b112e491461042f5780632f54bf6e1461044457806330648b391461047357600080fd5b80630445b667146102f457806304a66b481461031d57806306fdde031461033f578063095ea7b31461037f5780630f645dce146103af57806318160ddd146103cf57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061030a601a5481565b6040519081526020015b60405180910390f35b34801561032957600080fd5b5061033d610338366004612620565b6109ab565b005b34801561034b57600080fd5b5060408051808201909152600e81526d486962696b692e66696e616e636560901b60208201525b604051610314919061265a565b34801561038b57600080fd5b5061039f61039a366004612596565b610a95565b6040519015158152602001610314565b3480156103bb57600080fd5b5061033d6103ca3660046125db565b610b02565b3480156103db57600080fd5b5060045461030a565b3480156103f057600080fd5b5061030a60135481565b34801561040657600080fd5b5061033d610b2c565b34801561041b57600080fd5b5061039f61042a366004612522565b610b69565b34801561043b57600080fd5b5061030a610c4f565b34801561045057600080fd5b5061039f61045f3660046124b2565b6000546001600160a01b0391821691161490565b34801561047f57600080fd5b5061033d61048e3660046125c1565b610cb3565b34801561049f57600080fd5b506014546104b89061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610314565b3480156104dc57600080fd5b5060405160128152602001610314565b3480156104f857600080fd5b5061033d6105073660046124b2565b610d20565b34801561051857600080fd5b506012546104b89061010090046001600160a01b031681565b34801561053d57600080fd5b5060145461039f9060ff1681565b34801561055757600080fd5b5060125461039f9060ff1681565b34801561057157600080fd5b5061039f6105803660046124b2565b610d66565b34801561059157600080fd5b5061033d6105a03660046125db565b610d74565b3480156105b157600080fd5b5061033d6105c03660046125db565b610dba565b3480156105d157600080fd5b5061033d6105e0366004612562565b610e00565b3480156105f157600080fd5b5061030a60065481565b34801561060757600080fd5b5060195461039f9060ff1681565b34801561062157600080fd5b5061030a6106303660046124b2565b6001600160a01b031660009081526007602052604090205490565b34801561065757600080fd5b5061030a60055481565b34801561066d57600080fd5b5061033d61067c3660046125c1565b610e50565b34801561068d57600080fd5b5061033d61069c3660046124b2565b610eb6565b3480156106ad57600080fd5b506000546001600160a01b03166104b8565b3480156106cb57600080fd5b5060408051808201909152600781526663484942494b4960c81b6020820152610372565b3480156106fb57600080fd5b5061039f61070a366004612596565b610f51565b34801561071b57600080fd5b5061033d61072a3660046124b2565b610f5e565b34801561073b57600080fd5b5061033d61074a3660046124b2565b610fdb565b34801561075b57600080fd5b5060105461039f9060ff1681565b34801561077557600080fd5b5061033d6107843660046124b2565b611021565b34801561079557600080fd5b5061033d6107a43660046124b2565b611068565b3480156107b557600080fd5b5061030a601c5481565b3480156107cb57600080fd5b5061033d6107da3660046124b2565b6110b9565b3480156107eb57600080fd5b5061033d6107fa3660046124b2565b6112bf565b34801561080b57600080fd5b506015546104b8906001600160a01b031681565b34801561082b57600080fd5b5061033d61083a3660046125db565b611308565b34801561084b57600080fd5b5061030a61085a3660046124ea565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561089157600080fd5b5061033d6108a03660046125c1565b611332565b3480156108b157600080fd5b5061033d6108c03660046124b2565b611398565b3480156108d157600080fd5b5061033d6108e03660046124b2565b6113e3565b3480156108f157600080fd5b5061033d610900366004612562565b611473565b34801561091157600080fd5b506016546104b8906001600160a01b031681565b34801561093157600080fd5b5061030a60115481565b34801561094757600080fd5b5061033d6109563660046124b2565b6114c3565b34801561096757600080fd5b5061039f6109763660046124b2565b60186020526000908152604090205460ff1681565b34801561099757600080fd5b5061039f6109a63660046124b2565b611540565b6109b433611540565b6109d95760405162461bcd60e51b81526004016109d0906126cd565b60405180910390fd5b600b859055600c849055600d839055600e829055600f81905560008284610a008789612762565b610a0a9190612762565b610a149190612762565b90506005600f54610a25919061277a565b8110610a8d5760405162461bcd60e51b815260206004820152603160248201527f4d6178696d756d20616c6c6f776564207461786174696f6e206f6e20746869736044820152701031b7b73a3930b1ba1034b9901918129760791b60648201526084016109d0565b505050505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610af09086815260200190565b60405180910390a35060015b92915050565b610b0b33611540565b610b275760405162461bcd60e51b81526004016109d0906126cd565b601d55565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610b66573d6000803e3d6000fd5b50565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610c3a576001600160a01b0384166000908152600860209081526040808320338452909152902054821115610c015760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b60448201526064016109d0565b6001600160a01b038416600090815260086020908152604080832033845290915281208054849290610c349084906127b9565b90915550505b610c4584848461155e565b90505b9392505050565b6013546011546003546001600160a01b039081166000908152600760205260408082205460025490931682528120546004549194939291610c9091906127b9565b610c9a91906127b9565b610ca49190612762565b610cae9190612762565b905090565b610cbc33611540565b610cd85760405162461bcd60e51b81526004016109d0906126cd565b6014805460ff19168215159081179091556040519081527f16f199463b97d31a79ccf2bcd215caefebe47f91c00bd85c25e5a36ec3d08765906020015b60405180910390a150565b610d2933611540565b610d455760405162461bcd60e51b81526004016109d0906126cd565b6001600160a01b03166000908152601e60205260409020805460ff19169055565b6000610afc82600019610a95565b610d7d33611540565b610d995760405162461bcd60e51b81526004016109d0906126cd565b6103e8600454610da9919061277a565b811015610db557600080fd5b600555565b610dc333611540565b610ddf5760405162461bcd60e51b81526004016109d0906126cd565b6103e8600454610def919061277a565b811015610dfb57600080fd5b600655565b610e0933611540565b610e255760405162461bcd60e51b81526004016109d0906126cd565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b610e5933611540565b610e755760405162461bcd60e51b81526004016109d0906126cd565b6012805460ff19168215159081179091556040519081527f7e3711afba34c356213fa0ce89cbf42edb76b5e481c22fcf5f5792234577604490602001610d15565b610ebf33611540565b610edb5760405162461bcd60e51b81526004016109d0906126cd565b601c54610eea90610bb8612762565b4310610f2d5760405162461bcd60e51b81526020600482015260126024820152712630bab731b4103430b9903830b9b9b2b21760711b60448201526064016109d0565b6001600160a01b03166000908152601e60205260409020805460ff19166001179055565b6000610c4833848461155e565b610f6733611540565b610f835760405162461bcd60e51b81526004016109d0906126cd565b60148054610100600160a81b0319166101006001600160a01b03939093169283021790556000908152600960209081526040808320805460ff199081166001908117909255600a909352922080549091169091179055565b610fe433611540565b6110005760405162461bcd60e51b81526004016109d0906126cd565b6001600160a01b03166000908152601860205260409020805460ff19169055565b61102a33611540565b6110465760405162461bcd60e51b81526004016109d0906126cd565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110925760405162461bcd60e51b81526004016109d0906126ad565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6110c233611540565b6110de5760405162461bcd60e51b81526004016109d0906126cd565b601680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b15801561113257600080fd5b505afa158015611146573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116a91906124ce565b6001600160a01b031663c9c65396601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c657600080fd5b505afa1580156111da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fe91906124ce565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b15801561124557600080fd5b505af1158015611259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127d91906124ce565b601780546001600160a01b0319166001600160a01b03928316179055306000908152600860209081526040808320601654909416835292905220600019905550565b6112c833611540565b6112e45760405162461bcd60e51b81526004016109d0906126cd565b6001600160a01b03166000908152601860205260409020805460ff19166001179055565b61131133611540565b61132d5760405162461bcd60e51b81526004016109d0906126cd565b601a55565b61133b33611540565b6113575760405162461bcd60e51b81526004016109d0906126cd565b6019805460ff19168215159081179091556040519081527fdea63b4248e33990c8e14391c5e9e66041e4e9953b1d7d1c75871eb7779bbb7990602001610d15565b6000546001600160a01b031633146113c25760405162461bcd60e51b81526004016109d0906126ad565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b0316331461140d5760405162461bcd60e51b81526004016109d0906126ad565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639101610d15565b61147c33611540565b6114985760405162461bcd60e51b81526004016109d0906126cd565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6114cc33611540565b6114e85760405162461bcd60e51b81526004016109d0906126cd565b60128054610100600160a81b0319166101006001600160a01b03939093169283021790556000908152600960209081526040808320805460ff199081166001908117909255600a909352922080549091169091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b600080821161156c57600080fd5b601b5460ff16806115825750611582848461188b565b1561159957611592848484611900565b9050610c48565b6115a4848484611a00565b6115ac611bd2565b156115b9576115b9611c33565b601c541580156115d657506017546001600160a01b038481169116145b1561167d576001600160a01b0384166000908152600760205260409020546115fd57600080fd5b6000546001600160a01b038581169116146116745760405162461bcd60e51b815260206004820152603160248201527f4f6e6c7920746865206f776e65722063616e20626520746865206669727374206044820152703a379030b232103634b8bab4b234ba3c9760791b60648201526084016109d0565b61167d43601c55565b6001600160a01b0384166000908152601e602052604090205460ff16806116bc57506001600160a01b0383166000908152601e602052604090205460ff165b1561173f5760405162461bcd60e51b815260206004820152604760248201527f77617463682053796d70686f6765617220616e6420726573706f6e642061207160448201527f75697a206279207468652064657620746f2067657420626c61636b6c697374206064820152661c995b5bdd995960ca1b608482015260a4016109d0565b6001600160a01b03841660009081526007602052604090205482111561179e5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b60448201526064016109d0565b6001600160a01b038416600090815260076020526040812080548492906117c69084906127b9565b90915550600090506117d88585611ecf565b6117e257826117ed565b6117ed858585611f89565b6001600160a01b03851660009081526007602052604081208054929350839290919061181a908490612762565b909155505060125460ff161561183257611832612312565b60145460ff1615611845576118456123d8565b836001600160a01b0316856001600160a01b03166000805160206127fc8339815191528360405161187891815260200190565b60405180910390a3506001949350505050565b6012546000906001600160a01b038481166101009092041614806118c157506014546001600160a01b0384811661010090920416145b806118de57506012546001600160a01b0383811661010090920416145b80610c4857505060145461010090046001600160a01b03908116911614919050565b6001600160a01b03831660009081526007602052604081205482111561195f5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b60448201526064016109d0565b6001600160a01b038416600090815260076020526040812080548492906119879084906127b9565b90915550506001600160a01b038316600090815260076020526040812080548492906119b4908490612762565b92505081905550826001600160a01b0316846001600160a01b03166000805160206127fc833981519152846040516119ee91815260200190565b60405180910390a35060019392505050565b60055481111580611a2957506001600160a01b0383166000908152600a602052604090205460ff165b80611a6457506001600160a01b0382166000908152600a602052604090205460ff168015611a6457506017546001600160a01b038481169116145b611aa45760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109d0565b6000546001600160a01b03848116911614801590611ad057506000546001600160a01b03838116911614155b8015611af557506001600160a01b0382166000908152600a602052604090205460ff16155b8015611b0f57506003546001600160a01b03838116911614155b8015611b2957506002546001600160a01b03838116911614155b8015611b4357506017546001600160a01b03838116911614155b8015611b5857506001600160a01b0382163014155b15611bcd576001600160a01b038216600090815260076020526040812054611b81908390612762565b9050600654811115611bcb5760405162461bcd60e51b815260206004820152601360248201527222bc31b2b2b2399036b0bc103bb0b63632ba1760691b60448201526064016109d0565b505b505050565b6000611bdf601c54151590565b8015611bf657506017546001600160a01b03163314155b8015611c055750601b5460ff16155b8015611c13575060195460ff165b8015610cae575050601a5430600090815260076020526040902054101590565b601b805460ff19166001179055601a54600090611c529060029061277a565b60408051600280825260608201835292935047926000926020830190803683370190505090503081600081518110611c9a57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611cee57600080fd5b505afa158015611d02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2691906124ce565b81600181518110611d4757634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac94790611d8d9086906000908690309042906004016126f2565b600060405180830381600087803b158015611da757600080fd5b505af1158015611dbb573d6000803e3d6000fd5b5050505060008247611dcd91906127b9565b90506000611ddc60028361277a565b60165460155460405163f305d71960e01b81523060048201526024810189905260006044820181905260648201526001600160a01b0391821660848201524260a4820152929350169063f305d71990839060c4016060604051808303818588803b158015611e4957600080fd5b505af1158015611e5d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e8291906125f3565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15050601b805460ff19169055505050565b6001600160a01b03821660009081526009602052604081205460ff1680611f0e57506001600160a01b03821660009081526009602052604090205460ff165b80611f195750601c54155b15611f2657506000610afc565b6001600160a01b03831660009081526018602052604090205460ff16151560011480611f6f57506001600160a01b03821660009081526018602052604090205460ff1615156001145b15611f7c57506001610afc565b5060105460ff1692915050565b6000611f96601c54151590565b611fa1575080610c48565b600080600080601d54601c5443611fb891906127b9565b1161209157600f54611fcb90600161277a565b600f54611fd8908861279a565b611fe291906127b9565b30600090815260076020526040812080549296508692909190612006908490612762565b90915550612016905084876127b9565b6001600160a01b03891660009081526018602052604090205490965060ff161561205e576001600160a01b0387166000908152601e60205260409020805460ff191660011790555b60405184815230906001600160a01b038a16906000805160206127fc8339815191529060200160405180910390a36122db565b600b541561210b57600f54600b546120a9908861279a565b6120b3919061277a565b306000908152600760205260408120805492965086929091906120d7908490612762565b909155505060405184815230906001600160a01b038a16906000805160206127fc8339815191529060200160405180910390a35b600c541561219557600f54600c54612123908861279a565b61212d919061277a565b6002546001600160a01b031660009081526007602052604081208054929550859290919061215c908490612762565b90915550506002546040518481526001600160a01b03918216918a16906000805160206127fc8339815191529060200160405180910390a35b600d541561223857600f54600d546121ad908861279a565b6121b7919061277a565b6003546001600160a01b03166000908152600760205260408120805492945084929091906121e6908490612762565b9250508190555081601160008282546121ff9190612762565b90915550506003546040518381526001600160a01b03918216918a16906000805160206127fc8339815191529060200160405180910390a35b600e54156122db57600f54600e54612250908861279a565b61225a919061277a565b6003546001600160a01b0316600090815260076020526040812080549293508392909190612289908490612762565b9250508190555080601360008282546122a29190612762565b90915550506003546040518281526001600160a01b03918216918a16906000805160206127fc8339815191529060200160405180910390a35b8082846122e8878a6127b9565b6122f291906127b9565b6122fc91906127b9565b61230691906127b9565b98975050505050505050565b60125461010090046001600160a01b0316156123d6576011546003546001600160a01b0316600090815260076020526040812080549091906123559084906127b9565b909155505060115460125461010090046001600160a01b03166000908152600760205260408120805490919061238c908490612762565b90915550506012546003546011546040519081526101009092046001600160a01b03908116929116906000805160206127fc8339815191529060200160405180910390a360006011555b565b60145461010090046001600160a01b0316156123d6576013546003546001600160a01b03166000908152600760205260408120805490919061241b9084906127b9565b909155505060135460145461010090046001600160a01b031660009081526007602052604081208054909190612452908490612762565b90915550506014546003546013546040519081526101009092046001600160a01b03908116929116906000805160206127fc8339815191529060200160405180910390a36000601355565b803580151581146124ad57600080fd5b919050565b6000602082840312156124c3578081fd5b8135610c48816127e6565b6000602082840312156124df578081fd5b8151610c48816127e6565b600080604083850312156124fc578081fd5b8235612507816127e6565b91506020830135612517816127e6565b809150509250929050565b600080600060608486031215612536578081fd5b8335612541816127e6565b92506020840135612551816127e6565b929592945050506040919091013590565b60008060408385031215612574578182fd5b823561257f816127e6565b915061258d6020840161249d565b90509250929050565b600080604083850312156125a8578182fd5b82356125b3816127e6565b946020939093013593505050565b6000602082840312156125d2578081fd5b610c488261249d565b6000602082840312156125ec578081fd5b5035919050565b600080600060608486031215612607578283fd5b8351925060208401519150604084015190509250925092565b600080600080600060a08688031215612637578081fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000602080835283518082850152825b818110156126865785810183015185820160400152820161266a565b818111156126975783604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156127415784516001600160a01b03168352938301939183019160010161271c565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612775576127756127d0565b500190565b60008261279557634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156127b4576127b46127d0565b500290565b6000828210156127cb576127cb6127d0565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610b6657600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212202f177612959d73b73985980beec6cc3480a21278640316d83e67533de017fc3564736f6c63430008040033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c80637d1db4a511610190578063c2b7bbb6116100dc578063f2fde38b11610095578063f8bc7e2f1161006f578063f8bc7e2f14610925578063f91564af1461093b578063fe33b3021461095b578063fe9fbb801461098b57600080fd5b8063f2fde38b146108c5578063f84ba65d146108e5578063f887ea401461090557600080fd5b8063c2b7bbb6146107df578063ca33e64c146107ff578063cfd1940e1461081f578063dd62ed3e1461083f578063e01af92c14610885578063f0b37c04146108a557600080fd5b8063ac0526ee11610149578063b57e368211610123578063b57e368214610769578063b6a5d7de14610789578063bf56b371146107a9578063c0d78655146107bf57600080fd5b8063ac0526ee1461070f578063af6c9c1d1461072f578063b08b9b461461074f57600080fd5b80637d1db4a51461064b5780637d253fc214610661578063815e1c1214610681578063893d20e8146106a157806395d89b41146106bf578063a9059cbb146106ef57600080fd5b806330a3ff401161024f578063571ac8b011610208578063658d4b7f116101e2578063658d4b7f146105c55780636c0a24eb146105e55780636ddd1713146105fb57806370a082311461061557600080fd5b8063571ac8b0146105655780635c85974f146105855780635d0044ca146105a557600080fd5b806330a3ff4014610493578063313ce567146104d057806333251a0b146104ec578063336237941461050c57806340448591146105315780634e9a96951461054b57600080fd5b80631bed98fd116102a15780631bed98fd146103e45780631fbe1979146103fa57806323b872dd1461040f5780632b112e491461042f5780632f54bf6e1461044457806330648b391461047357600080fd5b80630445b667146102f457806304a66b481461031d57806306fdde031461033f578063095ea7b31461037f5780630f645dce146103af57806318160ddd146103cf57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061030a601a5481565b6040519081526020015b60405180910390f35b34801561032957600080fd5b5061033d610338366004612620565b6109ab565b005b34801561034b57600080fd5b5060408051808201909152600e81526d486962696b692e66696e616e636560901b60208201525b604051610314919061265a565b34801561038b57600080fd5b5061039f61039a366004612596565b610a95565b6040519015158152602001610314565b3480156103bb57600080fd5b5061033d6103ca3660046125db565b610b02565b3480156103db57600080fd5b5060045461030a565b3480156103f057600080fd5b5061030a60135481565b34801561040657600080fd5b5061033d610b2c565b34801561041b57600080fd5b5061039f61042a366004612522565b610b69565b34801561043b57600080fd5b5061030a610c4f565b34801561045057600080fd5b5061039f61045f3660046124b2565b6000546001600160a01b0391821691161490565b34801561047f57600080fd5b5061033d61048e3660046125c1565b610cb3565b34801561049f57600080fd5b506014546104b89061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610314565b3480156104dc57600080fd5b5060405160128152602001610314565b3480156104f857600080fd5b5061033d6105073660046124b2565b610d20565b34801561051857600080fd5b506012546104b89061010090046001600160a01b031681565b34801561053d57600080fd5b5060145461039f9060ff1681565b34801561055757600080fd5b5060125461039f9060ff1681565b34801561057157600080fd5b5061039f6105803660046124b2565b610d66565b34801561059157600080fd5b5061033d6105a03660046125db565b610d74565b3480156105b157600080fd5b5061033d6105c03660046125db565b610dba565b3480156105d157600080fd5b5061033d6105e0366004612562565b610e00565b3480156105f157600080fd5b5061030a60065481565b34801561060757600080fd5b5060195461039f9060ff1681565b34801561062157600080fd5b5061030a6106303660046124b2565b6001600160a01b031660009081526007602052604090205490565b34801561065757600080fd5b5061030a60055481565b34801561066d57600080fd5b5061033d61067c3660046125c1565b610e50565b34801561068d57600080fd5b5061033d61069c3660046124b2565b610eb6565b3480156106ad57600080fd5b506000546001600160a01b03166104b8565b3480156106cb57600080fd5b5060408051808201909152600781526663484942494b4960c81b6020820152610372565b3480156106fb57600080fd5b5061039f61070a366004612596565b610f51565b34801561071b57600080fd5b5061033d61072a3660046124b2565b610f5e565b34801561073b57600080fd5b5061033d61074a3660046124b2565b610fdb565b34801561075b57600080fd5b5060105461039f9060ff1681565b34801561077557600080fd5b5061033d6107843660046124b2565b611021565b34801561079557600080fd5b5061033d6107a43660046124b2565b611068565b3480156107b557600080fd5b5061030a601c5481565b3480156107cb57600080fd5b5061033d6107da3660046124b2565b6110b9565b3480156107eb57600080fd5b5061033d6107fa3660046124b2565b6112bf565b34801561080b57600080fd5b506015546104b8906001600160a01b031681565b34801561082b57600080fd5b5061033d61083a3660046125db565b611308565b34801561084b57600080fd5b5061030a61085a3660046124ea565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561089157600080fd5b5061033d6108a03660046125c1565b611332565b3480156108b157600080fd5b5061033d6108c03660046124b2565b611398565b3480156108d157600080fd5b5061033d6108e03660046124b2565b6113e3565b3480156108f157600080fd5b5061033d610900366004612562565b611473565b34801561091157600080fd5b506016546104b8906001600160a01b031681565b34801561093157600080fd5b5061030a60115481565b34801561094757600080fd5b5061033d6109563660046124b2565b6114c3565b34801561096757600080fd5b5061039f6109763660046124b2565b60186020526000908152604090205460ff1681565b34801561099757600080fd5b5061039f6109a63660046124b2565b611540565b6109b433611540565b6109d95760405162461bcd60e51b81526004016109d0906126cd565b60405180910390fd5b600b859055600c849055600d839055600e829055600f81905560008284610a008789612762565b610a0a9190612762565b610a149190612762565b90506005600f54610a25919061277a565b8110610a8d5760405162461bcd60e51b815260206004820152603160248201527f4d6178696d756d20616c6c6f776564207461786174696f6e206f6e20746869736044820152701031b7b73a3930b1ba1034b9901918129760791b60648201526084016109d0565b505050505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610af09086815260200190565b60405180910390a35060015b92915050565b610b0b33611540565b610b275760405162461bcd60e51b81526004016109d0906126cd565b601d55565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610b66573d6000803e3d6000fd5b50565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610c3a576001600160a01b0384166000908152600860209081526040808320338452909152902054821115610c015760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b60448201526064016109d0565b6001600160a01b038416600090815260086020908152604080832033845290915281208054849290610c349084906127b9565b90915550505b610c4584848461155e565b90505b9392505050565b6013546011546003546001600160a01b039081166000908152600760205260408082205460025490931682528120546004549194939291610c9091906127b9565b610c9a91906127b9565b610ca49190612762565b610cae9190612762565b905090565b610cbc33611540565b610cd85760405162461bcd60e51b81526004016109d0906126cd565b6014805460ff19168215159081179091556040519081527f16f199463b97d31a79ccf2bcd215caefebe47f91c00bd85c25e5a36ec3d08765906020015b60405180910390a150565b610d2933611540565b610d455760405162461bcd60e51b81526004016109d0906126cd565b6001600160a01b03166000908152601e60205260409020805460ff19169055565b6000610afc82600019610a95565b610d7d33611540565b610d995760405162461bcd60e51b81526004016109d0906126cd565b6103e8600454610da9919061277a565b811015610db557600080fd5b600555565b610dc333611540565b610ddf5760405162461bcd60e51b81526004016109d0906126cd565b6103e8600454610def919061277a565b811015610dfb57600080fd5b600655565b610e0933611540565b610e255760405162461bcd60e51b81526004016109d0906126cd565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b610e5933611540565b610e755760405162461bcd60e51b81526004016109d0906126cd565b6012805460ff19168215159081179091556040519081527f7e3711afba34c356213fa0ce89cbf42edb76b5e481c22fcf5f5792234577604490602001610d15565b610ebf33611540565b610edb5760405162461bcd60e51b81526004016109d0906126cd565b601c54610eea90610bb8612762565b4310610f2d5760405162461bcd60e51b81526020600482015260126024820152712630bab731b4103430b9903830b9b9b2b21760711b60448201526064016109d0565b6001600160a01b03166000908152601e60205260409020805460ff19166001179055565b6000610c4833848461155e565b610f6733611540565b610f835760405162461bcd60e51b81526004016109d0906126cd565b60148054610100600160a81b0319166101006001600160a01b03939093169283021790556000908152600960209081526040808320805460ff199081166001908117909255600a909352922080549091169091179055565b610fe433611540565b6110005760405162461bcd60e51b81526004016109d0906126cd565b6001600160a01b03166000908152601860205260409020805460ff19169055565b61102a33611540565b6110465760405162461bcd60e51b81526004016109d0906126cd565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110925760405162461bcd60e51b81526004016109d0906126ad565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6110c233611540565b6110de5760405162461bcd60e51b81526004016109d0906126cd565b601680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b15801561113257600080fd5b505afa158015611146573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116a91906124ce565b6001600160a01b031663c9c65396601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c657600080fd5b505afa1580156111da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fe91906124ce565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b15801561124557600080fd5b505af1158015611259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127d91906124ce565b601780546001600160a01b0319166001600160a01b03928316179055306000908152600860209081526040808320601654909416835292905220600019905550565b6112c833611540565b6112e45760405162461bcd60e51b81526004016109d0906126cd565b6001600160a01b03166000908152601860205260409020805460ff19166001179055565b61131133611540565b61132d5760405162461bcd60e51b81526004016109d0906126cd565b601a55565b61133b33611540565b6113575760405162461bcd60e51b81526004016109d0906126cd565b6019805460ff19168215159081179091556040519081527fdea63b4248e33990c8e14391c5e9e66041e4e9953b1d7d1c75871eb7779bbb7990602001610d15565b6000546001600160a01b031633146113c25760405162461bcd60e51b81526004016109d0906126ad565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b0316331461140d5760405162461bcd60e51b81526004016109d0906126ad565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639101610d15565b61147c33611540565b6114985760405162461bcd60e51b81526004016109d0906126cd565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6114cc33611540565b6114e85760405162461bcd60e51b81526004016109d0906126cd565b60128054610100600160a81b0319166101006001600160a01b03939093169283021790556000908152600960209081526040808320805460ff199081166001908117909255600a909352922080549091169091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b600080821161156c57600080fd5b601b5460ff16806115825750611582848461188b565b1561159957611592848484611900565b9050610c48565b6115a4848484611a00565b6115ac611bd2565b156115b9576115b9611c33565b601c541580156115d657506017546001600160a01b038481169116145b1561167d576001600160a01b0384166000908152600760205260409020546115fd57600080fd5b6000546001600160a01b038581169116146116745760405162461bcd60e51b815260206004820152603160248201527f4f6e6c7920746865206f776e65722063616e20626520746865206669727374206044820152703a379030b232103634b8bab4b234ba3c9760791b60648201526084016109d0565b61167d43601c55565b6001600160a01b0384166000908152601e602052604090205460ff16806116bc57506001600160a01b0383166000908152601e602052604090205460ff165b1561173f5760405162461bcd60e51b815260206004820152604760248201527f77617463682053796d70686f6765617220616e6420726573706f6e642061207160448201527f75697a206279207468652064657620746f2067657420626c61636b6c697374206064820152661c995b5bdd995960ca1b608482015260a4016109d0565b6001600160a01b03841660009081526007602052604090205482111561179e5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b60448201526064016109d0565b6001600160a01b038416600090815260076020526040812080548492906117c69084906127b9565b90915550600090506117d88585611ecf565b6117e257826117ed565b6117ed858585611f89565b6001600160a01b03851660009081526007602052604081208054929350839290919061181a908490612762565b909155505060125460ff161561183257611832612312565b60145460ff1615611845576118456123d8565b836001600160a01b0316856001600160a01b03166000805160206127fc8339815191528360405161187891815260200190565b60405180910390a3506001949350505050565b6012546000906001600160a01b038481166101009092041614806118c157506014546001600160a01b0384811661010090920416145b806118de57506012546001600160a01b0383811661010090920416145b80610c4857505060145461010090046001600160a01b03908116911614919050565b6001600160a01b03831660009081526007602052604081205482111561195f5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b60448201526064016109d0565b6001600160a01b038416600090815260076020526040812080548492906119879084906127b9565b90915550506001600160a01b038316600090815260076020526040812080548492906119b4908490612762565b92505081905550826001600160a01b0316846001600160a01b03166000805160206127fc833981519152846040516119ee91815260200190565b60405180910390a35060019392505050565b60055481111580611a2957506001600160a01b0383166000908152600a602052604090205460ff165b80611a6457506001600160a01b0382166000908152600a602052604090205460ff168015611a6457506017546001600160a01b038481169116145b611aa45760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109d0565b6000546001600160a01b03848116911614801590611ad057506000546001600160a01b03838116911614155b8015611af557506001600160a01b0382166000908152600a602052604090205460ff16155b8015611b0f57506003546001600160a01b03838116911614155b8015611b2957506002546001600160a01b03838116911614155b8015611b4357506017546001600160a01b03838116911614155b8015611b5857506001600160a01b0382163014155b15611bcd576001600160a01b038216600090815260076020526040812054611b81908390612762565b9050600654811115611bcb5760405162461bcd60e51b815260206004820152601360248201527222bc31b2b2b2399036b0bc103bb0b63632ba1760691b60448201526064016109d0565b505b505050565b6000611bdf601c54151590565b8015611bf657506017546001600160a01b03163314155b8015611c055750601b5460ff16155b8015611c13575060195460ff165b8015610cae575050601a5430600090815260076020526040902054101590565b601b805460ff19166001179055601a54600090611c529060029061277a565b60408051600280825260608201835292935047926000926020830190803683370190505090503081600081518110611c9a57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611cee57600080fd5b505afa158015611d02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2691906124ce565b81600181518110611d4757634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac94790611d8d9086906000908690309042906004016126f2565b600060405180830381600087803b158015611da757600080fd5b505af1158015611dbb573d6000803e3d6000fd5b5050505060008247611dcd91906127b9565b90506000611ddc60028361277a565b60165460155460405163f305d71960e01b81523060048201526024810189905260006044820181905260648201526001600160a01b0391821660848201524260a4820152929350169063f305d71990839060c4016060604051808303818588803b158015611e4957600080fd5b505af1158015611e5d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e8291906125f3565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15050601b805460ff19169055505050565b6001600160a01b03821660009081526009602052604081205460ff1680611f0e57506001600160a01b03821660009081526009602052604090205460ff165b80611f195750601c54155b15611f2657506000610afc565b6001600160a01b03831660009081526018602052604090205460ff16151560011480611f6f57506001600160a01b03821660009081526018602052604090205460ff1615156001145b15611f7c57506001610afc565b5060105460ff1692915050565b6000611f96601c54151590565b611fa1575080610c48565b600080600080601d54601c5443611fb891906127b9565b1161209157600f54611fcb90600161277a565b600f54611fd8908861279a565b611fe291906127b9565b30600090815260076020526040812080549296508692909190612006908490612762565b90915550612016905084876127b9565b6001600160a01b03891660009081526018602052604090205490965060ff161561205e576001600160a01b0387166000908152601e60205260409020805460ff191660011790555b60405184815230906001600160a01b038a16906000805160206127fc8339815191529060200160405180910390a36122db565b600b541561210b57600f54600b546120a9908861279a565b6120b3919061277a565b306000908152600760205260408120805492965086929091906120d7908490612762565b909155505060405184815230906001600160a01b038a16906000805160206127fc8339815191529060200160405180910390a35b600c541561219557600f54600c54612123908861279a565b61212d919061277a565b6002546001600160a01b031660009081526007602052604081208054929550859290919061215c908490612762565b90915550506002546040518481526001600160a01b03918216918a16906000805160206127fc8339815191529060200160405180910390a35b600d541561223857600f54600d546121ad908861279a565b6121b7919061277a565b6003546001600160a01b03166000908152600760205260408120805492945084929091906121e6908490612762565b9250508190555081601160008282546121ff9190612762565b90915550506003546040518381526001600160a01b03918216918a16906000805160206127fc8339815191529060200160405180910390a35b600e54156122db57600f54600e54612250908861279a565b61225a919061277a565b6003546001600160a01b0316600090815260076020526040812080549293508392909190612289908490612762565b9250508190555080601360008282546122a29190612762565b90915550506003546040518281526001600160a01b03918216918a16906000805160206127fc8339815191529060200160405180910390a35b8082846122e8878a6127b9565b6122f291906127b9565b6122fc91906127b9565b61230691906127b9565b98975050505050505050565b60125461010090046001600160a01b0316156123d6576011546003546001600160a01b0316600090815260076020526040812080549091906123559084906127b9565b909155505060115460125461010090046001600160a01b03166000908152600760205260408120805490919061238c908490612762565b90915550506012546003546011546040519081526101009092046001600160a01b03908116929116906000805160206127fc8339815191529060200160405180910390a360006011555b565b60145461010090046001600160a01b0316156123d6576013546003546001600160a01b03166000908152600760205260408120805490919061241b9084906127b9565b909155505060135460145461010090046001600160a01b031660009081526007602052604081208054909190612452908490612762565b90915550506014546003546013546040519081526101009092046001600160a01b03908116929116906000805160206127fc8339815191529060200160405180910390a36000601355565b803580151581146124ad57600080fd5b919050565b6000602082840312156124c3578081fd5b8135610c48816127e6565b6000602082840312156124df578081fd5b8151610c48816127e6565b600080604083850312156124fc578081fd5b8235612507816127e6565b91506020830135612517816127e6565b809150509250929050565b600080600060608486031215612536578081fd5b8335612541816127e6565b92506020840135612551816127e6565b929592945050506040919091013590565b60008060408385031215612574578182fd5b823561257f816127e6565b915061258d6020840161249d565b90509250929050565b600080604083850312156125a8578182fd5b82356125b3816127e6565b946020939093013593505050565b6000602082840312156125d2578081fd5b610c488261249d565b6000602082840312156125ec578081fd5b5035919050565b600080600060608486031215612607578283fd5b8351925060208401519150604084015190509250925092565b600080600080600060a08688031215612637578081fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000602080835283518082850152825b818110156126865785810183015185820160400152820161266a565b818111156126975783604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156127415784516001600160a01b03168352938301939183019160010161271c565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612775576127756127d0565b500190565b60008261279557634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156127b4576127b46127d0565b500290565b6000828210156127cb576127cb6127d0565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610b6657600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212202f177612959d73b73985980beec6cc3480a21278640316d83e67533de017fc3564736f6c63430008040033

Deployed Bytecode Sourcemap

455:13671:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1761:50;;;;;;;;;;;;;;;;;;;9939:25:6;;;9927:2;9912:18;1761:50:5;;;;;;;;12182:504;;;;;;;;;;-1:-1:-1;12182:504:5;;;;;:::i;:::-;;:::i;:::-;;3168:80;;;;;;;;;;-1:-1:-1;3240:5:5;;;;;;;;;;;;-1:-1:-1;;;3240:5:5;;;;3168:80;;;;;;;:::i;3585:212::-;;;;;;;;;;-1:-1:-1;3585:212:5;;;;;:::i;:::-;;:::i;:::-;;;5201:14:6;;5194:22;5176:41;;5164:2;5149:18;3585:212:5;5131:92:6;7578:98:5;;;;;;;;;;-1:-1:-1;7578:98:5;;;;;:::i;:::-;;:::i;2901:88::-;;;;;;;;;;-1:-1:-1;2974:12:5;;2901:88;;1461:38;;;;;;;;;;;;;;;;13071:90;;;;;;;;;;;;;:::i;4086:385::-;;;;;;;;;;-1:-1:-1;4086:385:5;;;;;:::i;:::-;;:::i;12840:175::-;;;;;;;;;;;;;:::i;985:101:0:-;;;;;;;;;;-1:-1:-1;985:101:0;;;;;:::i;:::-;1040:4;1074:5;-1:-1:-1;;;;;1063:16:0;;;1074:5;;1063:16;;985:101;13301:143:5;;;;;;;;;;-1:-1:-1;13301:143:5;;;;;:::i;:::-;;:::i;1548:40::-;;;;;;;;;;-1:-1:-1;1548:40:5;;;;;;;-1:-1:-1;;;;;1548:40:5;;;;;;-1:-1:-1;;;;;3855:32:6;;;3837:51;;3825:2;3810:18;1548:40:5;3792:102:6;2994:80:5;;;;;;;;;;-1:-1:-1;2994:80:5;;730:2;11358:36:6;;11346:2;11331:18;2994:80:5;11313:87:6;14038:86:5;;;;;;;;;;-1:-1:-1;14038:86:5;;;;;:::i;:::-;;:::i;1421:37::-;;;;;;;;;;-1:-1:-1;1421:37:5;;;;;;;-1:-1:-1;;;;;1421:37:5;;;1502:43;;;;;;;;;;-1:-1:-1;1502:43:5;;;;;;;;1378:40;;;;;;;;;;-1:-1:-1;1378:40:5;;;;;;;;3803:120;;;;;;;;;;-1:-1:-1;3803:120:5;;;;;:::i;:::-;;:::i;11642:142::-;;;;;;;;;;-1:-1:-1;11642:142:5;;;;;:::i;:::-;;:::i;11787:133::-;;;;;;;;;;-1:-1:-1;11787:133:5;;;;;:::i;:::-;;:::i;11926:118::-;;;;;;;;;;-1:-1:-1;11926:118:5;;;;;:::i;:::-;;:::i;849:52::-;;;;;;;;;;;;;;;;1725:30;;;;;;;;;;-1:-1:-1;1725:30:5;;;;;;;;3336:105;;;;;;;;;;-1:-1:-1;3336:105:5;;;;;:::i;:::-;-1:-1:-1;;;;;3420:18:5;3402:7;3420:18;;;:9;:18;;;;;;;3336:105;798:48;;;;;;;;;;;;;;;;13164:134;;;;;;;;;;-1:-1:-1;13164:134:5;;;;;:::i;:::-;;:::i;13886:149::-;;;;;;;;;;-1:-1:-1;13886:149:5;;;;;:::i;:::-;;:::i;3253:78::-;;;;;;;;;;-1:-1:-1;3305:7:5;3323:5;-1:-1:-1;;;;;3323:5:5;3253:78;;3079:84;;;;;;;;;;-1:-1:-1;3153:7:5;;;;;;;;;;;;-1:-1:-1;;;3153:7:5;;;;3079:84;;3929:154;;;;;;;;;;-1:-1:-1;3929:154:5;;;;;:::i;:::-;;:::i;10063:171::-;;;;;;;;;;-1:-1:-1;10063:171:5;;;;;:::i;:::-;;:::i;13543:90::-;;;;;;;;;;-1:-1:-1;13543:90:5;;;;;:::i;:::-;;:::i;1303:33::-;;;;;;;;;;-1:-1:-1;1303:33:5;;;;;;;;12692:145;;;;;;;;;;-1:-1:-1;12692:145:5;;;;;:::i;:::-;;:::i;672:92:0:-;;;;;;;;;;-1:-1:-1;672:92:0;;;;;:::i;:::-;;:::i;1901:29:5:-;;;;;;;;;;;;;;;;13636:247;;;;;;;;;;-1:-1:-1;13636:247:5;;;;;:::i;:::-;;:::i;13447:86::-;;;;;;;;;;-1:-1:-1;13447:86:5;;;;;:::i;:::-;;:::i;1592:36::-;;;;;;;;;;-1:-1:-1;1592:36:5;;;;-1:-1:-1;;;;;1592:36:5;;;10585:95;;;;;;;;;;-1:-1:-1;10585:95:5;;;;;:::i;:::-;;:::i;3446:133::-;;;;;;;;;;-1:-1:-1;3446:133:5;;;;;:::i;:::-;-1:-1:-1;;;;;3548:19:5;;;3530:7;3548:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;3446:133;10471:111;;;;;;;;;;-1:-1:-1;10471:111:5;;;;;:::i;:::-;;:::i;835:95:0:-;;;;;;;;;;-1:-1:-1;835:95:0;;;;;:::i;:::-;;:::i;1371:169::-;;;;;;;;;;-1:-1:-1;1371:169:0;;;;;:::i;:::-;;:::i;12050:126:5:-;;;;;;;;;;-1:-1:-1;12050:126:5;;;;;:::i;:::-;;:::i;1632:24::-;;;;;;;;;;-1:-1:-1;1632:24:5;;;;-1:-1:-1;;;;;1632:24:5;;;1340:35;;;;;;;;;;;;;;;;9895:165;;;;;;;;;;-1:-1:-1;9895:165:5;;;;;:::i;:::-;;:::i;1684:37::-;;;;;;;;;;-1:-1:-1;1684:37:5;;;;;:::i;:::-;;;;;;;;;;;;;;;;1152:105:0;;;;;;;;;;-1:-1:-1;1152:105:0;;;;;:::i;:::-;;:::i;12182:504:5:-;563:24:0;576:10;563:12;:24::i;:::-;555:48;;;;-1:-1:-1;;;555:48:0;;;;;;;:::i;:::-;;;;;;;;;12340:12:5::1;:28:::0;;;12378:7:::1;:18:::0;;;12400:10:::1;:24:::0;;;12428:13:::1;:30:::0;;;12468:14:::1;:32:::0;;;-1:-1:-1;12444:14:5;12413:11;12523:24:::1;12388:8:::0;12355:13;12523:24:::1;:::i;:::-;:38;;;;:::i;:::-;:55;;;;:::i;:::-;12504:74;;12624:1;12607:14;;:18;;;;:::i;:::-;12596:8;:29;12588:91;;;::::0;-1:-1:-1;;;12588:91:5;;9237:2:6;12588:91:5::1;::::0;::::1;9219:21:6::0;9276:2;9256:18;;;9249:30;9315:34;9295:18;;;9288:62;-1:-1:-1;;;9366:18:6;;;9359:47;9423:19;;12588:91:5::1;9209:239:6::0;12588:91:5::1;605:1:0;12182:504:5::0;;;;;:::o;3585:212::-;3688:10;3660:4;3676:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;3676:32:5;;;;;;;;;;:41;;;3732:37;3660:4;;3676:32;;3732:37;;;;3711:6;9939:25:6;;9927:2;9912:18;;9894:76;3732:37:5;;;;;;;;-1:-1:-1;3786:4:5;3585:212;;;;;:::o;7578:98::-;563:24:0;576:10;563:12;:24::i;:::-;555:48;;;;-1:-1:-1;;;555:48:0;;;;;;;:::i;:::-;7647:16:5::1;:25:::0;7578:98::o;13071:90::-;13116:5;;;13108:46;;-1:-1:-1;;;;;13116:5:5;;;;13132:21;13108:46;;;;;13132:21;;13108:46;13116:5;13108:46;13132:21;13116:5;13108:46;;;;;;;;;;;;;;;;;;;;;13071:90::o;4086:385::-;-1:-1:-1;;;;;4206:19:5;;4186:4;4206:19;;;:11;:19;;;;;;;;4226:10;4206:31;;;;;;;;-1:-1:-1;;4206:52:5;4202:205;;-1:-1:-1;;;;;4273:19:5;;;;;;:11;:19;;;;;;;;4293:10;4273:31;;;;;;;;:41;-1:-1:-1;4273:41:5;4265:76;;;;-1:-1:-1;;;4265:76:5;;6610:2:6;4265:76:5;;;6592:21:6;6649:2;6629:18;;;6622:30;-1:-1:-1;;;6668:18:6;;;6661:52;6730:18;;4265:76:5;6582:172:6;4265:76:5;-1:-1:-1;;;;;4355:19:5;;;;;;:11;:19;;;;;;;;4375:10;4355:31;;;;;;;:41;;4390:6;;4355:19;:41;;4390:6;;4355:41;:::i;:::-;;;;-1:-1:-1;;4202:205:5;4424:40;4438:6;4446:9;4457:6;4424:13;:40::i;:::-;4417:47;;4086:385;;;;;;:::o;12840:175::-;12989:19;;12970:16;;12962:4;;-1:-1:-1;;;;;12962:4:5;;;12893:7;3420:18;;;:9;:18;;;;;;;12944:4;;;;;3420:18;;;;;12919:12;;12893:7;;12989:19;12970:16;3420:18;12919:30;;3420:18;12919:30;:::i;:::-;:48;;;;:::i;:::-;:67;;;;:::i;:::-;:89;;;;:::i;:::-;12912:96;;12840:175;:::o;13301:143::-;563:24:0;576:10;563:12;:24::i;:::-;555:48;;;;-1:-1:-1;;;555:48:0;;;;;;;:::i;:::-;13374:23:5::1;:32:::0;;-1:-1:-1;;13374:32:5::1;::::0;::::1;;::::0;;::::1;::::0;;;13415:25:::1;::::0;5176:41:6;;;13415:25:5::1;::::0;5164:2:6;5149:18;13415:25:5::1;;;;;;;;13301:143:::0;:::o;14038:86::-;563:24:0;576:10;563:12;:24::i;:::-;555:48;;;;-1:-1:-1;;;555:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14099:13:5::1;14115:5;14099:13:::0;;;:6:::1;:13;::::0;;;;:21;;-1:-1:-1;;14099:21:5::1;::::0;;14038:86::o;3803:120::-;3858:4;3881:35;3889:7;-1:-1:-1;;3881:7:5;:35::i;11642:142::-;563:24:0;576:10;563:12;:24::i;:::-;555:48;;;;-1:-1:-1;;;555:48:0;;;;;;;:::i;:::-;11741:4:5::1;11726:12;;:19;;;;:::i;:::-;11716:6;:29;;11708:38;;;::::0;::::1;;11756:12;:21:::0;11642:142::o;11787:133::-;563:24:0;576:10;563:12;:24::i;:::-;555:48;;;;-1:-1:-1;;;555:48:0;;;;;;;:::i;:::-;11882:4:5::1;11867:12;;:19;;;;:::i;:::-;11857:6;:29;;11849:38;;;::::0;::::1;;11891:16;:25:::0;11787:133::o;11926:118::-;563:24:0;576:10;563:12;:24::i;:::-;555:48;;;;-1:-1:-1;;;555:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12009:19:5;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;12009:28:5::1;::::0;::::1;;::::0;;;::::1;::::0;;11926:118::o;13164:134::-;563:24:0;576:10;563:12;:24::i;:::-;555:48;;;;-1:-1:-1;;;555:48:0;;;;;;;:::i;:::-;13234:20:5::1;:29:::0;;-1:-1:-1;;13234:29:5::1;::::0;::::1;;::::0;;::::1;::::0;;;13272:22:::1;::::0;5176:41:6;;;13272:22:5::1;::::0;5164:2:6;5149:18;13272:22:5::1;5131:92:6::0;13886:149:5;563:24:0;576:10;563:12;:24::i;:::-;555:48;;;;-1:-1:-1;;;555:48:0;;;;;;;:::i;:::-;13967:10:5::1;::::0;:17:::1;::::0;13980:4:::1;13967:17;:::i;:::-;13952:12;:32;13944:63;;;::::0;-1:-1:-1;;;13944:63:5;;8890:2:6;13944:63:5::1;::::0;::::1;8872:21:6::0;8929:2;8909:18;;;8902:30;-1:-1:-1;;;8948:18:6;;;8941:48;9006:18;;13944:63:5::1;8862:168:6::0;13944:63:5::1;-1:-1:-1::0;;;;;14011:13:5::1;;::::0;;;:6:::1;:13;::::0;;;;:20;;-1:-1:-1;;14011:20:5::1;14027:4;14011:20;::::0;;13886:149::o;3929:154::-;4009:4;4032:44;4046:10;4058:9;4069:6;4032:13;:44::i;10063:171::-;563:24:0;576:10;563:12;:24::i;:::-;555:48;;;;-1:-1:-1;;;555:48:0;;;;;;;:::i;:::-;10138:25:5::1;:32:::0;;-1:-1:-1;;;;;;10138:32:5::1;;-1:-1:-1::0;;;;;10138:32:5;;;::::1;::::0;;::::1;;::::0;;-1:-1:-1;10174:17:5;;;:11:::1;:17;::::0;;;;;;;:24;;-1:-1:-1;;10174:24:5;;::::1;-1:-1:-1::0;10174:24:5;;::::1;::::0;;;10202:15:::1;:21:::0;;;;;:28;;;;::::1;::::0;;::::1;::::0;;10063:171::o;13543:90::-;563:24:0;576:10;563:12;:24::i;:::-;555:48;;;;-1:-1:-1;;;555:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13607:11:5::1;13621:5;13607:11:::0;;;:5:::1;:11;::::0;;;;:19;;-1:-1:-1;;13607:19:5::1;::::0;;13543:90::o;12692:145::-;563:24:0;576:10;563:12;:24::i;:::-;555:48;;;;-1:-1:-1;;;555:48:0;;;;;;;:::i;:::-;12784:21:5::1;:46:::0;;-1:-1:-1;;;;;;12784:46:5::1;-1:-1:-1::0;;;;;12784:46:5;;;::::1;::::0;;;::::1;::::0;;12692:145::o;672:92:0:-;1040:4;1074:5;-1:-1:-1;;;;;1074:5:0;409:10;1063:16;393:38;;;;-1:-1:-1;;;393:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;731:19:0::1;;::::0;;;753:4:::1;731:19;::::0;;;;;;;:26;;-1:-1:-1;;731:26:0::1;::::0;;::::1;::::0;;672:92::o;13636:247:5:-;563:24:0;576:10;563:12;:24::i;:::-;555:48;;;;-1:-1:-1;;;555:48:0;;;;;;;:::i;:::-;13690:6:5::1;:22:::0;;-1:-1:-1;;;;;;13690:22:5::1;-1:-1:-1::0;;;;;13690:22:5;::::1;::::0;;::::1;::::0;;;13748:16:::1;::::0;;-1:-1:-1;;;13748:16:5;;;;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;13690:22;13748:16;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13736:40:5::1;;13777:6;;;;;;;;;-1:-1:-1::0;;;;;13777:6:5::1;-1:-1:-1::0;;;;;13777:11:5::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13736:70;::::0;-1:-1:-1;;;;;;13736:70:5::1;::::0;;;;;;-1:-1:-1;;;;;4345:15:6;;;13736:70:5::1;::::0;::::1;4327:34:6::0;13800:4:5::1;4377:18:6::0;;;4370:43;4262:18;;13736:70:5::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13722:11;:84:::0;;-1:-1:-1;;;;;;13722:84:5::1;-1:-1:-1::0;;;;;13722:84:5;;::::1;;::::0;;13836:4:::1;-1:-1:-1::0;13816:26:5;;;:11:::1;:26;::::0;;;;;;;13851:6:::1;::::0;;;::::1;13816:43:::0;;;;;;-1:-1:-1;;13816:63:5;;-1:-1:-1;13636:247:5:o;13447:86::-;563:24:0;576:10;563:12;:24::i;:::-;555:48;;;;-1:-1:-1;;;555:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13508:11:5::1;;::::0;;;:5:::1;:11;::::0;;;;:18;;-1:-1:-1;;13508:18:5::1;13522:4;13508:18;::::0;;13447:86::o;10585:95::-;563:24:0;576:10;563:12;:24::i;:::-;555:48;;;;-1:-1:-1;;;555:48:0;;;;;;;:::i;:::-;10652:13:5::1;:24:::0;10585:95::o;10471:111::-;563:24:0;576:10;563:12;:24::i;:::-;555:48;;;;-1:-1:-1;;;555:48:0;;;;;;;:::i;:::-;10529:11:5::1;:17:::0;;-1:-1:-1;;10529:17:5::1;::::0;::::1;;::::0;;::::1;::::0;;;10555:23:::1;::::0;5176:41:6;;;10555:23:5::1;::::0;5164:2:6;5149:18;10555:23:5::1;5131:92:6::0;835:95:0;1040:4;1074:5;-1:-1:-1;;;;;1074:5:0;409:10;1063:16;393:38;;;;-1:-1:-1;;;393:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;896:19:0::1;918:5;896:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;896:27:0::1;::::0;;835:95::o;1371:169::-;1040:4;1074:5;-1:-1:-1;;;;;1074:5:0;409:10;1063:16;393:38;;;;-1:-1:-1;;;393:38:0;;;;;;;:::i;:::-;1446:5:::1;:11:::0;;-1:-1:-1;;;;;;1446:11:0::1;-1:-1:-1::0;;;;;1446:11:0;::::1;::::0;;::::1;::::0;;1467:19;;;-1:-1:-1;1467:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;1467:26:0::1;::::0;;::::1;::::0;;;1508:25;;3837:51:6;;;1508:25:0::1;::::0;3810:18:6;1508:25:0::1;3792:102:6::0;12050:126:5;563:24:0;576:10;563:12;:24::i;:::-;555:48;;;;-1:-1:-1;;;555:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12137:23:5;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;12137:32:5::1;::::0;::::1;;::::0;;;::::1;::::0;;12050:126::o;9895:165::-;563:24:0;576:10;563:12;:24::i;:::-;555:48;;;;-1:-1:-1;;;555:48:0;;;;;;;:::i;:::-;9967:22:5::1;:29:::0;;-1:-1:-1;;;;;;9967:29:5::1;;-1:-1:-1::0;;;;;9967:29:5;;;::::1;::::0;;::::1;;::::0;;-1:-1:-1;10000:17:5;;;:11:::1;:17;::::0;;;;;;;:24;;-1:-1:-1;;10000:24:5;;::::1;-1:-1:-1::0;10000:24:5;;::::1;::::0;;;10028:15:::1;:21:::0;;;;;:28;;;;::::1;::::0;;::::1;::::0;;9895:165::o;1152:105:0:-;-1:-1:-1;;;;;1231:19:0;1208:4;1231:19;;;:14;:19;;;;;;;;;1152:105::o;4743:1326:5:-;4835:4;4862:1;4853:6;:10;4845:19;;;;;;4878:6;;;;;:45;;;4888:35;4905:6;4913:9;4888:16;:35::i;:::-;4874:124;;;4946:41;4961:6;4969:9;4980:6;4946:14;:41::i;:::-;4939:48;;;;4874:124;5008:39;5021:6;5029:9;5040:6;5008:12;:39::i;:::-;5062:16;:14;:16::i;:::-;5058:56;;;5094:9;:7;:9::i;:::-;11542:10;;:15;;;5128:39;;-1:-1:-1;5156:11:5;;-1:-1:-1;;;;;5143:24:5;;;5156:11;;5143:24;5128:39;5124:213;;;-1:-1:-1;;;;;5191:17:5;;5211:1;5191:17;;;:9;:17;;;;;;5183:30;;;;;;5245:5;;-1:-1:-1;;;;;5235:15:5;;;5245:5;;5235:15;5227:77;;;;-1:-1:-1;;;5227:77:5;;6961:2:6;5227:77:5;;;6943:21:6;7000:2;6980:18;;;6973:30;7039:34;7019:18;;;7012:62;-1:-1:-1;;;7090:18:6;;;7083:47;7147:19;;5227:77:5;6933:239:6;5227:77:5;5318:8;11620:12;11607:10;:25;11570:69;5318:8;-1:-1:-1;;;;;5345:14:5;;;;;;:6;:14;;;;;;;;;:35;;-1:-1:-1;;;;;;5363:17:5;;;;;;:6;:17;;;;;;;;5345:35;5341:132;;;5387:81;;-1:-1:-1;;;5387:81:5;;7727:2:6;5387:81:5;;;7709:21:6;7766:2;7746:18;;;7739:30;7805:34;7785:18;;;7778:62;7876:34;7856:18;;;7849:62;-1:-1:-1;;;7927:19:6;;;7920:38;7975:19;;5387:81:5;7699:301:6;5341:132:5;-1:-1:-1;;;;;5495:17:5;;;;;;:9;:17;;;;;;5485:27;;;5477:60;;;;-1:-1:-1;;;5477:60:5;;8207:2:6;5477:60:5;;;8189:21:6;8246:2;8226:18;;;8219:30;-1:-1:-1;;;8265:18:6;;;8258:50;8325:18;;5477:60:5;8179:170:6;5477:60:5;-1:-1:-1;;;;;5547:17:5;;;;;;:9;:17;;;;;:27;;5568:6;;5547:17;:27;;5568:6;;5547:27;:::i;:::-;;;;-1:-1:-1;5585:22:5;;-1:-1:-1;5610:32:5;5624:6;5632:9;5610:13;:32::i;:::-;:78;;5682:6;5610:78;;;5645:34;5653:6;5661:9;5672:6;5645:7;:34::i;:::-;-1:-1:-1;;;;;5698:20:5;;;;;;:9;:20;;;;;:38;;5585:103;;-1:-1:-1;5585:103:5;;5698:20;;;:38;;5585:103;;5698:38;:::i;:::-;;;;-1:-1:-1;;5868:20:5;;;;5864:55;;;5895:19;:17;:19::i;:::-;5926:23;;;;5922:61;;;5956:22;:20;:22::i;:::-;6015:9;-1:-1:-1;;;;;5998:43:5;6007:6;-1:-1:-1;;;;;5998:43:5;-1:-1:-1;;;;;;;;;;;6026:14:5;5998:43;;;;9939:25:6;;9927:2;9912:18;;9894:76;5998:43:5;;;;;;;;-1:-1:-1;6058:4:5;;4743:1326;-1:-1:-1;;;;4743:1326:5:o;4474:266::-;4585:22;;4558:4;;-1:-1:-1;;;;;4575:32:5;;;4585:22;;;;;4575:32;;:74;;-1:-1:-1;4624:25:5;;-1:-1:-1;;;;;4614:35:5;;;4624:25;;;;;4614:35;4575:74;:116;;;-1:-1:-1;4669:22:5;;-1:-1:-1;;;;;4656:35:5;;;4669:22;;;;;4656:35;4575:116;:161;;;-1:-1:-1;;4711:25:5;;;;;-1:-1:-1;;;;;4711:25:5;;;4698:38;;;;4474:266;-1:-1:-1;4474:266:5:o;6072:318::-;-1:-1:-1;;;;;6193:17:5;;6165:4;6193:17;;;:9;:17;;;;;;6183:27;;;6175:60;;;;-1:-1:-1;;;6175:60:5;;8207:2:6;6175:60:5;;;8189:21:6;8246:2;8226:18;;;8219:30;-1:-1:-1;;;8265:18:6;;;8258:50;8325:18;;6175:60:5;8179:170:6;6175:60:5;-1:-1:-1;;;;;6245:17:5;;;;;;:9;:17;;;;;:27;;6266:6;;6245:17;:27;;6266:6;;6245:27;:::i;:::-;;;;-1:-1:-1;;;;;;;6282:20:5;;;;;;:9;:20;;;;;:30;;6306:6;;6282:20;:30;;6306:6;;6282:30;:::i;:::-;;;;;;;;6344:9;-1:-1:-1;;;;;6327:35:5;6336:6;-1:-1:-1;;;;;6327:35:5;-1:-1:-1;;;;;;;;;;;6355:6:5;6327:35;;;;9939:25:6;;9927:2;9912:18;;9894:76;6327:35:5;;;;;;;;-1:-1:-1;6379:4:5;6072:318;;;;;:::o;6393:673::-;6508:12;;6498:6;:22;;:49;;;-1:-1:-1;;;;;;6524:23:5;;;;;;:15;:23;;;;;;;;6498:49;:104;;;-1:-1:-1;;;;;;6551:26:5;;;;;;:15;:26;;;;;;;;:51;;;;-1:-1:-1;6591:11:5;;-1:-1:-1;;;;;6581:21:5;;;6591:11;;6581:21;6551:51;6490:134;;;;-1:-1:-1;;;6490:134:5;;6264:2:6;6490:134:5;;;6246:21:6;6303:2;6283:18;;;6276:30;-1:-1:-1;;;6322:18:6;;;6315:47;6379:18;;6490:134:5;6236:167:6;6490:134:5;6665:5;;-1:-1:-1;;;;;6655:15:5;;;6665:5;;6655:15;;;;:49;;-1:-1:-1;6699:5:5;;-1:-1:-1;;;;;6686:18:5;;;6699:5;;6686:18;;6655:49;:92;;;;-1:-1:-1;;;;;;6721:26:5;;;;;;:15;:26;;;;;;;;6720:27;6655:92;:125;;;;-1:-1:-1;6776:4:5;;-1:-1:-1;;;;;6763:17:5;;;6776:4;;6763:17;;6655:125;:159;;;;-1:-1:-1;6810:4:5;;-1:-1:-1;;;;;6797:17:5;;;6810:4;;6797:17;;6655:159;:200;;;;-1:-1:-1;6844:11:5;;-1:-1:-1;;;;;6831:24:5;;;6844:11;;6831:24;;6655:200;:243;;;;-1:-1:-1;;;;;;6872:26:5;;6893:4;6872:26;;6655:243;6651:409;;;-1:-1:-1;;;;;3420:18:5;;6923;3420;;;:9;:18;;;;;;6944:29;;6967:6;;6944:29;:::i;:::-;6923:50;;7009:16;;6995:10;:30;;6987:62;;;;-1:-1:-1;;;6987:62:5;;7379:2:6;6987:62:5;;;7361:21:6;7418:2;7398:18;;;7391:30;-1:-1:-1;;;7437:18:6;;;7430:49;7496:18;;6987:62:5;7351:169:6;6987:62:5;6651:409;;6393:673;;;:::o;10240:228::-;10289:4;10312:10;11542;;:15;;;11476:88;10312:10;:42;;;;-1:-1:-1;10343:11:5;;-1:-1:-1;;;;;10343:11:5;10329:10;:25;;10312:42;:65;;;;-1:-1:-1;10371:6:5;;;;10370:7;10312:65;:92;;;;-1:-1:-1;10393:11:5;;;;10312:92;:149;;;;-1:-1:-1;;10448:13:5;;10438:4;10420:24;;;;:9;:24;;;;;;:41;;;10240:228::o;10683:790::-;1858:6;:13;;-1:-1:-1;;1858:13:5;1867:4;1858:13;;;10756::::1;::::0;1858:6;;10756:17:::1;::::0;10772:1:::1;::::0;10756:17:::1;:::i;:::-;10857:16;::::0;;10871:1:::1;10857:16:::0;;;;;::::1;::::0;;10730:43;;-1:-1:-1;10801:21:5::1;::::0;10777::::1;::::0;10857:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10857:16:5::1;10833:40;;10901:4;10883;10888:1;10883:7;;;;;;-1:-1:-1::0;;;10883:7:5::1;;;;;;;;;-1:-1:-1::0;;;;;10883:23:5;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10926:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;10926:13:5;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;10883:7;;10926:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10916:4;10921:1;10916:7;;;;;;-1:-1:-1::0;;;10916:7:5::1;;;;;;;;;-1:-1:-1::0;;;;;10916:23:5;;::::1;:7;::::0;;::::1;::::0;;;;;:23;10950:6:::1;::::0;:185:::1;::::0;-1:-1:-1;;;10950:185:5;;:6;::::1;::::0;:57:::1;::::0;:185:::1;::::0;11021:15;;10950:6:::1;::::0;11065:4;;11091::::1;::::0;11110:15:::1;::::0;10950:185:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11146:17;11190:13;11166:21;:37;;;;:::i;:::-;11146:57:::0;-1:-1:-1;11213:26:5::1;11242:13;11254:1;11146:57:::0;11242:13:::1;:::i;:::-;11260:6;::::0;11364:21:::1;::::0;11260:149:::1;::::0;-1:-1:-1;;;11260:149:5;;11322:4:::1;11260:149;::::0;::::1;4765:34:6::0;4815:18;;;4808:34;;;11260:6:5::1;4858:18:6::0;;;4851:34;;;4901:18;;;4894:34;-1:-1:-1;;;;;11364:21:5;;::::1;4944:19:6::0;;;4937:44;11390:15:5::1;4997:19:6::0;;;4990:35;11213:42:5;;-1:-1:-1;11260:6:5::1;::::0;:22:::1;::::0;11213:42;;4699:19:6;;11260:149:5::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11418:48:5::1;::::0;;11137:25:6;;;11193:2;11178:18;;11171:34;;;11418:48:5::1;::::0;-1:-1:-1;11110:18:6;11418:48:5::1;;;;;;;-1:-1:-1::0;;1880:6:5;:14;;-1:-1:-1;;1880:14:5;;;-1:-1:-1;;;10683:790:5:o;7273:302::-;-1:-1:-1;;;;;7374:19:5;;7354:4;7374:19;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;7397:22:5;;;;;;:11;:22;;;;;;;;7374:45;:60;;;-1:-1:-1;11542:10:5;;:15;7374:60;7370:88;;;-1:-1:-1;7448:5:5;7441:12;;7370:88;-1:-1:-1;;;;;7466:13:5;;;;;;:5;:13;;;;;;;;:21;;:13;:21;;:49;;-1:-1:-1;;;;;;7491:16:5;;;;;;:5;:16;;;;;;;;:24;;:16;:24;7466:49;7462:76;;;-1:-1:-1;7529:4:5;7522:11;;7462:76;-1:-1:-1;7555:13:5;;;;7273:302;;;;:::o;7679:1621::-;7765:7;7783:10;11542;;:15;;;11476:88;7783:10;7778:40;;-1:-1:-1;7807:6:5;7800:13;;7778:40;7821:14;7843:10;7861:13;7882:16;7939;;7925:10;;7910:12;:25;;;;:::i;:::-;:45;7906:1331;;8001:14;;7997:18;;:1;:18;:::i;:::-;7980:14;;7971:23;;:6;:23;:::i;:::-;:44;;;;:::i;:::-;8047:4;8029:24;;;;:9;:24;;;;;:34;;7962:53;;-1:-1:-1;7962:53:5;;8029:24;;;:34;;7962:53;;8029:34;:::i;:::-;;;;-1:-1:-1;8068:16:5;;-1:-1:-1;8078:6:5;8068:16;;:::i;:::-;-1:-1:-1;;;;;8093:13:5;;;;;;:5;:13;;;;;;8068:16;;-1:-1:-1;8093:13:5;;8089:55;;;-1:-1:-1;;;;;8114:17:5;;;;;;:6;:17;;;;;:24;;-1:-1:-1;;8114:24:5;8134:4;8114:24;;;8089:55;8153:39;;9939:25:6;;;8178:4:5;;-1:-1:-1;;;;;8153:39:5;;;-1:-1:-1;;;;;;;;;;;8153:39:5;9927:2:6;9912:18;8153:39:5;;;;;;;7906:1331;;;8295:12;;:16;8291:171;;8352:14;;8337:12;;8328:21;;:6;:21;:::i;:::-;:38;;;;:::i;:::-;8390:4;8372:24;;;;:9;:24;;;;;:34;;8319:47;;-1:-1:-1;8319:47:5;;8372:24;;;:34;;8319:47;;8372:34;:::i;:::-;;;;-1:-1:-1;;8417:39:5;;9939:25:6;;;8442:4:5;;-1:-1:-1;;;;;8417:39:5;;;-1:-1:-1;;;;;;;;;;;8417:39:5;9927:2:6;9912:18;8417:39:5;;;;;;;8291:171;8555:7;;:11;8551:131;;8598:14;;8588:7;;8579:16;;:6;:16;:::i;:::-;:33;;;;:::i;:::-;8628:4;;-1:-1:-1;;;;;8628:4:5;8618:15;;;;:9;:15;;;;;:21;;8574:38;;-1:-1:-1;8574:38:5;;8618:15;;;:21;;8574:38;;8618:21;:::i;:::-;;;;-1:-1:-1;;8667:4:5;;8650:26;;9939:25:6;;;-1:-1:-1;;;;;8667:4:5;;;;8650:26;;;-1:-1:-1;;;;;;;;;;;8650:26:5;9927:2:6;9912:18;8650:26:5;;;;;;;8551:131;8858:10;;:14;8854:177;;8910:14;;8897:10;;8888:19;;:6;:19;:::i;:::-;:36;;;;:::i;:::-;8940:4;;-1:-1:-1;;;;;8940:4:5;8930:15;;;;:9;:15;;;;;:24;;8880:44;;-1:-1:-1;8880:44:5;;8930:15;;;:24;;8880:44;;8930:24;:::i;:::-;;;;;;;;8980:5;8960:16;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;9013:4:5;;8996:29;;9939:25:6;;;-1:-1:-1;;;;;9013:4:5;;;;8996:29;;;-1:-1:-1;;;;;;;;;;;8996:29:5;9927:2:6;9912:18;8996:29:5;;;;;;;8854:177;9039:13;;:17;9035:198;;9100:14;;9084:13;;9075:22;;:6;:22;:::i;:::-;:39;;;;:::i;:::-;9130:4;;-1:-1:-1;;;;;9130:4:5;9120:15;;;;:9;:15;;;;;:27;;9064:50;;-1:-1:-1;9064:50:5;;9120:15;;;:27;;9064:50;;9120:27;:::i;:::-;;;;;;;;9176:8;9153:19;;:31;;;;;;;:::i;:::-;;;;-1:-1:-1;;9212:4:5;;9195:32;;9939:25:6;;;-1:-1:-1;;;;;9212:4:5;;;;9195:32;;;-1:-1:-1;;;;;;;;;;;9195:32:5;9927:2:6;9912:18;9195:32:5;;;;;;;9035:198;9285:8;9277:5;9272:2;9254:15;9263:6;9254;:15;:::i;:::-;:20;;;;:::i;:::-;:28;;;;:::i;:::-;:39;;;;:::i;:::-;9247:46;7679:1621;-1:-1:-1;;;;;;;;7679:1621:5:o;9303:281::-;9349:22;;;;;-1:-1:-1;;;;;9349:22:5;:36;9345:236;;9411:16;;9402:4;;-1:-1:-1;;;;;9402:4:5;9392:15;;;;:9;:15;;;;;:35;;:15;;;:35;;9411:16;;9392:35;:::i;:::-;;;;-1:-1:-1;;9469:16:5;;9442:22;;;;;-1:-1:-1;;;;;9442:22:5;9432:33;;;;:9;:33;;;;;:53;;:33;;;:53;;9469:16;;9432:53;:::i;:::-;;;;-1:-1:-1;;9510:22:5;;9504:4;;9534:16;;9495:56;;9939:25:6;;;9510:22:5;;;;-1:-1:-1;;;;;9510:22:5;;;;9504:4;;;-1:-1:-1;;;;;;;;;;;9495:56:5;9927:2:6;9912:18;9495:56:5;;;;;;;9575:1;9556:16;:20;9345:236;9303:281::o;9587:305::-;9636:25;;;;;-1:-1:-1;;;;;9636:25:5;:39;9632:257;;9701:19;;9692:4;;-1:-1:-1;;;;;9692:4:5;9682:15;;;;:9;:15;;;;;:38;;:15;;;:38;;9701:19;;9682:38;:::i;:::-;;;;-1:-1:-1;;9765:19:5;;9735:25;;;;;-1:-1:-1;;;;;9735:25:5;9725:36;;;;:9;:36;;;;;:59;;:36;;;:59;;9765:19;;9725:59;:::i;:::-;;;;-1:-1:-1;;9809:25:5;;9803:4;;9836:19;;9794:62;;9939:25:6;;;9809::5;;;;-1:-1:-1;;;;;9809:25:5;;;;9803:4;;;-1:-1:-1;;;;;;;;;;;9794:62:5;9927:2:6;9912:18;9794:62:5;;;;;;;9883:1;9861:19;:23;9587:305::o;14:160:6:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;977:398::-;1045:6;1053;1106:2;1094:9;1085:7;1081:23;1077:32;1074:2;;;1127:6;1119;1112:22;1074:2;1171:9;1158:23;1190:31;1215:5;1190:31;:::i;:::-;1240:5;-1:-1:-1;1297:2:6;1282:18;;1269:32;1310:33;1269:32;1310:33;:::i;:::-;1362:7;1352:17;;;1064:311;;;;;:::o;1380:466::-;1457:6;1465;1473;1526:2;1514:9;1505:7;1501:23;1497:32;1494:2;;;1547:6;1539;1532:22;1494:2;1591:9;1578:23;1610:31;1635:5;1610:31;:::i;:::-;1660:5;-1:-1:-1;1717:2:6;1702:18;;1689:32;1730:33;1689:32;1730:33;:::i;:::-;1484:362;;1782:7;;-1:-1:-1;;;1836:2:6;1821:18;;;;1808:32;;1484:362::o;1851:325::-;1916:6;1924;1977:2;1965:9;1956:7;1952:23;1948:32;1945:2;;;1998:6;1990;1983:22;1945:2;2042:9;2029:23;2061:31;2086:5;2061:31;:::i;:::-;2111:5;-1:-1:-1;2135:35:6;2166:2;2151:18;;2135:35;:::i;:::-;2125:45;;1935:241;;;;;:::o;2181:325::-;2249:6;2257;2310:2;2298:9;2289:7;2285:23;2281:32;2278:2;;;2331:6;2323;2316:22;2278:2;2375:9;2362:23;2394:31;2419:5;2394:31;:::i;:::-;2444:5;2496:2;2481:18;;;;2468:32;;-1:-1:-1;;;2268:238:6:o;2511:190::-;2567:6;2620:2;2608:9;2599:7;2595:23;2591:32;2588:2;;;2641:6;2633;2626:22;2588:2;2669:26;2685:9;2669:26;:::i;2706:190::-;2765:6;2818:2;2806:9;2797:7;2793:23;2789:32;2786:2;;;2839:6;2831;2824:22;2786:2;-1:-1:-1;2867:23:6;;2776:120;-1:-1:-1;2776:120:6:o;2901:316::-;2989:6;2997;3005;3058:2;3046:9;3037:7;3033:23;3029:32;3026:2;;;3079:6;3071;3064:22;3026:2;3113:9;3107:16;3097:26;;3163:2;3152:9;3148:18;3142:25;3132:35;;3207:2;3196:9;3192:18;3186:25;3176:35;;3016:201;;;;;:::o;3222:464::-;3317:6;3325;3333;3341;3349;3402:3;3390:9;3381:7;3377:23;3373:33;3370:2;;;3424:6;3416;3409:22;3370:2;-1:-1:-1;;3452:23:6;;;3522:2;3507:18;;3494:32;;-1:-1:-1;3573:2:6;3558:18;;3545:32;;3624:2;3609:18;;3596:32;;-1:-1:-1;3675:3:6;3660:19;3647:33;;-1:-1:-1;3360:326:6;-1:-1:-1;3360:326:6:o;5454:603::-;5566:4;5595:2;5624;5613:9;5606:21;5656:6;5650:13;5699:6;5694:2;5683:9;5679:18;5672:34;5724:4;5737:140;5751:6;5748:1;5745:13;5737:140;;;5846:14;;;5842:23;;5836:30;5812:17;;;5831:2;5808:26;5801:66;5766:10;;5737:140;;;5895:6;5892:1;5889:13;5886:2;;;5965:4;5960:2;5951:6;5940:9;5936:22;5932:31;5925:45;5886:2;-1:-1:-1;6041:2:6;6020:15;-1:-1:-1;;6016:29:6;6001:45;;;;6048:2;5997:54;;5575:482;-1:-1:-1;;;5575:482:6:o;8354:329::-;8556:2;8538:21;;;8595:1;8575:18;;;8568:29;-1:-1:-1;;;8628:2:6;8613:18;;8606:36;8674:2;8659:18;;8528:155::o;9453:335::-;9655:2;9637:21;;;9694:2;9674:18;;;9667:30;-1:-1:-1;;;9728:2:6;9713:18;;9706:41;9779:2;9764:18;;9627:161::o;9975:983::-;10237:4;10285:3;10274:9;10270:19;10316:6;10305:9;10298:25;10342:2;10380:6;10375:2;10364:9;10360:18;10353:34;10423:3;10418:2;10407:9;10403:18;10396:31;10447:6;10482;10476:13;10513:6;10505;10498:22;10551:3;10540:9;10536:19;10529:26;;10590:2;10582:6;10578:15;10564:29;;10611:4;10624:195;10638:6;10635:1;10632:13;10624:195;;;10703:13;;-1:-1:-1;;;;;10699:39:6;10687:52;;10794:15;;;;10759:12;;;;10735:1;10653:9;10624:195;;;-1:-1:-1;;;;;;;10875:32:6;;;;10870:2;10855:18;;10848:60;-1:-1:-1;;;10939:3:6;10924:19;10917:35;10836:3;10246:712;-1:-1:-1;;;10246:712:6:o;11405:128::-;11445:3;11476:1;11472:6;11469:1;11466:13;11463:2;;;11482:18;;:::i;:::-;-1:-1:-1;11518:9:6;;11453:80::o;11538:217::-;11578:1;11604;11594:2;;-1:-1:-1;;;11629:31:6;;11683:4;11680:1;11673:15;11711:4;11636:1;11701:15;11594:2;-1:-1:-1;11740:9:6;;11584:171::o;11760:168::-;11800:7;11866:1;11862;11858:6;11854:14;11851:1;11848:21;11843:1;11836:9;11829:17;11825:45;11822:2;;;11873:18;;:::i;:::-;-1:-1:-1;11913:9:6;;11812:116::o;11933:125::-;11973:4;12001:1;11998;11995:8;11992:2;;;12006:18;;:::i;:::-;-1:-1:-1;12043:9:6;;11982:76::o;12063:127::-;12124:10;12119:3;12115:20;12112:1;12105:31;12155:4;12152:1;12145:15;12179:4;12176:1;12169:15;12195:131;-1:-1:-1;;;;;12270:31:6;;12260:42;;12250:2;;12316:1;12313;12306:12

Swarm Source

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