ETH Price: $3,962.12 (+3.05%)

Token

ERC-20: noPulse (nPLSZ)
 

Overview

Max Total Supply

1,000,000,000 nPLSZ

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000000002 nPLSZ

Value
$0.00
0x81e3D1E513A498fe00f4cDc52C23c5ef93D897AE
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:
nopulse

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-12
*/

/**

__________________      _____ __________.______________
\____    /\_____  \    /     \\______   \   \_   _____/
  /     /  /   |   \  /  \ /  \|    |  _/   ||    __)_ 
 /     /_ /    |    \/    Y    \    |   \   ||        \
/_______ \\_______  /\____|__  /______  /___/_______  /
        \/        \/         \/       \/            \/ 

no website...
no telegram...
noPULSE...

.. for now

is this project dead?  No, theres just noPulse

Dont get bitten, anon

noPulse(nPLSZ)

Twitter: @noPulse_ZOMBIE

stealth launch
will burn liquidity at 100k MC
will renounce after liquid burn and final taxes of 0/2 are set.

taxes start at 5%/5% for buy/sell (with 10% fear penalty on early sells)
drop to to 5/5 (fear penalty dropped)
drop to 0/2 (all to liquid once floor is set)
*/

// Verified using https://dapp.tools

// SPDX-License-Identifier: MIT
pragma solidity 0.8.15;

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

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

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

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

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

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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


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

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    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;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

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

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {
    /**
     * @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) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @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 sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @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) {
        // 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 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts 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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts 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 mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}



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

    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);

        // Solidity already throws when dividing by 0.
        return a / b;
    }

    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }


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

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


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

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

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

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

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

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

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public marketingWallet;
    address public tokenDevelopmentAddress;
    
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    
    bool private gasLimitActive = true;
    uint256 private constant gasPriceLimit = 70 * 1 gwei; // do not allow over x gwei for launch
    
     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevelopmentFee;
    
    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevelopmentFee;
    
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDevelopment;

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

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

    event BuyBackTriggered(uint256 amount);
    
    event OwnerForcedSwapBack(uint256 timestamp);

    constructor() ERC20("noPulse", "nPLSZ") {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        
        uint256 _buyMarketingFee = 3;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevelopmentFee = 2;


        uint256 _sellMarketingFee = 3;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevelopmentFee = 12;

        
        uint256 totalSupply = 1 * 1e9 * 1e18;
        
        maxWallet = totalSupply * 2 / 100; // 2% Max wallet
        maxTransactionAmount = totalSupply * 1 / 100; // 1% maxTransactionAmountTxn
        swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap wallet

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevelopmentFee = _buyDevelopmentFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee;
        
        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevelopmentFee = _sellDevelopmentFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee;
        
    	marketingWallet = address(msg.sender); // set as marketing wallet
        tokenDevelopmentAddress = address(msg.sender); // set as Development wallet (before Development is available)

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {

  	}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }
    
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        gasLimitActive = false;
        transferDelayEnabled = false;
        return true;
    }
    
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }


    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum > (totalSupply() * 1 / 100)/1e18, "Cannot set maxWallet lower than 1%");
        maxWallet = newNum * (10**18);
    }
    
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
    
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
    
    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _DevelopmentFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevelopmentFee = _DevelopmentFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee;
        require(buyTotalFees <= 5, "Must keep fees at 5% or less");
    }
    
    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _DevelopmentFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevelopmentFee = _DevelopmentFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee;
        require(sellTotalFees <= 15, "Must keep fees at 15% or less");
    }

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

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

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }
    

    function updateDevelopmentAddress(address newWallet) external onlyOwner {
        emit DevelopmentWalletUpdated(newWallet, tokenDevelopmentAddress);
        tokenDevelopmentAddress = newWallet;
    }
    

    function isExcludedFromFees(address account) external view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }
                
                // only use to prevent sniper buys in the first blocks.
                if (gasLimitActive && automatedMarketMakerPairs[from]) {
                    require(tx.gasprice <= gasPriceLimit, "Gas price exceeds limit.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
                 
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Unable to exceed Max Wallet");
                } 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Unable to exceed Max Wallet");
                }
            }
        }
        
		uint256 contractTokenBalance = balanceOf(address(this));
        
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapping = false;
        }
        
        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDevelopment += fees * sellDevelopmentFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount.mul(buyTotalFees).div(100);
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDevelopment += fees * buyDevelopmentFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
            }
            
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
        	
        	amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
        
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDevelopment;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        // prevent overly large contract sells.
        if(contractBalance >= swapTokensAtAmount * 5){
            contractBalance = swapTokensAtAmount * 5;
        }
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH); 
        
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        
        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
        uint256 ethForDevelopment = ethBalance.mul(tokensForDevelopment).div(totalTokensToSwap);
        
        
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDevelopment;
        
        
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDevelopment = 0;

        
        (bool success,) = address(tokenDevelopmentAddress).call{value: ethForDevelopment}("");
        
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
        
        (success,) = address(marketingWallet).call{value: address(this).balance}("");       
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"DevelopmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenDevelopmentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDevelopment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevelopmentFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevelopmentAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevelopmentFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506001600b60036101000a81548160ff0219169083151502179055506001600d60006101000a81548160ff0219169083151502179055503480156200009857600080fd5b506040518060400160405280600781526020017f6e6f50756c7365000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f6e504c535a000000000000000000000000000000000000000000000000000000815250816003908162000116919062000dee565b50806004908162000128919062000dee565b50505060006200013d6200064160201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002088160016200064960201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000288573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ae919062000f3f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000316573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033c919062000f3f565b6040518363ffffffff1660e01b81526004016200035b92919062000f82565b6020604051808303816000875af11580156200037b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a1919062000f3f565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003e960a05160016200064960201b60201c565b620003fe60a05160016200074660201b60201c565b60006003905060008060029050600060039050600080600c905060006b033b2e3c9fd0803ce8000000905060646002826200043a919062000fde565b6200044691906200106e565b600a8190555060646001826200045d919062000fde565b6200046991906200106e565b60088190555061271060058262000481919062000fde565b6200048d91906200106e565b60098190555086600f819055508560108190555084601181905550601154601054600f54620004bd9190620010a6565b620004c99190620010a6565b600e81905550836013819055508260148190555081601581905550601554601454601354620004f99190620010a6565b620005059190620010a6565b60128190555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005af620005a1620007e760201b60201c565b60016200081160201b60201c565b620005c23060016200081160201b60201c565b620005d761dead60016200081160201b60201c565b620005f9620005eb620007e760201b60201c565b60016200064960201b60201c565b6200060c3060016200064960201b60201c565b6200062161dead60016200064960201b60201c565b6200063333826200095e60201b60201c565b5050505050505050620012d2565b600033905090565b620006596200064160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620006eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006e29062001164565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008216200064160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008b3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008aa9062001164565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009529190620011a3565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009c79062001210565b60405180910390fd5b620009e46000838362000b0c60201b60201c565b62000a008160025462000b1160201b620022941790919060201c565b60028190555062000a5e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b1160201b620022941790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b00919062001243565b60405180910390a35050565b505050565b600080828462000b229190620010a6565b90508381101562000b6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b6190620012b0565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bf657607f821691505b60208210810362000c0c5762000c0b62000bae565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c767fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c37565b62000c82868362000c37565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000ccf62000cc962000cc38462000c9a565b62000ca4565b62000c9a565b9050919050565b6000819050919050565b62000ceb8362000cae565b62000d0362000cfa8262000cd6565b84845462000c44565b825550505050565b600090565b62000d1a62000d0b565b62000d2781848462000ce0565b505050565b5b8181101562000d4f5762000d4360008262000d10565b60018101905062000d2d565b5050565b601f82111562000d9e5762000d688162000c12565b62000d738462000c27565b8101602085101562000d83578190505b62000d9b62000d928562000c27565b83018262000d2c565b50505b505050565b600082821c905092915050565b600062000dc36000198460080262000da3565b1980831691505092915050565b600062000dde838362000db0565b9150826002028217905092915050565b62000df98262000b74565b67ffffffffffffffff81111562000e155762000e1462000b7f565b5b62000e21825462000bdd565b62000e2e82828562000d53565b600060209050601f83116001811462000e66576000841562000e51578287015190505b62000e5d858262000dd0565b86555062000ecd565b601f19841662000e768662000c12565b60005b8281101562000ea05784890151825560018201915060208501945060208101905062000e79565b8683101562000ec0578489015162000ebc601f89168262000db0565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f078262000eda565b9050919050565b62000f198162000efa565b811462000f2557600080fd5b50565b60008151905062000f398162000f0e565b92915050565b60006020828403121562000f585762000f5762000ed5565b5b600062000f688482850162000f28565b91505092915050565b62000f7c8162000efa565b82525050565b600060408201905062000f99600083018562000f71565b62000fa8602083018462000f71565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000feb8262000c9a565b915062000ff88362000c9a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001034576200103362000faf565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200107b8262000c9a565b9150620010888362000c9a565b9250826200109b576200109a6200103f565b5b828204905092915050565b6000620010b38262000c9a565b9150620010c08362000c9a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620010f857620010f762000faf565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200114c60208362001103565b9150620011598262001114565b602082019050919050565b600060208201905081810360008301526200117f816200113d565b9050919050565b60008115159050919050565b6200119d8162001186565b82525050565b6000602082019050620011ba600083018462001192565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620011f8601f8362001103565b91506200120582620011c0565b602082019050919050565b600060208201905081810360008301526200122b81620011e9565b9050919050565b6200123d8162000c9a565b82525050565b60006020820190506200125a600083018462001232565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001298601b8362001103565b9150620012a58262001260565b602082019050919050565b60006020820190508181036000830152620012cb8162001289565b9050919050565b60805160a0516150036200133060003960008181610ef001528181611892015261292b015260008181610d15015281816128d3015281816139f601528181613ad701528181613afe01528181613b9a0152613bc101526150036000f3fe6080604052600436106103035760003560e01c80638da5cb5b11610190578063c18bc195116100dc578063e2f4560511610095578063f11a24d31161006f578063f11a24d314610b99578063f2fde38b14610bc4578063f637434214610bed578063f8b45b0514610c185761030a565b8063e2f4560514610b18578063e884f26014610b43578063ef8700e514610b6e5761030a565b8063c18bc19514610a06578063c876d0b914610a2f578063c8c8ebe414610a5a578063d85ba06314610a85578063da64192114610ab0578063dd62ed3e14610adb5761030a565b8063a9059cbb11610149578063b62496f511610123578063b62496f51461094c578063bbc0c74214610989578063c0246668146109b4578063c17b5b8c146109dd5761030a565b8063a9059cbb146108bb578063aacebbe3146108f8578063b2041411146109215761030a565b80638da5cb5b146107ab57806392136913146107d6578063924de9b71461080157806395d89b411461082a5780639a7a23d614610855578063a457c2d71461087e5761030a565b80634a62bb651161024f578063715018a61161020857806375f0a874116101e257806375f0a874146107155780637bce5a04146107405780638095d5641461076b5780638a8c523c146107945761030a565b8063715018a6146106aa578063751039fc146106c15780637571336a146106ec5761030a565b80634a62bb65146105865780634fbee193146105b1578063694d9d17146105ee5780636a486a8e146106175780636ddd17131461064257806370a082311461066d5761030a565b80631a8145bb116102bc57806327c8f8351161029657806327c8f835146104c8578063313ce567146104f3578063395093511461051e57806349bd5a5e1461055b5761030a565b80631a8145bb146104355780631f3fed8f1461046057806323b872dd1461048b5761030a565b806306fdde031461030f578063095ea7b31461033a57806310d5de53146103775780631694505e146103b457806318160ddd146103df57806318a94cf11461040a5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c43565b6040516103319190613d71565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613e2c565b610cd5565b60405161036e9190613e87565b60405180910390f35b34801561038357600080fd5b5061039e60048036038101906103999190613ea2565b610cf3565b6040516103ab9190613e87565b60405180910390f35b3480156103c057600080fd5b506103c9610d13565b6040516103d69190613f2e565b60405180910390f35b3480156103eb57600080fd5b506103f4610d37565b6040516104019190613f58565b60405180910390f35b34801561041657600080fd5b5061041f610d41565b60405161042c9190613f58565b60405180910390f35b34801561044157600080fd5b5061044a610d47565b6040516104579190613f58565b60405180910390f35b34801561046c57600080fd5b50610475610d4d565b6040516104829190613f58565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad9190613f73565b610d53565b6040516104bf9190613e87565b60405180910390f35b3480156104d457600080fd5b506104dd610e2c565b6040516104ea9190613fd5565b60405180910390f35b3480156104ff57600080fd5b50610508610e32565b604051610515919061400c565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190613e2c565b610e3b565b6040516105529190613e87565b60405180910390f35b34801561056757600080fd5b50610570610eee565b60405161057d9190613fd5565b60405180910390f35b34801561059257600080fd5b5061059b610f12565b6040516105a89190613e87565b60405180910390f35b3480156105bd57600080fd5b506105d860048036038101906105d39190613ea2565b610f25565b6040516105e59190613e87565b60405180910390f35b3480156105fa57600080fd5b5061061560048036038101906106109190613ea2565b610f7b565b005b34801561062357600080fd5b5061062c6110d2565b6040516106399190613f58565b60405180910390f35b34801561064e57600080fd5b506106576110d8565b6040516106649190613e87565b60405180910390f35b34801561067957600080fd5b50610694600480360381019061068f9190613ea2565b6110eb565b6040516106a19190613f58565b60405180910390f35b3480156106b657600080fd5b506106bf611133565b005b3480156106cd57600080fd5b506106d661128b565b6040516106e39190613e87565b60405180910390f35b3480156106f857600080fd5b50610713600480360381019061070e9190614053565b61137c565b005b34801561072157600080fd5b5061072a61146e565b6040516107379190613fd5565b60405180910390f35b34801561074c57600080fd5b50610755611494565b6040516107629190613f58565b60405180910390f35b34801561077757600080fd5b50610792600480360381019061078d9190614093565b61149a565b005b3480156107a057600080fd5b506107a96115b4565b005b3480156107b757600080fd5b506107c0611683565b6040516107cd9190613fd5565b60405180910390f35b3480156107e257600080fd5b506107eb6116ad565b6040516107f89190613f58565b60405180910390f35b34801561080d57600080fd5b50610828600480360381019061082391906140e6565b6116b3565b005b34801561083657600080fd5b5061083f611767565b60405161084c9190613d71565b60405180910390f35b34801561086157600080fd5b5061087c60048036038101906108779190614053565b6117f9565b005b34801561088a57600080fd5b506108a560048036038101906108a09190613e2c565b61192c565b6040516108b29190613e87565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd9190613e2c565b6119f9565b6040516108ef9190613e87565b60405180910390f35b34801561090457600080fd5b5061091f600480360381019061091a9190613ea2565b611a17565b005b34801561092d57600080fd5b50610936611b6e565b6040516109439190613f58565b60405180910390f35b34801561095857600080fd5b50610973600480360381019061096e9190613ea2565b611b74565b6040516109809190613e87565b60405180910390f35b34801561099557600080fd5b5061099e611b94565b6040516109ab9190613e87565b60405180910390f35b3480156109c057600080fd5b506109db60048036038101906109d69190614053565b611ba7565b005b3480156109e957600080fd5b50610a0460048036038101906109ff9190614093565b611ce7565b005b348015610a1257600080fd5b50610a2d6004803603810190610a289190614113565b611e01565b005b348015610a3b57600080fd5b50610a44611f29565b604051610a519190613e87565b60405180910390f35b348015610a6657600080fd5b50610a6f611f3c565b604051610a7c9190613f58565b60405180910390f35b348015610a9157600080fd5b50610a9a611f42565b604051610aa79190613f58565b60405180910390f35b348015610abc57600080fd5b50610ac5611f48565b604051610ad29190613fd5565b60405180910390f35b348015610ae757600080fd5b50610b026004803603810190610afd9190614140565b611f6e565b604051610b0f9190613f58565b60405180910390f35b348015610b2457600080fd5b50610b2d611ff5565b604051610b3a9190613f58565b60405180910390f35b348015610b4f57600080fd5b50610b58611ffb565b604051610b659190613e87565b60405180910390f35b348015610b7a57600080fd5b50610b836120b6565b604051610b909190613f58565b60405180910390f35b348015610ba557600080fd5b50610bae6120bc565b604051610bbb9190613f58565b60405180910390f35b348015610bd057600080fd5b50610beb6004803603810190610be69190613ea2565b6120c2565b005b348015610bf957600080fd5b50610c02612288565b604051610c0f9190613f58565b60405180910390f35b348015610c2457600080fd5b50610c2d61228e565b604051610c3a9190613f58565b60405180910390f35b606060038054610c52906141af565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7e906141af565b8015610ccb5780601f10610ca057610100808354040283529160200191610ccb565b820191906000526020600020905b815481529060010190602001808311610cae57829003601f168201915b5050505050905090565b6000610ce9610ce26122f2565b84846122fa565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60155481565b60175481565b60165481565b6000610d608484846124c3565b610e2184610d6c6122f2565b610e1c85604051806060016040528060288152602001614f8160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dd26122f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131c89092919063ffffffff16565b6122fa565b600190509392505050565b61dead81565b60006012905090565b6000610ee4610e486122f2565b84610edf8560016000610e596122f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229490919063ffffffff16565b6122fa565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610f836122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611012576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110099061422c565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f94cc1498503be9a145caf3e96f856665f29cf9b26c7179a93fbe1c1e5f56a0fd60405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61113b6122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c19061422c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006112956122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b9061422c565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506000600b60036101000a81548160ff0219169083151502179055506000600d60006101000a81548160ff0219169083151502179055506001905090565b6113846122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a9061422c565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6114a26122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611531576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115289061422c565b60405180910390fd5b82600f819055508160108190555080601181905550601154601054600f54611559919061427b565b611563919061427b565b600e819055506005600e5411156115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a69061431d565b60405180910390fd5b505050565b6115bc6122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461164b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116429061422c565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6116bb6122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117419061422c565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b606060048054611776906141af565b80601f01602080910402602001604051908101604052809291908181526020018280546117a2906141af565b80156117ef5780601f106117c4576101008083540402835291602001916117ef565b820191906000526020600020905b8154815290600101906020018083116117d257829003601f168201915b5050505050905090565b6118016122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611890576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118879061422c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361191e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611915906143af565b60405180910390fd5b611928828261322c565b5050565b60006119ef6119396122f2565b846119ea85604051806060016040528060258152602001614fa960259139600160006119636122f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131c89092919063ffffffff16565b6122fa565b6001905092915050565b6000611a0d611a066122f2565b84846124c3565b6001905092915050565b611a1f6122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa59061422c565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b601b6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611baf6122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c359061422c565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611cdb9190613e87565b60405180910390a25050565b611cef6122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d759061422c565b60405180910390fd5b826013819055508160148190555080601581905550601554601454601354611da6919061427b565b611db0919061427b565b601281905550600f6012541115611dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df39061441b565b60405180910390fd5b505050565b611e096122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8f9061422c565b60405180910390fd5b670de0b6b3a764000060646001611ead610d37565b611eb7919061443b565b611ec191906144c4565b611ecb91906144c4565b8111611f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0390614567565b60405180910390fd5b670de0b6b3a764000081611f20919061443b565b600a8190555050565b600d60009054906101000a900460ff1681565b60085481565b600e5481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60006120056122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208b9061422c565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b60185481565b60105481565b6120ca6122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612159576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121509061422c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bf906145f9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b600a5481565b60008082846122a3919061427b565b9050838110156122e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122df90614665565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612369576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612360906146f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cf90614789565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124b69190613f58565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612532576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125299061481b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612598906148ad565b60405180910390fd5b600081036125ba576125b5838360006132cd565b6131c3565b600b60009054906101000a900460ff1615612ceb576125d7611683565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126455750612615611683565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561267e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126b8575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126d15750600560149054906101000a900460ff16155b15612cea57600b60019054906101000a900460ff166127cb57601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061278b5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6127ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c190614919565b60405180910390fd5b5b600b60039054906101000a900460ff1680156128305750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561287e5764104c533c003a111561287d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287490614985565b60405180910390fd5b5b600d60009054906101000a900460ff1615612a465761289b611683565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561292257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561297a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612a455743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f790614a3d565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ae95750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b4b57600a54612afa836110eb565b82612b05919061427b565b1115612b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3d90614aa9565b60405180910390fd5b612ce9565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612bee5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c3d57600854811115612c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2f90614b3b565b60405180910390fd5b612ce8565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ce757600a54612c9a836110eb565b82612ca5919061427b565b1115612ce6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cdd90614aa9565b60405180910390fd5b5b5b5b5b5b6000612cf6306110eb565b905060006009548210159050808015612d1b5750600b60029054906101000a900460ff165b8015612d345750600560149054906101000a900460ff16155b8015612d8a5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612de05750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e365750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e7a576001600560146101000a81548160ff021916908315150217905550612e5e613560565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f305750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f3a57600090505b600081156131b357601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f9d57506000601254115b1561306a57612fca6064612fbc6012548861384490919063ffffffff16565b6138be90919063ffffffff16565b905060125460145482612fdd919061443b565b612fe791906144c4565b60176000828254612ff8919061427b565b9250508190555060125460155482613010919061443b565b61301a91906144c4565b6018600082825461302b919061427b565b9250508190555060125460135482613043919061443b565b61304d91906144c4565b6016600082825461305e919061427b565b9250508190555061318f565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130c557506000600e54115b1561318e576130f260646130e4600e548861384490919063ffffffff16565b6138be90919063ffffffff16565b9050600e5460105482613105919061443b565b61310f91906144c4565b60176000828254613120919061427b565b92505081905550600e5460115482613138919061443b565b61314291906144c4565b60186000828254613153919061427b565b92505081905550600e54600f548261316b919061443b565b61317591906144c4565b60166000828254613186919061427b565b925050819055505b5b60008111156131a4576131a38730836132cd565b5b80856131b09190614b5b565b94505b6131be8787876132cd565b505050505b505050565b6000838311158290613210576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132079190613d71565b60405180910390fd5b506000838561321f9190614b5b565b9050809150509392505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361333c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133339061481b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a2906148ad565b60405180910390fd5b6133b6838383613908565b61342181604051806060016040528060268152602001614f5b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131c89092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134b4816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229490919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135539190613f58565b60405180910390a3505050565b600061356b306110eb565b90506000601854601654601754613582919061427b565b61358c919061427b565b9050600082148061359d5750600081145b156135a9575050613842565b60056009546135b8919061443b565b82106135d05760056009546135cd919061443b565b91505b6000600282601754856135e3919061443b565b6135ed91906144c4565b6135f791906144c4565b9050600061360e828561390d90919063ffffffff16565b9050600047905061361e82613957565b6000613633824761390d90919063ffffffff16565b9050600061365e866136506016548561384490919063ffffffff16565b6138be90919063ffffffff16565b905060006136898761367b6018548661384490919063ffffffff16565b6138be90919063ffffffff16565b9050600081838561369a9190614b5b565b6136a49190614b5b565b90506000601781905550600060168190555060006018819055506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161370690614bc0565b60006040518083038185875af1925050503d8060008114613743576040519150601f19603f3d011682016040523d82523d6000602084013e613748565b606091505b5050905060008811801561375c5750600082115b156137a95761376b8883613b94565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56187836017546040516137a093929190614bd5565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516137ef90614bc0565b60006040518083038185875af1925050503d806000811461382c576040519150601f19603f3d011682016040523d82523d6000602084013e613831565b606091505b505080915050505050505050505050505b565b600080830361385657600090506138b8565b60008284613864919061443b565b905082848261387391906144c4565b146138b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138aa90614c7e565b60405180910390fd5b809150505b92915050565b600061390083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c75565b905092915050565b505050565b600061394f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506131c8565b905092915050565b6000600267ffffffffffffffff81111561397457613973614c9e565b5b6040519080825280602002602001820160405280156139a25781602001602082028036833780820191505090505b50905030816000815181106139ba576139b9614ccd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a839190614d11565b81600181518110613a9757613a96614ccd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613afc307f0000000000000000000000000000000000000000000000000000000000000000846122fa565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613b5e959493929190614e37565b600060405180830381600087803b158015613b7857600080fd5b505af1158015613b8c573d6000803e3d6000fd5b505050505050565b613bbf307f0000000000000000000000000000000000000000000000000000000000000000846122fa565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613c09611683565b426040518863ffffffff1660e01b8152600401613c2b96959493929190614e91565b60606040518083038185885af1158015613c49573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613c6e9190614f07565b5050505050565b60008083118290613cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cb39190613d71565b60405180910390fd5b5060008385613ccb91906144c4565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d12578082015181840152602081019050613cf7565b83811115613d21576000848401525b50505050565b6000601f19601f8301169050919050565b6000613d4382613cd8565b613d4d8185613ce3565b9350613d5d818560208601613cf4565b613d6681613d27565b840191505092915050565b60006020820190508181036000830152613d8b8184613d38565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613dc382613d98565b9050919050565b613dd381613db8565b8114613dde57600080fd5b50565b600081359050613df081613dca565b92915050565b6000819050919050565b613e0981613df6565b8114613e1457600080fd5b50565b600081359050613e2681613e00565b92915050565b60008060408385031215613e4357613e42613d93565b5b6000613e5185828601613de1565b9250506020613e6285828601613e17565b9150509250929050565b60008115159050919050565b613e8181613e6c565b82525050565b6000602082019050613e9c6000830184613e78565b92915050565b600060208284031215613eb857613eb7613d93565b5b6000613ec684828501613de1565b91505092915050565b6000819050919050565b6000613ef4613eef613eea84613d98565b613ecf565b613d98565b9050919050565b6000613f0682613ed9565b9050919050565b6000613f1882613efb565b9050919050565b613f2881613f0d565b82525050565b6000602082019050613f436000830184613f1f565b92915050565b613f5281613df6565b82525050565b6000602082019050613f6d6000830184613f49565b92915050565b600080600060608486031215613f8c57613f8b613d93565b5b6000613f9a86828701613de1565b9350506020613fab86828701613de1565b9250506040613fbc86828701613e17565b9150509250925092565b613fcf81613db8565b82525050565b6000602082019050613fea6000830184613fc6565b92915050565b600060ff82169050919050565b61400681613ff0565b82525050565b60006020820190506140216000830184613ffd565b92915050565b61403081613e6c565b811461403b57600080fd5b50565b60008135905061404d81614027565b92915050565b6000806040838503121561406a57614069613d93565b5b600061407885828601613de1565b92505060206140898582860161403e565b9150509250929050565b6000806000606084860312156140ac576140ab613d93565b5b60006140ba86828701613e17565b93505060206140cb86828701613e17565b92505060406140dc86828701613e17565b9150509250925092565b6000602082840312156140fc576140fb613d93565b5b600061410a8482850161403e565b91505092915050565b60006020828403121561412957614128613d93565b5b600061413784828501613e17565b91505092915050565b6000806040838503121561415757614156613d93565b5b600061416585828601613de1565b925050602061417685828601613de1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806141c757607f821691505b6020821081036141da576141d9614180565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614216602083613ce3565b9150614221826141e0565b602082019050919050565b6000602082019050818103600083015261424581614209565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061428682613df6565b915061429183613df6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156142c6576142c561424c565b5b828201905092915050565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b6000614307601c83613ce3565b9150614312826142d1565b602082019050919050565b60006020820190508181036000830152614336816142fa565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614399603983613ce3565b91506143a48261433d565b604082019050919050565b600060208201905081810360008301526143c88161438c565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614405601d83613ce3565b9150614410826143cf565b602082019050919050565b60006020820190508181036000830152614434816143f8565b9050919050565b600061444682613df6565b915061445183613df6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561448a5761448961424c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144cf82613df6565b91506144da83613df6565b9250826144ea576144e9614495565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b6000614551602283613ce3565b915061455c826144f5565b604082019050919050565b6000602082019050818103600083015261458081614544565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006145e3602683613ce3565b91506145ee82614587565b604082019050919050565b60006020820190508181036000830152614612816145d6565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061464f601b83613ce3565b915061465a82614619565b602082019050919050565b6000602082019050818103600083015261467e81614642565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006146e1602483613ce3565b91506146ec82614685565b604082019050919050565b60006020820190508181036000830152614710816146d4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614773602283613ce3565b915061477e82614717565b604082019050919050565b600060208201905081810360008301526147a281614766565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614805602583613ce3565b9150614810826147a9565b604082019050919050565b60006020820190508181036000830152614834816147f8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614897602383613ce3565b91506148a28261483b565b604082019050919050565b600060208201905081810360008301526148c68161488a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614903601683613ce3565b915061490e826148cd565b602082019050919050565b60006020820190508181036000830152614932816148f6565b9050919050565b7f4761732070726963652065786365656473206c696d69742e0000000000000000600082015250565b600061496f601883613ce3565b915061497a82614939565b602082019050919050565b6000602082019050818103600083015261499e81614962565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614a27604983613ce3565b9150614a32826149a5565b606082019050919050565b60006020820190508181036000830152614a5681614a1a565b9050919050565b7f556e61626c6520746f20657863656564204d61782057616c6c65740000000000600082015250565b6000614a93601b83613ce3565b9150614a9e82614a5d565b602082019050919050565b60006020820190508181036000830152614ac281614a86565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614b25603683613ce3565b9150614b3082614ac9565b604082019050919050565b60006020820190508181036000830152614b5481614b18565b9050919050565b6000614b6682613df6565b9150614b7183613df6565b925082821015614b8457614b8361424c565b5b828203905092915050565b600081905092915050565b50565b6000614baa600083614b8f565b9150614bb582614b9a565b600082019050919050565b6000614bcb82614b9d565b9150819050919050565b6000606082019050614bea6000830186613f49565b614bf76020830185613f49565b614c046040830184613f49565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c68602183613ce3565b9150614c7382614c0c565b604082019050919050565b60006020820190508181036000830152614c9781614c5b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614d0b81613dca565b92915050565b600060208284031215614d2757614d26613d93565b5b6000614d3584828501614cfc565b91505092915050565b6000819050919050565b6000614d63614d5e614d5984614d3e565b613ecf565b613df6565b9050919050565b614d7381614d48565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614dae81613db8565b82525050565b6000614dc08383614da5565b60208301905092915050565b6000602082019050919050565b6000614de482614d79565b614dee8185614d84565b9350614df983614d95565b8060005b83811015614e2a578151614e118882614db4565b9750614e1c83614dcc565b925050600181019050614dfd565b5085935050505092915050565b600060a082019050614e4c6000830188613f49565b614e596020830187614d6a565b8181036040830152614e6b8186614dd9565b9050614e7a6060830185613fc6565b614e876080830184613f49565b9695505050505050565b600060c082019050614ea66000830189613fc6565b614eb36020830188613f49565b614ec06040830187614d6a565b614ecd6060830186614d6a565b614eda6080830185613fc6565b614ee760a0830184613f49565b979650505050505050565b600081519050614f0181613e00565b92915050565b600080600060608486031215614f2057614f1f613d93565b5b6000614f2e86828701614ef2565b9350506020614f3f86828701614ef2565b9250506040614f5086828701614ef2565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122019ab1ce130d76d85d94e014e67f7db42419ed485bd3ce1960999e21c8d9e2ea464736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106103035760003560e01c80638da5cb5b11610190578063c18bc195116100dc578063e2f4560511610095578063f11a24d31161006f578063f11a24d314610b99578063f2fde38b14610bc4578063f637434214610bed578063f8b45b0514610c185761030a565b8063e2f4560514610b18578063e884f26014610b43578063ef8700e514610b6e5761030a565b8063c18bc19514610a06578063c876d0b914610a2f578063c8c8ebe414610a5a578063d85ba06314610a85578063da64192114610ab0578063dd62ed3e14610adb5761030a565b8063a9059cbb11610149578063b62496f511610123578063b62496f51461094c578063bbc0c74214610989578063c0246668146109b4578063c17b5b8c146109dd5761030a565b8063a9059cbb146108bb578063aacebbe3146108f8578063b2041411146109215761030a565b80638da5cb5b146107ab57806392136913146107d6578063924de9b71461080157806395d89b411461082a5780639a7a23d614610855578063a457c2d71461087e5761030a565b80634a62bb651161024f578063715018a61161020857806375f0a874116101e257806375f0a874146107155780637bce5a04146107405780638095d5641461076b5780638a8c523c146107945761030a565b8063715018a6146106aa578063751039fc146106c15780637571336a146106ec5761030a565b80634a62bb65146105865780634fbee193146105b1578063694d9d17146105ee5780636a486a8e146106175780636ddd17131461064257806370a082311461066d5761030a565b80631a8145bb116102bc57806327c8f8351161029657806327c8f835146104c8578063313ce567146104f3578063395093511461051e57806349bd5a5e1461055b5761030a565b80631a8145bb146104355780631f3fed8f1461046057806323b872dd1461048b5761030a565b806306fdde031461030f578063095ea7b31461033a57806310d5de53146103775780631694505e146103b457806318160ddd146103df57806318a94cf11461040a5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c43565b6040516103319190613d71565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613e2c565b610cd5565b60405161036e9190613e87565b60405180910390f35b34801561038357600080fd5b5061039e60048036038101906103999190613ea2565b610cf3565b6040516103ab9190613e87565b60405180910390f35b3480156103c057600080fd5b506103c9610d13565b6040516103d69190613f2e565b60405180910390f35b3480156103eb57600080fd5b506103f4610d37565b6040516104019190613f58565b60405180910390f35b34801561041657600080fd5b5061041f610d41565b60405161042c9190613f58565b60405180910390f35b34801561044157600080fd5b5061044a610d47565b6040516104579190613f58565b60405180910390f35b34801561046c57600080fd5b50610475610d4d565b6040516104829190613f58565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad9190613f73565b610d53565b6040516104bf9190613e87565b60405180910390f35b3480156104d457600080fd5b506104dd610e2c565b6040516104ea9190613fd5565b60405180910390f35b3480156104ff57600080fd5b50610508610e32565b604051610515919061400c565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190613e2c565b610e3b565b6040516105529190613e87565b60405180910390f35b34801561056757600080fd5b50610570610eee565b60405161057d9190613fd5565b60405180910390f35b34801561059257600080fd5b5061059b610f12565b6040516105a89190613e87565b60405180910390f35b3480156105bd57600080fd5b506105d860048036038101906105d39190613ea2565b610f25565b6040516105e59190613e87565b60405180910390f35b3480156105fa57600080fd5b5061061560048036038101906106109190613ea2565b610f7b565b005b34801561062357600080fd5b5061062c6110d2565b6040516106399190613f58565b60405180910390f35b34801561064e57600080fd5b506106576110d8565b6040516106649190613e87565b60405180910390f35b34801561067957600080fd5b50610694600480360381019061068f9190613ea2565b6110eb565b6040516106a19190613f58565b60405180910390f35b3480156106b657600080fd5b506106bf611133565b005b3480156106cd57600080fd5b506106d661128b565b6040516106e39190613e87565b60405180910390f35b3480156106f857600080fd5b50610713600480360381019061070e9190614053565b61137c565b005b34801561072157600080fd5b5061072a61146e565b6040516107379190613fd5565b60405180910390f35b34801561074c57600080fd5b50610755611494565b6040516107629190613f58565b60405180910390f35b34801561077757600080fd5b50610792600480360381019061078d9190614093565b61149a565b005b3480156107a057600080fd5b506107a96115b4565b005b3480156107b757600080fd5b506107c0611683565b6040516107cd9190613fd5565b60405180910390f35b3480156107e257600080fd5b506107eb6116ad565b6040516107f89190613f58565b60405180910390f35b34801561080d57600080fd5b50610828600480360381019061082391906140e6565b6116b3565b005b34801561083657600080fd5b5061083f611767565b60405161084c9190613d71565b60405180910390f35b34801561086157600080fd5b5061087c60048036038101906108779190614053565b6117f9565b005b34801561088a57600080fd5b506108a560048036038101906108a09190613e2c565b61192c565b6040516108b29190613e87565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd9190613e2c565b6119f9565b6040516108ef9190613e87565b60405180910390f35b34801561090457600080fd5b5061091f600480360381019061091a9190613ea2565b611a17565b005b34801561092d57600080fd5b50610936611b6e565b6040516109439190613f58565b60405180910390f35b34801561095857600080fd5b50610973600480360381019061096e9190613ea2565b611b74565b6040516109809190613e87565b60405180910390f35b34801561099557600080fd5b5061099e611b94565b6040516109ab9190613e87565b60405180910390f35b3480156109c057600080fd5b506109db60048036038101906109d69190614053565b611ba7565b005b3480156109e957600080fd5b50610a0460048036038101906109ff9190614093565b611ce7565b005b348015610a1257600080fd5b50610a2d6004803603810190610a289190614113565b611e01565b005b348015610a3b57600080fd5b50610a44611f29565b604051610a519190613e87565b60405180910390f35b348015610a6657600080fd5b50610a6f611f3c565b604051610a7c9190613f58565b60405180910390f35b348015610a9157600080fd5b50610a9a611f42565b604051610aa79190613f58565b60405180910390f35b348015610abc57600080fd5b50610ac5611f48565b604051610ad29190613fd5565b60405180910390f35b348015610ae757600080fd5b50610b026004803603810190610afd9190614140565b611f6e565b604051610b0f9190613f58565b60405180910390f35b348015610b2457600080fd5b50610b2d611ff5565b604051610b3a9190613f58565b60405180910390f35b348015610b4f57600080fd5b50610b58611ffb565b604051610b659190613e87565b60405180910390f35b348015610b7a57600080fd5b50610b836120b6565b604051610b909190613f58565b60405180910390f35b348015610ba557600080fd5b50610bae6120bc565b604051610bbb9190613f58565b60405180910390f35b348015610bd057600080fd5b50610beb6004803603810190610be69190613ea2565b6120c2565b005b348015610bf957600080fd5b50610c02612288565b604051610c0f9190613f58565b60405180910390f35b348015610c2457600080fd5b50610c2d61228e565b604051610c3a9190613f58565b60405180910390f35b606060038054610c52906141af565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7e906141af565b8015610ccb5780601f10610ca057610100808354040283529160200191610ccb565b820191906000526020600020905b815481529060010190602001808311610cae57829003601f168201915b5050505050905090565b6000610ce9610ce26122f2565b84846122fa565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60155481565b60175481565b60165481565b6000610d608484846124c3565b610e2184610d6c6122f2565b610e1c85604051806060016040528060288152602001614f8160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dd26122f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131c89092919063ffffffff16565b6122fa565b600190509392505050565b61dead81565b60006012905090565b6000610ee4610e486122f2565b84610edf8560016000610e596122f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229490919063ffffffff16565b6122fa565b6001905092915050565b7f000000000000000000000000cf92f3591e56577405e7dd46117f38d3752bf8b181565b600b60009054906101000a900460ff1681565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610f836122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611012576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110099061422c565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f94cc1498503be9a145caf3e96f856665f29cf9b26c7179a93fbe1c1e5f56a0fd60405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61113b6122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c19061422c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006112956122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b9061422c565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506000600b60036101000a81548160ff0219169083151502179055506000600d60006101000a81548160ff0219169083151502179055506001905090565b6113846122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a9061422c565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6114a26122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611531576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115289061422c565b60405180910390fd5b82600f819055508160108190555080601181905550601154601054600f54611559919061427b565b611563919061427b565b600e819055506005600e5411156115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a69061431d565b60405180910390fd5b505050565b6115bc6122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461164b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116429061422c565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6116bb6122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117419061422c565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b606060048054611776906141af565b80601f01602080910402602001604051908101604052809291908181526020018280546117a2906141af565b80156117ef5780601f106117c4576101008083540402835291602001916117ef565b820191906000526020600020905b8154815290600101906020018083116117d257829003601f168201915b5050505050905090565b6118016122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611890576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118879061422c565b60405180910390fd5b7f000000000000000000000000cf92f3591e56577405e7dd46117f38d3752bf8b173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361191e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611915906143af565b60405180910390fd5b611928828261322c565b5050565b60006119ef6119396122f2565b846119ea85604051806060016040528060258152602001614fa960259139600160006119636122f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131c89092919063ffffffff16565b6122fa565b6001905092915050565b6000611a0d611a066122f2565b84846124c3565b6001905092915050565b611a1f6122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa59061422c565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b601b6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611baf6122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c359061422c565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611cdb9190613e87565b60405180910390a25050565b611cef6122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d759061422c565b60405180910390fd5b826013819055508160148190555080601581905550601554601454601354611da6919061427b565b611db0919061427b565b601281905550600f6012541115611dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df39061441b565b60405180910390fd5b505050565b611e096122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8f9061422c565b60405180910390fd5b670de0b6b3a764000060646001611ead610d37565b611eb7919061443b565b611ec191906144c4565b611ecb91906144c4565b8111611f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0390614567565b60405180910390fd5b670de0b6b3a764000081611f20919061443b565b600a8190555050565b600d60009054906101000a900460ff1681565b60085481565b600e5481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60006120056122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208b9061422c565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b60185481565b60105481565b6120ca6122f2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612159576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121509061422c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bf906145f9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b600a5481565b60008082846122a3919061427b565b9050838110156122e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122df90614665565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612369576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612360906146f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cf90614789565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124b69190613f58565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612532576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125299061481b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612598906148ad565b60405180910390fd5b600081036125ba576125b5838360006132cd565b6131c3565b600b60009054906101000a900460ff1615612ceb576125d7611683565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126455750612615611683565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561267e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126b8575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126d15750600560149054906101000a900460ff16155b15612cea57600b60019054906101000a900460ff166127cb57601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061278b5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6127ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c190614919565b60405180910390fd5b5b600b60039054906101000a900460ff1680156128305750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561287e5764104c533c003a111561287d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287490614985565b60405180910390fd5b5b600d60009054906101000a900460ff1615612a465761289b611683565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561292257507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561297a57507f000000000000000000000000cf92f3591e56577405e7dd46117f38d3752bf8b173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612a455743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f790614a3d565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ae95750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b4b57600a54612afa836110eb565b82612b05919061427b565b1115612b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3d90614aa9565b60405180910390fd5b612ce9565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612bee5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c3d57600854811115612c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2f90614b3b565b60405180910390fd5b612ce8565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ce757600a54612c9a836110eb565b82612ca5919061427b565b1115612ce6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cdd90614aa9565b60405180910390fd5b5b5b5b5b5b6000612cf6306110eb565b905060006009548210159050808015612d1b5750600b60029054906101000a900460ff165b8015612d345750600560149054906101000a900460ff16155b8015612d8a5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612de05750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e365750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e7a576001600560146101000a81548160ff021916908315150217905550612e5e613560565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f305750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f3a57600090505b600081156131b357601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f9d57506000601254115b1561306a57612fca6064612fbc6012548861384490919063ffffffff16565b6138be90919063ffffffff16565b905060125460145482612fdd919061443b565b612fe791906144c4565b60176000828254612ff8919061427b565b9250508190555060125460155482613010919061443b565b61301a91906144c4565b6018600082825461302b919061427b565b9250508190555060125460135482613043919061443b565b61304d91906144c4565b6016600082825461305e919061427b565b9250508190555061318f565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130c557506000600e54115b1561318e576130f260646130e4600e548861384490919063ffffffff16565b6138be90919063ffffffff16565b9050600e5460105482613105919061443b565b61310f91906144c4565b60176000828254613120919061427b565b92505081905550600e5460115482613138919061443b565b61314291906144c4565b60186000828254613153919061427b565b92505081905550600e54600f548261316b919061443b565b61317591906144c4565b60166000828254613186919061427b565b925050819055505b5b60008111156131a4576131a38730836132cd565b5b80856131b09190614b5b565b94505b6131be8787876132cd565b505050505b505050565b6000838311158290613210576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132079190613d71565b60405180910390fd5b506000838561321f9190614b5b565b9050809150509392505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361333c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133339061481b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a2906148ad565b60405180910390fd5b6133b6838383613908565b61342181604051806060016040528060268152602001614f5b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131c89092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134b4816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229490919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135539190613f58565b60405180910390a3505050565b600061356b306110eb565b90506000601854601654601754613582919061427b565b61358c919061427b565b9050600082148061359d5750600081145b156135a9575050613842565b60056009546135b8919061443b565b82106135d05760056009546135cd919061443b565b91505b6000600282601754856135e3919061443b565b6135ed91906144c4565b6135f791906144c4565b9050600061360e828561390d90919063ffffffff16565b9050600047905061361e82613957565b6000613633824761390d90919063ffffffff16565b9050600061365e866136506016548561384490919063ffffffff16565b6138be90919063ffffffff16565b905060006136898761367b6018548661384490919063ffffffff16565b6138be90919063ffffffff16565b9050600081838561369a9190614b5b565b6136a49190614b5b565b90506000601781905550600060168190555060006018819055506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161370690614bc0565b60006040518083038185875af1925050503d8060008114613743576040519150601f19603f3d011682016040523d82523d6000602084013e613748565b606091505b5050905060008811801561375c5750600082115b156137a95761376b8883613b94565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56187836017546040516137a093929190614bd5565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516137ef90614bc0565b60006040518083038185875af1925050503d806000811461382c576040519150601f19603f3d011682016040523d82523d6000602084013e613831565b606091505b505080915050505050505050505050505b565b600080830361385657600090506138b8565b60008284613864919061443b565b905082848261387391906144c4565b146138b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138aa90614c7e565b60405180910390fd5b809150505b92915050565b600061390083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c75565b905092915050565b505050565b600061394f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506131c8565b905092915050565b6000600267ffffffffffffffff81111561397457613973614c9e565b5b6040519080825280602002602001820160405280156139a25781602001602082028036833780820191505090505b50905030816000815181106139ba576139b9614ccd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a839190614d11565b81600181518110613a9757613a96614ccd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613afc307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846122fa565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613b5e959493929190614e37565b600060405180830381600087803b158015613b7857600080fd5b505af1158015613b8c573d6000803e3d6000fd5b505050505050565b613bbf307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846122fa565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613c09611683565b426040518863ffffffff1660e01b8152600401613c2b96959493929190614e91565b60606040518083038185885af1158015613c49573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613c6e9190614f07565b5050505050565b60008083118290613cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cb39190613d71565b60405180910390fd5b5060008385613ccb91906144c4565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d12578082015181840152602081019050613cf7565b83811115613d21576000848401525b50505050565b6000601f19601f8301169050919050565b6000613d4382613cd8565b613d4d8185613ce3565b9350613d5d818560208601613cf4565b613d6681613d27565b840191505092915050565b60006020820190508181036000830152613d8b8184613d38565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613dc382613d98565b9050919050565b613dd381613db8565b8114613dde57600080fd5b50565b600081359050613df081613dca565b92915050565b6000819050919050565b613e0981613df6565b8114613e1457600080fd5b50565b600081359050613e2681613e00565b92915050565b60008060408385031215613e4357613e42613d93565b5b6000613e5185828601613de1565b9250506020613e6285828601613e17565b9150509250929050565b60008115159050919050565b613e8181613e6c565b82525050565b6000602082019050613e9c6000830184613e78565b92915050565b600060208284031215613eb857613eb7613d93565b5b6000613ec684828501613de1565b91505092915050565b6000819050919050565b6000613ef4613eef613eea84613d98565b613ecf565b613d98565b9050919050565b6000613f0682613ed9565b9050919050565b6000613f1882613efb565b9050919050565b613f2881613f0d565b82525050565b6000602082019050613f436000830184613f1f565b92915050565b613f5281613df6565b82525050565b6000602082019050613f6d6000830184613f49565b92915050565b600080600060608486031215613f8c57613f8b613d93565b5b6000613f9a86828701613de1565b9350506020613fab86828701613de1565b9250506040613fbc86828701613e17565b9150509250925092565b613fcf81613db8565b82525050565b6000602082019050613fea6000830184613fc6565b92915050565b600060ff82169050919050565b61400681613ff0565b82525050565b60006020820190506140216000830184613ffd565b92915050565b61403081613e6c565b811461403b57600080fd5b50565b60008135905061404d81614027565b92915050565b6000806040838503121561406a57614069613d93565b5b600061407885828601613de1565b92505060206140898582860161403e565b9150509250929050565b6000806000606084860312156140ac576140ab613d93565b5b60006140ba86828701613e17565b93505060206140cb86828701613e17565b92505060406140dc86828701613e17565b9150509250925092565b6000602082840312156140fc576140fb613d93565b5b600061410a8482850161403e565b91505092915050565b60006020828403121561412957614128613d93565b5b600061413784828501613e17565b91505092915050565b6000806040838503121561415757614156613d93565b5b600061416585828601613de1565b925050602061417685828601613de1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806141c757607f821691505b6020821081036141da576141d9614180565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614216602083613ce3565b9150614221826141e0565b602082019050919050565b6000602082019050818103600083015261424581614209565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061428682613df6565b915061429183613df6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156142c6576142c561424c565b5b828201905092915050565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b6000614307601c83613ce3565b9150614312826142d1565b602082019050919050565b60006020820190508181036000830152614336816142fa565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614399603983613ce3565b91506143a48261433d565b604082019050919050565b600060208201905081810360008301526143c88161438c565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614405601d83613ce3565b9150614410826143cf565b602082019050919050565b60006020820190508181036000830152614434816143f8565b9050919050565b600061444682613df6565b915061445183613df6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561448a5761448961424c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144cf82613df6565b91506144da83613df6565b9250826144ea576144e9614495565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b6000614551602283613ce3565b915061455c826144f5565b604082019050919050565b6000602082019050818103600083015261458081614544565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006145e3602683613ce3565b91506145ee82614587565b604082019050919050565b60006020820190508181036000830152614612816145d6565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061464f601b83613ce3565b915061465a82614619565b602082019050919050565b6000602082019050818103600083015261467e81614642565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006146e1602483613ce3565b91506146ec82614685565b604082019050919050565b60006020820190508181036000830152614710816146d4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614773602283613ce3565b915061477e82614717565b604082019050919050565b600060208201905081810360008301526147a281614766565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614805602583613ce3565b9150614810826147a9565b604082019050919050565b60006020820190508181036000830152614834816147f8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614897602383613ce3565b91506148a28261483b565b604082019050919050565b600060208201905081810360008301526148c68161488a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614903601683613ce3565b915061490e826148cd565b602082019050919050565b60006020820190508181036000830152614932816148f6565b9050919050565b7f4761732070726963652065786365656473206c696d69742e0000000000000000600082015250565b600061496f601883613ce3565b915061497a82614939565b602082019050919050565b6000602082019050818103600083015261499e81614962565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614a27604983613ce3565b9150614a32826149a5565b606082019050919050565b60006020820190508181036000830152614a5681614a1a565b9050919050565b7f556e61626c6520746f20657863656564204d61782057616c6c65740000000000600082015250565b6000614a93601b83613ce3565b9150614a9e82614a5d565b602082019050919050565b60006020820190508181036000830152614ac281614a86565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614b25603683613ce3565b9150614b3082614ac9565b604082019050919050565b60006020820190508181036000830152614b5481614b18565b9050919050565b6000614b6682613df6565b9150614b7183613df6565b925082821015614b8457614b8361424c565b5b828203905092915050565b600081905092915050565b50565b6000614baa600083614b8f565b9150614bb582614b9a565b600082019050919050565b6000614bcb82614b9d565b9150819050919050565b6000606082019050614bea6000830186613f49565b614bf76020830185613f49565b614c046040830184613f49565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c68602183613ce3565b9150614c7382614c0c565b604082019050919050565b60006020820190508181036000830152614c9781614c5b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614d0b81613dca565b92915050565b600060208284031215614d2757614d26613d93565b5b6000614d3584828501614cfc565b91505092915050565b6000819050919050565b6000614d63614d5e614d5984614d3e565b613ecf565b613df6565b9050919050565b614d7381614d48565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614dae81613db8565b82525050565b6000614dc08383614da5565b60208301905092915050565b6000602082019050919050565b6000614de482614d79565b614dee8185614d84565b9350614df983614d95565b8060005b83811015614e2a578151614e118882614db4565b9750614e1c83614dcc565b925050600181019050614dfd565b5085935050505092915050565b600060a082019050614e4c6000830188613f49565b614e596020830187614d6a565b8181036040830152614e6b8186614dd9565b9050614e7a6060830185613fc6565b614e876080830184613f49565b9695505050505050565b600060c082019050614ea66000830189613fc6565b614eb36020830188613f49565b614ec06040830187614d6a565b614ecd6060830186614d6a565b614eda6080830185613fc6565b614ee760a0830184613f49565b979650505050505050565b600081519050614f0181613e00565b92915050565b600080600060608486031215614f2057614f1f613d93565b5b6000614f2e86828701614ef2565b9350506020614f3f86828701614ef2565b9250506040614f5086828701614ef2565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122019ab1ce130d76d85d94e014e67f7db42419ed485bd3ce1960999e21c8d9e2ea464736f6c634300080f0033

Deployed Bytecode Sourcemap

30153:15322:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8309:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10476:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31671:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30230:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9429:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31388:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31474;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31434;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11127:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30333:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9271:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11891:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30288:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30628:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38137:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37921:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31277:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30708:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9600:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22774:148;;;;;;;;;;;;;:::i;:::-;;35245:192;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35869:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30425:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31158;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36226:399;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35077:112;;;;;;;;;;;;;:::i;:::-;;22132:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31312:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36113:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8528:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37245:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12612:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9940:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37699:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31232:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31893:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30668:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37055:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36637:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35646:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31076:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30513:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31124:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30462:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10178:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30555:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35502:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31514:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31195:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23077:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31350:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30595:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8309:100;8363:13;8396:5;8389:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8309:100;:::o;10476:169::-;10559:4;10576:39;10585:12;:10;:12::i;:::-;10599:7;10608:6;10576:8;:39::i;:::-;10633:4;10626:11;;10476:169;;;;:::o;31671:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;30230:51::-;;;:::o;9429:108::-;9490:7;9517:12;;9510:19;;9429:108;:::o;31388:33::-;;;;:::o;31474:::-;;;;:::o;31434:::-;;;;:::o;11127:355::-;11267:4;11284:36;11294:6;11302:9;11313:6;11284:9;:36::i;:::-;11331:121;11340:6;11348:12;:10;:12::i;:::-;11362:89;11400:6;11362:89;;;;;;;;;;;;;;;;;:11;:19;11374:6;11362:19;;;;;;;;;;;;;;;:33;11382:12;:10;:12::i;:::-;11362:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11331:8;:121::i;:::-;11470:4;11463:11;;11127:355;;;;;:::o;30333:53::-;30379:6;30333:53;:::o;9271:93::-;9329:5;9354:2;9347:9;;9271:93;:::o;11891:218::-;11979:4;11996:83;12005:12;:10;:12::i;:::-;12019:7;12028:50;12067:10;12028:11;:25;12040:12;:10;:12::i;:::-;12028:25;;;;;;;;;;;;;;;:34;12054:7;12028:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11996:8;:83::i;:::-;12097:4;12090:11;;11891:218;;;;:::o;30288:38::-;;;:::o;30628:33::-;;;;;;;;;;;;;:::o;38137:127::-;38204:4;38228:19;:28;38248:7;38228:28;;;;;;;;;;;;;;;;;;;;;;;;;38221:35;;38137:127;;;:::o;37921:202::-;22354:12;:10;:12::i;:::-;22344:22;;:6;;;;;;;;;;;:22;;;22336:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38045:23:::1;;;;;;;;;;;38009:60;;38034:9;38009:60;;;;;;;;;;;;38106:9;38080:23;;:35;;;;;;;;;;;;;;;;;;37921:202:::0;:::o;31277:28::-;;;;:::o;30708:31::-;;;;;;;;;;;;;:::o;9600:127::-;9674:7;9701:9;:18;9711:7;9701:18;;;;;;;;;;;;;;;;9694:25;;9600:127;;;:::o;22774:148::-;22354:12;:10;:12::i;:::-;22344:22;;:6;;;;;;;;;;;:22;;;22336:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22881:1:::1;22844:40;;22865:6;;;;;;;;;;;22844:40;;;;;;;;;;;;22912:1;22895:6;;:19;;;;;;;;;;;;;;;;;;22774:148::o:0;35245:192::-;35297:4;22354:12;:10;:12::i;:::-;22344:22;;:6;;;;;;;;;;;:22;;;22336:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35330:5:::1;35313:14;;:22;;;;;;;;;;;;;;;;;;35363:5;35346:14;;:22;;;;;;;;;;;;;;;;;;35402:5;35379:20;;:28;;;;;;;;;;;;;;;;;;35425:4;35418:11;;35245:192:::0;:::o;35869:144::-;22354:12;:10;:12::i;:::-;22344:22;;:6;;;;;;;;;;;:22;;;22336:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36001:4:::1;35959:31;:39;35991:6;35959:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;35869:144:::0;;:::o;30425:30::-;;;;;;;;;;;;;:::o;31158:::-;;;;:::o;36226:399::-;22354:12;:10;:12::i;:::-;22344:22;;:6;;;;;;;;;;;:22;;;22336:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36368:13:::1;36350:15;:31;;;;36410:13;36392:15;:31;;;;36454:15;36434:17;:35;;;;36531:17;;36513:15;;36495;;:33;;;;:::i;:::-;:53;;;;:::i;:::-;36480:12;:68;;;;36583:1;36567:12;;:17;;36559:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;36226:399:::0;;;:::o;35077:112::-;22354:12;:10;:12::i;:::-;22344:22;;:6;;;;;;;;;;;:22;;;22336:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35148:4:::1;35132:13;;:20;;;;;;;;;;;;;;;;;;35177:4;35163:11;;:18;;;;;;;;;;;;;;;;;;35077:112::o:0;22132:79::-;22170:7;22197:6;;;;;;;;;;;22190:13;;22132:79;:::o;31312:31::-;;;;:::o;36113:101::-;22354:12;:10;:12::i;:::-;22344:22;;:6;;;;;;;;;;;:22;;;22336:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36199:7:::1;36185:11;;:21;;;;;;;;;;;;;;;;;;36113:101:::0;:::o;8528:104::-;8584:13;8617:7;8610:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8528:104;:::o;37245:246::-;22354:12;:10;:12::i;:::-;22344:22;;:6;;;;;;;;;;;:22;;;22336:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37354:13:::1;37346:21;;:4;:21;;::::0;37338:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;37442:41;37471:4;37477:5;37442:28;:41::i;:::-;37245:246:::0;;:::o;12612:269::-;12705:4;12722:129;12731:12;:10;:12::i;:::-;12745:7;12754:96;12793:15;12754:96;;;;;;;;;;;;;;;;;:11;:25;12766:12;:10;:12::i;:::-;12754:25;;;;;;;;;;;;;;;:34;12780:7;12754:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12722:8;:129::i;:::-;12869:4;12862:11;;12612:269;;;;:::o;9940:175::-;10026:4;10043:42;10053:12;:10;:12::i;:::-;10067:9;10078:6;10043:9;:42::i;:::-;10103:4;10096:11;;9940:175;;;;:::o;37699:208::-;22354:12;:10;:12::i;:::-;22344:22;;:6;;;;;;;;;;;:22;;;22336:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37836:15:::1;;;;;;;;;;;37793:59;;37816:18;37793:59;;;;;;;;;;;;37881:18;37863:15;;:36;;;;;;;;;;;;;;;;;;37699:208:::0;:::o;31232:32::-;;;;:::o;31893:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;30668:33::-;;;;;;;;;;;;;:::o;37055:182::-;22354:12;:10;:12::i;:::-;22344:22;;:6;;;;;;;;;;;:22;;;22336:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37171:8:::1;37140:19;:28;37160:7;37140:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;37211:7;37195:34;;;37220:8;37195:34;;;;;;:::i;:::-;;;;;;;;37055:182:::0;;:::o;36637:410::-;22354:12;:10;:12::i;:::-;22344:22;;:6;;;;;;;;;;;:22;;;22336:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36781:13:::1;36762:16;:32;;;;36824:13;36805:16;:32;;;;36869:15;36848:18;:36;;;;36949:18;;36930:16;;36911;;:35;;;;:::i;:::-;:56;;;;:::i;:::-;36895:13;:72;;;;37003:2;36986:13;;:19;;36978:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;36637:410:::0;;;:::o;35646:211::-;22354:12;:10;:12::i;:::-;22344:22;;:6;;;;;;;;;;;:22;;;22336:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35766:4:::1;35761:3;35757:1;35741:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:23;;;;:::i;:::-;35740:30;;;;:::i;:::-;35731:6;:39;35723:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;35842:6;35832;:17;;;;:::i;:::-;35820:9;:29;;;;35646:211:::0;:::o;31076:39::-;;;;;;;;;;;;;:::o;30513:35::-;;;;:::o;31124:27::-;;;;:::o;30462:38::-;;;;;;;;;;;;;:::o;10178:151::-;10267:7;10294:11;:18;10306:5;10294:18;;;;;;;;;;;;;;;:27;10313:7;10294:27;;;;;;;;;;;;;;;;10287:34;;10178:151;;;;:::o;30555:33::-;;;;:::o;35502:134::-;35562:4;22354:12;:10;:12::i;:::-;22344:22;;:6;;;;;;;;;;;:22;;;22336:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35601:5:::1;35578:20;;:28;;;;;;;;;;;;;;;;;;35624:4;35617:11;;35502:134:::0;:::o;31514:35::-;;;;:::o;31195:30::-;;;;:::o;23077:244::-;22354:12;:10;:12::i;:::-;22344:22;;:6;;;;;;;;;;;:22;;;22336:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23186:1:::1;23166:22;;:8;:22;;::::0;23158:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23276:8;23247:38;;23268:6;;;;;;;;;;;23247:38;;;;;;;;;;;;23305:8;23296:6;;:17;;;;;;;;;;;;;;;;;;23077:244:::0;:::o;31350:31::-;;;;:::o;30595:24::-;;;;:::o;17176:181::-;17234:7;17254:9;17270:1;17266;:5;;;;:::i;:::-;17254:17;;17295:1;17290;:6;;17282:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;17348:1;17341:8;;;17176:181;;;;:::o;945:98::-;998:7;1025:10;1018:17;;945:98;:::o;15798:380::-;15951:1;15934:19;;:5;:19;;;15926:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16032:1;16013:21;;:7;:21;;;16005:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16116:6;16086:11;:18;16098:5;16086:18;;;;;;;;;;;;;;;:27;16105:7;16086:27;;;;;;;;;;;;;;;:36;;;;16154:7;16138:32;;16147:5;16138:32;;;16163:6;16138:32;;;;;;:::i;:::-;;;;;;;;15798:380;;;:::o;38276:4295::-;38424:1;38408:18;;:4;:18;;;38400:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38501:1;38487:16;;:2;:16;;;38479:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;38578:1;38568:6;:11;38565:92;;38596:28;38612:4;38618:2;38622:1;38596:15;:28::i;:::-;38639:7;;38565:92;38680:14;;;;;;;;;;;38677:1982;;;38740:7;:5;:7::i;:::-;38732:15;;:4;:15;;;;:49;;;;;38774:7;:5;:7::i;:::-;38768:13;;:2;:13;;;;38732:49;:86;;;;;38816:1;38802:16;;:2;:16;;;;38732:86;:128;;;;;38853:6;38839:21;;:2;:21;;;;38732:128;:158;;;;;38882:8;;;;;;;;;;;38881:9;38732:158;38710:1938;;;38928:13;;;;;;;;;;;38924:148;;38973:19;:25;38993:4;38973:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;39002:19;:23;39022:2;39002:23;;;;;;;;;;;;;;;;;;;;;;;;;38973:52;38965:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;38924:148;39185:14;;;;;;;;;;;:49;;;;;39203:25;:31;39229:4;39203:31;;;;;;;;;;;;;;;;;;;;;;;;;39185:49;39181:163;;;30834:11;39267;:28;;39259:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;39181:163;39502:20;;;;;;;;;;;39498:423;;;39556:7;:5;:7::i;:::-;39550:13;;:2;:13;;;;:47;;;;;39581:15;39567:30;;:2;:30;;;;39550:47;:79;;;;;39615:13;39601:28;;:2;:28;;;;39550:79;39546:356;;;39707:12;39665:28;:39;39694:9;39665:39;;;;;;;;;;;;;;;;:54;39657:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;39866:12;39824:28;:39;39853:9;39824:39;;;;;;;;;;;;;;;:54;;;;39546:356;39498:423;39990:25;:31;40016:4;39990:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;40026:31;:35;40058:2;40026:35;;;;;;;;;;;;;;;;;;;;;;;;;40025:36;39990:71;39986:647;;;40120:9;;40103:13;40113:2;40103:9;:13::i;:::-;40094:6;:22;;;;:::i;:::-;:35;;40086:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;39986:647;;;40238:25;:29;40264:2;40238:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;40272:31;:37;40304:4;40272:37;;;;;;;;;;;;;;;;;;;;;;;;;40271:38;40238:71;40234:399;;;40352:20;;40342:6;:30;;40334:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;40234:399;;;40478:31;:35;40510:2;40478:35;;;;;;;;;;;;;;;;;;;;;;;;;40474:159;;40572:9;;40555:13;40565:2;40555:9;:13::i;:::-;40546:6;:22;;;;:::i;:::-;:35;;40538:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;40474:159;40234:399;39986:647;38710:1938;38677:1982;40673:28;40704:24;40722:4;40704:9;:24::i;:::-;40673:55;;40749:12;40788:18;;40764:20;:42;;40749:57;;40837:7;:35;;;;;40861:11;;;;;;;;;;;40837:35;:61;;;;;40890:8;;;;;;;;;;;40889:9;40837:61;:110;;;;;40916:25;:31;40942:4;40916:31;;;;;;;;;;;;;;;;;;;;;;;;;40915:32;40837:110;:153;;;;;40965:19;:25;40985:4;40965:25;;;;;;;;;;;;;;;;;;;;;;;;;40964:26;40837:153;:194;;;;;41008:19;:23;41028:2;41008:23;;;;;;;;;;;;;;;;;;;;;;;;;41007:24;40837:194;40819:338;;;41069:4;41058:8;;:15;;;;;;;;;;;;;;;;;;41102:10;:8;:10::i;:::-;41140:5;41129:8;;:16;;;;;;;;;;;;;;;;;;40819:338;41177:12;41193:8;;;;;;;;;;;41192:9;41177:24;;41302:19;:25;41322:4;41302:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;41331:19;:23;41351:2;41331:23;;;;;;;;;;;;;;;;;;;;;;;;;41302:52;41299:99;;;41381:5;41371:15;;41299:99;41418:12;41522:7;41519:999;;;41573:25;:29;41599:2;41573:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;41622:1;41606:13;;:17;41573:50;41569:780;;;41650:34;41680:3;41650:25;41661:13;;41650:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;41643:41;;41751:13;;41732:16;;41725:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;41703:18;;:61;;;;;;;:::i;:::-;;;;;;;;41835:13;;41814:18;;41807:4;:25;;;;:::i;:::-;:41;;;;:::i;:::-;41783:20;;:65;;;;;;;:::i;:::-;;;;;;;;41915:13;;41896:16;;41889:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;41867:18;;:61;;;;;;;:::i;:::-;;;;;;;;41569:780;;;41989:25;:31;42015:4;41989:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;42039:1;42024:12;;:16;41989:51;41986:363;;;42065:33;42094:3;42065:24;42076:12;;42065:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;42058:40;;42161:12;;42143:15;;42136:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;42114:18;;:59;;;;;;;:::i;:::-;;;;;;;;42243:12;;42223:17;;42216:4;:24;;;;:::i;:::-;:39;;;;:::i;:::-;42192:20;;:63;;;;;;;:::i;:::-;;;;;;;;42321:12;;42303:15;;42296:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;42274:18;;:59;;;;;;;:::i;:::-;;;;;;;;41986:363;41569:780;42387:1;42380:4;:8;42377:93;;;42412:42;42428:4;42442;42449;42412:15;:42::i;:::-;42377:93;42502:4;42492:14;;;;;:::i;:::-;;;41519:999;42530:33;42546:4;42552:2;42556:6;42530:15;:33::i;:::-;38389:4182;;;;38276:4295;;;;:::o;18079:192::-;18165:7;18198:1;18193;:6;;18201:12;18185:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18225:9;18241:1;18237;:5;;;;:::i;:::-;18225:17;;18262:1;18255:8;;;18079:192;;;;;:::o;37503:188::-;37620:5;37586:25;:31;37612:4;37586:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;37677:5;37643:40;;37671:4;37643:40;;;;;;;;;;;;37503:188;;:::o;13371:573::-;13529:1;13511:20;;:6;:20;;;13503:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13613:1;13592:23;;:9;:23;;;13584:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13668:47;13689:6;13697:9;13708:6;13668:20;:47::i;:::-;13748:71;13770:6;13748:71;;;;;;;;;;;;;;;;;:9;:17;13758:6;13748:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;13728:9;:17;13738:6;13728:17;;;;;;;;;;;;;;;:91;;;;13853:32;13878:6;13853:9;:20;13863:9;13853:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13830:9;:20;13840:9;13830:20;;;;;;;;;;;;;;;:55;;;;13918:9;13901:35;;13910:6;13901:35;;;13929:6;13901:35;;;;;;:::i;:::-;;;;;;;;13371:573;;;:::o;43713:1759::-;43752:23;43778:24;43796:4;43778:9;:24::i;:::-;43752:50;;43813:25;43883:20;;43862:18;;43841;;:39;;;;:::i;:::-;:62;;;;:::i;:::-;43813:90;;43946:1;43927:15;:20;:46;;;;43972:1;43951:17;:22;43927:46;43924:60;;;43976:7;;;;43924:60;44088:1;44067:18;;:22;;;;:::i;:::-;44048:15;:41;44045:112;;44144:1;44123:18;;:22;;;;:::i;:::-;44105:40;;44045:112;44226:23;44311:1;44291:17;44270:18;;44252:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;44226:86;;44323:26;44352:36;44372:15;44352;:19;;:36;;;;:::i;:::-;44323:65;;44409:25;44437:21;44409:49;;44471:36;44488:18;44471:16;:36::i;:::-;44529:18;44550:44;44576:17;44550:21;:25;;:44;;;;:::i;:::-;44529:65;;44615:23;44641:57;44680:17;44641:34;44656:18;;44641:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;44615:83;;44709:25;44737:59;44778:17;44737:36;44752:20;;44737:10;:14;;:36;;;;:::i;:::-;:40;;:59;;;;:::i;:::-;44709:87;;44827:23;44884:17;44866:15;44853:10;:28;;;;:::i;:::-;:48;;;;:::i;:::-;44827:74;;44953:1;44932:18;:22;;;;44986:1;44965:18;:22;;;;45021:1;44998:20;:24;;;;45046:12;45071:23;;;;;;;;;;;45063:37;;45108:17;45063:67;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45045:85;;;45172:1;45154:15;:19;:42;;;;;45195:1;45177:15;:19;45154:42;45151:210;;;45212:46;45225:15;45242;45212:12;:46::i;:::-;45278:71;45293:18;45313:15;45330:18;;45278:71;;;;;;;;:::i;:::-;;;;;;;;45151:210;45402:15;;;;;;;;;;;45394:29;;45431:21;45394:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45381:76;;;;;43741:1731;;;;;;;;;;43713:1759;:::o;18530:471::-;18588:7;18838:1;18833;:6;18829:47;;18863:1;18856:8;;;;18829:47;18888:9;18904:1;18900;:5;;;;:::i;:::-;18888:17;;18933:1;18928;18924;:5;;;;:::i;:::-;:10;18916:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18992:1;18985:8;;;18530:471;;;;;:::o;19477:132::-;19535:7;19562:39;19566:1;19569;19562:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;19555:46;;19477:132;;;;:::o;16781:125::-;;;;:::o;17640:136::-;17698:7;17725:43;17729:1;17732;17725:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;17718:50;;17640:136;;;;:::o;42579:601::-;42707:21;42745:1;42731:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42707:40;;42776:4;42758;42763:1;42758:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;42802:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42792:4;42797:1;42792:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;42837:62;42854:4;42869:15;42887:11;42837:8;:62::i;:::-;42938:15;:66;;;43019:11;43045:1;43089:4;43116;43136:15;42938:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42634:546;42579:601;:::o;43192:513::-;43340:62;43357:4;43372:15;43390:11;43340:8;:62::i;:::-;43445:15;:31;;;43484:9;43517:4;43537:11;43563:1;43606;43649:7;:5;:7::i;:::-;43671:15;43445:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;43192:513;;:::o;20105:278::-;20191:7;20223:1;20219;:5;20226:12;20211:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;20250:9;20266:1;20262;:5;;;;:::i;:::-;20250:17;;20374:1;20367:8;;;20105:278;;;;;:::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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:619::-;5236:6;5244;5252;5301:2;5289:9;5280:7;5276:23;5272:32;5269:119;;;5307:79;;:::i;:::-;5269:119;5427:1;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5398:117;5554:2;5580:53;5625:7;5616:6;5605:9;5601:22;5580:53;:::i;:::-;5570:63;;5525:118;5682:2;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5653:118;5159:619;;;;;:::o;5784:118::-;5871:24;5889:5;5871:24;:::i;:::-;5866:3;5859:37;5784:118;;:::o;5908:222::-;6001:4;6039:2;6028:9;6024:18;6016:26;;6052:71;6120:1;6109:9;6105:17;6096:6;6052:71;:::i;:::-;5908:222;;;;:::o;6136:86::-;6171:7;6211:4;6204:5;6200:16;6189:27;;6136:86;;;:::o;6228:112::-;6311:22;6327:5;6311:22;:::i;:::-;6306:3;6299:35;6228:112;;:::o;6346:214::-;6435:4;6473:2;6462:9;6458:18;6450:26;;6486:67;6550:1;6539:9;6535:17;6526:6;6486:67;:::i;:::-;6346:214;;;;:::o;6566:116::-;6636:21;6651:5;6636:21;:::i;:::-;6629:5;6626:32;6616:60;;6672:1;6669;6662:12;6616:60;6566:116;:::o;6688:133::-;6731:5;6769:6;6756:20;6747:29;;6785:30;6809:5;6785:30;:::i;:::-;6688:133;;;;:::o;6827:468::-;6892:6;6900;6949:2;6937:9;6928:7;6924:23;6920:32;6917:119;;;6955:79;;:::i;:::-;6917:119;7075:1;7100:53;7145:7;7136:6;7125:9;7121:22;7100:53;:::i;:::-;7090:63;;7046:117;7202:2;7228:50;7270:7;7261:6;7250:9;7246:22;7228:50;:::i;:::-;7218:60;;7173:115;6827:468;;;;;:::o;7301:619::-;7378:6;7386;7394;7443:2;7431:9;7422:7;7418:23;7414:32;7411:119;;;7449:79;;:::i;:::-;7411:119;7569:1;7594:53;7639:7;7630:6;7619:9;7615:22;7594:53;:::i;:::-;7584:63;;7540:117;7696:2;7722:53;7767:7;7758:6;7747:9;7743:22;7722:53;:::i;:::-;7712:63;;7667:118;7824:2;7850:53;7895:7;7886:6;7875:9;7871:22;7850:53;:::i;:::-;7840:63;;7795:118;7301:619;;;;;:::o;7926:323::-;7982:6;8031:2;8019:9;8010:7;8006:23;8002:32;7999:119;;;8037:79;;:::i;:::-;7999:119;8157:1;8182:50;8224:7;8215:6;8204:9;8200:22;8182:50;:::i;:::-;8172:60;;8128:114;7926:323;;;;:::o;8255:329::-;8314:6;8363:2;8351:9;8342:7;8338:23;8334:32;8331:119;;;8369:79;;:::i;:::-;8331:119;8489:1;8514:53;8559:7;8550:6;8539:9;8535:22;8514:53;:::i;:::-;8504:63;;8460:117;8255:329;;;;:::o;8590:474::-;8658:6;8666;8715:2;8703:9;8694:7;8690:23;8686:32;8683:119;;;8721:79;;:::i;:::-;8683:119;8841:1;8866:53;8911:7;8902:6;8891:9;8887:22;8866:53;:::i;:::-;8856:63;;8812:117;8968:2;8994:53;9039:7;9030:6;9019:9;9015:22;8994:53;:::i;:::-;8984:63;;8939:118;8590:474;;;;;:::o;9070:180::-;9118:77;9115:1;9108:88;9215:4;9212:1;9205:15;9239:4;9236:1;9229:15;9256:320;9300:6;9337:1;9331:4;9327:12;9317:22;;9384:1;9378:4;9374:12;9405:18;9395:81;;9461:4;9453:6;9449:17;9439:27;;9395:81;9523:2;9515:6;9512:14;9492:18;9489:38;9486:84;;9542:18;;:::i;:::-;9486:84;9307:269;9256:320;;;:::o;9582:182::-;9722:34;9718:1;9710:6;9706:14;9699:58;9582:182;:::o;9770:366::-;9912:3;9933:67;9997:2;9992:3;9933:67;:::i;:::-;9926:74;;10009:93;10098:3;10009:93;:::i;:::-;10127:2;10122:3;10118:12;10111:19;;9770:366;;;:::o;10142:419::-;10308:4;10346:2;10335:9;10331:18;10323:26;;10395:9;10389:4;10385:20;10381:1;10370:9;10366:17;10359:47;10423:131;10549:4;10423:131;:::i;:::-;10415:139;;10142:419;;;:::o;10567:180::-;10615:77;10612:1;10605:88;10712:4;10709:1;10702:15;10736:4;10733:1;10726:15;10753:305;10793:3;10812:20;10830:1;10812:20;:::i;:::-;10807:25;;10846:20;10864:1;10846:20;:::i;:::-;10841:25;;11000:1;10932:66;10928:74;10925:1;10922:81;10919:107;;;11006:18;;:::i;:::-;10919:107;11050:1;11047;11043:9;11036:16;;10753:305;;;;:::o;11064:178::-;11204:30;11200:1;11192:6;11188:14;11181:54;11064:178;:::o;11248:366::-;11390:3;11411:67;11475:2;11470:3;11411:67;:::i;:::-;11404:74;;11487:93;11576:3;11487:93;:::i;:::-;11605:2;11600:3;11596:12;11589:19;;11248:366;;;:::o;11620:419::-;11786:4;11824:2;11813:9;11809:18;11801:26;;11873:9;11867:4;11863:20;11859:1;11848:9;11844:17;11837:47;11901:131;12027:4;11901:131;:::i;:::-;11893:139;;11620:419;;;:::o;12045:244::-;12185:34;12181:1;12173:6;12169:14;12162:58;12254:27;12249:2;12241:6;12237:15;12230:52;12045:244;:::o;12295:366::-;12437:3;12458:67;12522:2;12517:3;12458:67;:::i;:::-;12451:74;;12534:93;12623:3;12534:93;:::i;:::-;12652:2;12647:3;12643:12;12636:19;;12295:366;;;:::o;12667:419::-;12833:4;12871:2;12860:9;12856:18;12848:26;;12920:9;12914:4;12910:20;12906:1;12895:9;12891:17;12884:47;12948:131;13074:4;12948:131;:::i;:::-;12940:139;;12667:419;;;:::o;13092:179::-;13232:31;13228:1;13220:6;13216:14;13209:55;13092:179;:::o;13277:366::-;13419:3;13440:67;13504:2;13499:3;13440:67;:::i;:::-;13433:74;;13516:93;13605:3;13516:93;:::i;:::-;13634:2;13629:3;13625:12;13618:19;;13277:366;;;:::o;13649:419::-;13815:4;13853:2;13842:9;13838:18;13830:26;;13902:9;13896:4;13892:20;13888:1;13877:9;13873:17;13866:47;13930:131;14056:4;13930:131;:::i;:::-;13922:139;;13649:419;;;:::o;14074:348::-;14114:7;14137:20;14155:1;14137:20;:::i;:::-;14132:25;;14171:20;14189:1;14171:20;:::i;:::-;14166:25;;14359:1;14291:66;14287:74;14284:1;14281:81;14276:1;14269:9;14262:17;14258:105;14255:131;;;14366:18;;:::i;:::-;14255:131;14414:1;14411;14407:9;14396:20;;14074:348;;;;:::o;14428:180::-;14476:77;14473:1;14466:88;14573:4;14570:1;14563:15;14597:4;14594:1;14587:15;14614:185;14654:1;14671:20;14689:1;14671:20;:::i;:::-;14666:25;;14705:20;14723:1;14705:20;:::i;:::-;14700:25;;14744:1;14734:35;;14749:18;;:::i;:::-;14734:35;14791:1;14788;14784:9;14779:14;;14614:185;;;;:::o;14805:221::-;14945:34;14941:1;14933:6;14929:14;14922:58;15014:4;15009:2;15001:6;14997:15;14990:29;14805:221;:::o;15032:366::-;15174:3;15195:67;15259:2;15254:3;15195:67;:::i;:::-;15188:74;;15271:93;15360:3;15271:93;:::i;:::-;15389:2;15384:3;15380:12;15373:19;;15032:366;;;:::o;15404:419::-;15570:4;15608:2;15597:9;15593:18;15585:26;;15657:9;15651:4;15647:20;15643:1;15632:9;15628:17;15621:47;15685:131;15811:4;15685:131;:::i;:::-;15677:139;;15404:419;;;:::o;15829:225::-;15969:34;15965:1;15957:6;15953:14;15946:58;16038:8;16033:2;16025:6;16021:15;16014:33;15829:225;:::o;16060:366::-;16202:3;16223:67;16287:2;16282:3;16223:67;:::i;:::-;16216:74;;16299:93;16388:3;16299:93;:::i;:::-;16417:2;16412:3;16408:12;16401:19;;16060:366;;;:::o;16432:419::-;16598:4;16636:2;16625:9;16621:18;16613:26;;16685:9;16679:4;16675:20;16671:1;16660:9;16656:17;16649:47;16713:131;16839:4;16713:131;:::i;:::-;16705:139;;16432:419;;;:::o;16857:177::-;16997:29;16993:1;16985:6;16981:14;16974:53;16857:177;:::o;17040:366::-;17182:3;17203:67;17267:2;17262:3;17203:67;:::i;:::-;17196:74;;17279:93;17368:3;17279:93;:::i;:::-;17397:2;17392:3;17388:12;17381:19;;17040:366;;;:::o;17412:419::-;17578:4;17616:2;17605:9;17601:18;17593:26;;17665:9;17659:4;17655:20;17651:1;17640:9;17636:17;17629:47;17693:131;17819:4;17693:131;:::i;:::-;17685:139;;17412:419;;;:::o;17837:223::-;17977:34;17973:1;17965:6;17961:14;17954:58;18046:6;18041:2;18033:6;18029:15;18022:31;17837:223;:::o;18066:366::-;18208:3;18229:67;18293:2;18288:3;18229:67;:::i;:::-;18222:74;;18305:93;18394:3;18305:93;:::i;:::-;18423:2;18418:3;18414:12;18407:19;;18066:366;;;:::o;18438:419::-;18604:4;18642:2;18631:9;18627:18;18619:26;;18691:9;18685:4;18681:20;18677:1;18666:9;18662:17;18655:47;18719:131;18845:4;18719:131;:::i;:::-;18711:139;;18438:419;;;:::o;18863:221::-;19003:34;18999:1;18991:6;18987:14;18980:58;19072:4;19067:2;19059:6;19055:15;19048:29;18863:221;:::o;19090:366::-;19232:3;19253:67;19317:2;19312:3;19253:67;:::i;:::-;19246:74;;19329:93;19418:3;19329:93;:::i;:::-;19447:2;19442:3;19438:12;19431:19;;19090:366;;;:::o;19462:419::-;19628:4;19666:2;19655:9;19651:18;19643:26;;19715:9;19709:4;19705:20;19701:1;19690:9;19686:17;19679:47;19743:131;19869:4;19743:131;:::i;:::-;19735:139;;19462:419;;;:::o;19887:224::-;20027:34;20023:1;20015:6;20011:14;20004:58;20096:7;20091:2;20083:6;20079:15;20072:32;19887:224;:::o;20117:366::-;20259:3;20280:67;20344:2;20339:3;20280:67;:::i;:::-;20273:74;;20356:93;20445:3;20356:93;:::i;:::-;20474:2;20469:3;20465:12;20458:19;;20117:366;;;:::o;20489:419::-;20655:4;20693:2;20682:9;20678:18;20670:26;;20742:9;20736:4;20732:20;20728:1;20717:9;20713:17;20706:47;20770:131;20896:4;20770:131;:::i;:::-;20762:139;;20489:419;;;:::o;20914:222::-;21054:34;21050:1;21042:6;21038:14;21031:58;21123:5;21118:2;21110:6;21106:15;21099:30;20914:222;:::o;21142:366::-;21284:3;21305:67;21369:2;21364:3;21305:67;:::i;:::-;21298:74;;21381:93;21470:3;21381:93;:::i;:::-;21499:2;21494:3;21490:12;21483:19;;21142:366;;;:::o;21514:419::-;21680:4;21718:2;21707:9;21703:18;21695:26;;21767:9;21761:4;21757:20;21753:1;21742:9;21738:17;21731:47;21795:131;21921:4;21795:131;:::i;:::-;21787:139;;21514:419;;;:::o;21939:172::-;22079:24;22075:1;22067:6;22063:14;22056:48;21939:172;:::o;22117:366::-;22259:3;22280:67;22344:2;22339:3;22280:67;:::i;:::-;22273:74;;22356:93;22445:3;22356:93;:::i;:::-;22474:2;22469:3;22465:12;22458:19;;22117:366;;;:::o;22489:419::-;22655:4;22693:2;22682:9;22678:18;22670:26;;22742:9;22736:4;22732:20;22728:1;22717:9;22713:17;22706:47;22770:131;22896:4;22770:131;:::i;:::-;22762:139;;22489:419;;;:::o;22914:174::-;23054:26;23050:1;23042:6;23038:14;23031:50;22914:174;:::o;23094:366::-;23236:3;23257:67;23321:2;23316:3;23257:67;:::i;:::-;23250:74;;23333:93;23422:3;23333:93;:::i;:::-;23451:2;23446:3;23442:12;23435:19;;23094:366;;;:::o;23466:419::-;23632:4;23670:2;23659:9;23655:18;23647:26;;23719:9;23713:4;23709:20;23705:1;23694:9;23690:17;23683:47;23747:131;23873:4;23747:131;:::i;:::-;23739:139;;23466:419;;;:::o;23891:297::-;24031:34;24027:1;24019:6;24015:14;24008:58;24100:34;24095:2;24087:6;24083:15;24076:59;24169:11;24164:2;24156:6;24152:15;24145:36;23891:297;:::o;24194:366::-;24336:3;24357:67;24421:2;24416:3;24357:67;:::i;:::-;24350:74;;24433:93;24522:3;24433:93;:::i;:::-;24551:2;24546:3;24542:12;24535:19;;24194:366;;;:::o;24566:419::-;24732:4;24770:2;24759:9;24755:18;24747:26;;24819:9;24813:4;24809:20;24805:1;24794:9;24790:17;24783:47;24847:131;24973:4;24847:131;:::i;:::-;24839:139;;24566:419;;;:::o;24991:177::-;25131:29;25127:1;25119:6;25115:14;25108:53;24991:177;:::o;25174:366::-;25316:3;25337:67;25401:2;25396:3;25337:67;:::i;:::-;25330:74;;25413:93;25502:3;25413:93;:::i;:::-;25531:2;25526:3;25522:12;25515:19;;25174:366;;;:::o;25546:419::-;25712:4;25750:2;25739:9;25735:18;25727:26;;25799:9;25793:4;25789:20;25785:1;25774:9;25770:17;25763:47;25827:131;25953:4;25827:131;:::i;:::-;25819:139;;25546:419;;;:::o;25971:241::-;26111:34;26107:1;26099:6;26095:14;26088:58;26180:24;26175:2;26167:6;26163:15;26156:49;25971:241;:::o;26218:366::-;26360:3;26381:67;26445:2;26440:3;26381:67;:::i;:::-;26374:74;;26457:93;26546:3;26457:93;:::i;:::-;26575:2;26570:3;26566:12;26559:19;;26218:366;;;:::o;26590:419::-;26756:4;26794:2;26783:9;26779:18;26771:26;;26843:9;26837:4;26833:20;26829:1;26818:9;26814:17;26807:47;26871:131;26997:4;26871:131;:::i;:::-;26863:139;;26590:419;;;:::o;27015:191::-;27055:4;27075:20;27093:1;27075:20;:::i;:::-;27070:25;;27109:20;27127:1;27109:20;:::i;:::-;27104:25;;27148:1;27145;27142:8;27139:34;;;27153:18;;:::i;:::-;27139:34;27198:1;27195;27191:9;27183:17;;27015:191;;;;:::o;27212:147::-;27313:11;27350:3;27335:18;;27212:147;;;;:::o;27365:114::-;;:::o;27485:398::-;27644:3;27665:83;27746:1;27741:3;27665:83;:::i;:::-;27658:90;;27757:93;27846:3;27757:93;:::i;:::-;27875:1;27870:3;27866:11;27859:18;;27485:398;;;:::o;27889:379::-;28073:3;28095:147;28238:3;28095:147;:::i;:::-;28088:154;;28259:3;28252:10;;27889:379;;;:::o;28274:442::-;28423:4;28461:2;28450:9;28446:18;28438:26;;28474:71;28542:1;28531:9;28527:17;28518:6;28474:71;:::i;:::-;28555:72;28623:2;28612:9;28608:18;28599:6;28555:72;:::i;:::-;28637;28705:2;28694:9;28690:18;28681:6;28637:72;:::i;:::-;28274:442;;;;;;:::o;28722:220::-;28862:34;28858:1;28850:6;28846:14;28839:58;28931:3;28926:2;28918:6;28914:15;28907:28;28722:220;:::o;28948:366::-;29090:3;29111:67;29175:2;29170:3;29111:67;:::i;:::-;29104:74;;29187:93;29276:3;29187:93;:::i;:::-;29305:2;29300:3;29296:12;29289:19;;28948:366;;;:::o;29320:419::-;29486:4;29524:2;29513:9;29509:18;29501:26;;29573:9;29567:4;29563:20;29559:1;29548:9;29544:17;29537:47;29601:131;29727:4;29601:131;:::i;:::-;29593:139;;29320:419;;;:::o;29745:180::-;29793:77;29790:1;29783:88;29890:4;29887:1;29880:15;29914:4;29911:1;29904:15;29931:180;29979:77;29976:1;29969:88;30076:4;30073:1;30066:15;30100:4;30097:1;30090:15;30117:143;30174:5;30205:6;30199:13;30190:22;;30221:33;30248:5;30221:33;:::i;:::-;30117:143;;;;:::o;30266:351::-;30336:6;30385:2;30373:9;30364:7;30360:23;30356:32;30353:119;;;30391:79;;:::i;:::-;30353:119;30511:1;30536:64;30592:7;30583:6;30572:9;30568:22;30536:64;:::i;:::-;30526:74;;30482:128;30266:351;;;;:::o;30623:85::-;30668:7;30697:5;30686:16;;30623:85;;;:::o;30714:158::-;30772:9;30805:61;30823:42;30832:32;30858:5;30832:32;:::i;:::-;30823:42;:::i;:::-;30805:61;:::i;:::-;30792:74;;30714:158;;;:::o;30878:147::-;30973:45;31012:5;30973:45;:::i;:::-;30968:3;30961:58;30878:147;;:::o;31031:114::-;31098:6;31132:5;31126:12;31116:22;;31031:114;;;:::o;31151:184::-;31250:11;31284:6;31279:3;31272:19;31324:4;31319:3;31315:14;31300:29;;31151:184;;;;:::o;31341:132::-;31408:4;31431:3;31423:11;;31461:4;31456:3;31452:14;31444:22;;31341:132;;;:::o;31479:108::-;31556:24;31574:5;31556:24;:::i;:::-;31551:3;31544:37;31479:108;;:::o;31593:179::-;31662:10;31683:46;31725:3;31717:6;31683:46;:::i;:::-;31761:4;31756:3;31752:14;31738:28;;31593:179;;;;:::o;31778:113::-;31848:4;31880;31875:3;31871:14;31863:22;;31778:113;;;:::o;31927:732::-;32046:3;32075:54;32123:5;32075:54;:::i;:::-;32145:86;32224:6;32219:3;32145:86;:::i;:::-;32138:93;;32255:56;32305:5;32255:56;:::i;:::-;32334:7;32365:1;32350:284;32375:6;32372:1;32369:13;32350:284;;;32451:6;32445:13;32478:63;32537:3;32522:13;32478:63;:::i;:::-;32471:70;;32564:60;32617:6;32564:60;:::i;:::-;32554:70;;32410:224;32397:1;32394;32390:9;32385:14;;32350:284;;;32354:14;32650:3;32643:10;;32051:608;;;31927:732;;;;:::o;32665:831::-;32928:4;32966:3;32955:9;32951:19;32943:27;;32980:71;33048:1;33037:9;33033:17;33024:6;32980:71;:::i;:::-;33061:80;33137:2;33126:9;33122:18;33113:6;33061:80;:::i;:::-;33188:9;33182:4;33178:20;33173:2;33162:9;33158:18;33151:48;33216:108;33319:4;33310:6;33216:108;:::i;:::-;33208:116;;33334:72;33402:2;33391:9;33387:18;33378:6;33334:72;:::i;:::-;33416:73;33484:3;33473:9;33469:19;33460:6;33416:73;:::i;:::-;32665:831;;;;;;;;:::o;33502:807::-;33751:4;33789:3;33778:9;33774:19;33766:27;;33803:71;33871:1;33860:9;33856:17;33847:6;33803:71;:::i;:::-;33884:72;33952:2;33941:9;33937:18;33928:6;33884:72;:::i;:::-;33966:80;34042:2;34031:9;34027:18;34018:6;33966:80;:::i;:::-;34056;34132:2;34121:9;34117:18;34108:6;34056:80;:::i;:::-;34146:73;34214:3;34203:9;34199:19;34190:6;34146:73;:::i;:::-;34229;34297:3;34286:9;34282:19;34273:6;34229:73;:::i;:::-;33502:807;;;;;;;;;:::o;34315:143::-;34372:5;34403:6;34397:13;34388:22;;34419:33;34446:5;34419:33;:::i;:::-;34315:143;;;;:::o;34464:663::-;34552:6;34560;34568;34617:2;34605:9;34596:7;34592:23;34588:32;34585:119;;;34623:79;;:::i;:::-;34585:119;34743:1;34768:64;34824:7;34815:6;34804:9;34800:22;34768:64;:::i;:::-;34758:74;;34714:128;34881:2;34907:64;34963:7;34954:6;34943:9;34939:22;34907:64;:::i;:::-;34897:74;;34852:129;35020:2;35046:64;35102:7;35093:6;35082:9;35078:22;35046:64;:::i;:::-;35036:74;;34991:129;34464:663;;;;;:::o

Swarm Source

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