ETH Price: $2,622.81 (+1.12%)

Token

Increase DeFi (INCD)
 

Overview

Max Total Supply

100,000,000,000 INCD

Holders

43 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
913,621,615.0138353328013369 INCD

Value
$0.00
0xb58e6c465544920f3f403d56e68d67dc14298e7e
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Increase DeFi ($INCD), is a deflationary token on the Ethereum Blockchain that is designed to increase in value through the use of specific deflationary techniques and project development.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
INCD

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-17
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

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

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

    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 virtual 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;
    }
    
    //Locks the contract for owner for the amount of time provided

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

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

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20 {
    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;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = 18;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual 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 {_setupDecimals} is
     * called.
     *
     * 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 returns (uint8) {
        return _decimals;
    }

    /**
     * @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:
     *
     * - `to` 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 Sets {decimals} to a value other than the default one of 18.
     *
     * WARNING: This function should only be called from the constructor. Most
     * applications that interact with token contracts will not expect
     * {decimals} to ever change, and may work incorrectly if it does.
     */
    function _setupDecimals(uint8 decimals_) internal virtual {
        _decimals = decimals_;
    }

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

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

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

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

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

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

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

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        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) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        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, reverting 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) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

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

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

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * 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);
        return a / b;
    }

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

contract INCD is ERC20, Ownable {
    using SafeMath for uint256;
    
    uint256 public _totalSupply = 100_000_000_000 * (10**18);

    IUniswapV2Router02 public uniswapV2Router;
    address public immutable uniswapV2Pair;
   
    address public deadAddress = 0x000000000000000000000000000000000000dEaD;

    bool private swapping;
    bool public tradingIsEnabled = false;
    bool public marketingEnabled = false;
    bool public buyBackEnabled = false;
    bool public rewardsEnabled = false;

    address public rewardsWallet;
    address public marketingWallet;
    
    uint256 public maxBuyTransactionAmount;
    uint256 public maxSellTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWalletSize; 
    uint256 private buyBackBalance = 0;
    uint256 private lastBuyBack = 0;
    uint256 private buybackpercent = 80;
    uint256 private botFees;

    uint256 public buyMarketingFee;
    uint256 public previousBuyMarketingFee;
    uint256 public sellRewardsFee;
    uint256 public previousSellRewardsFee;
    uint256 public sellMarketingFee;
    uint256 public previousSellMarketingFee;
    uint256 public sellBuyBackFee;
    uint256 public previousSellBuyBackFee;
    uint256 public totalSellFees;
    uint256 public totalBuyFees;

    uint256 public transferFeeIncreaseFactor = 100;

    address public presaleAddress;

    mapping (address => bool) private isExcludedFromFees;

    // 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;
    mapping(address => uint256) private previousTransactionBlock;
    uint256 private _firstBlock;
    uint256 private _botBlocks;
    mapping(address => bool) private bots;

    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    
    event BuyBackEnabledUpdated(bool enabled);
    event MarketingEnabledUpdated(bool enabled);
    event RewardsEnabledUpdated(bool enabled);
   

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);

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

    event MarketingWalletUpdated(address indexed newMarketingWallet, address indexed oldMarketingWallet);
    event RewardWalletUpdated(address indexed newRewardWallet, address indexed oldRewardWallet);
    
    event SwapBNBForTokens(
        uint256 amountIn,
        address[] path
    );

    constructor(address _marketingWallet, address _rewardsWallet) ERC20("Increase DeFi", "INCD") {

    	marketingWallet = _marketingWallet;
    	rewardsWallet = _rewardsWallet;
    	
    	IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//0x10ED43C718714eb63d5aA57B78B54704E256024E); //0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3; //0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
         // Create a uniswap pair for this new token
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;

        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);

        // exclude from paying fees or having max transaction amount
        excludeFromFees(marketingWallet, true);
        excludeFromFees(rewardsWallet, true);
        excludeFromFees(address(this), true);
        excludeFromFees(owner(), true);
        excludeFromFees(deadAddress, true);
        
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(owner(), _totalSupply);
    }

    receive() external payable {

  	}

  	function whitelistPinkSale(address _presaleAddress) external onlyOwner {
  	    presaleAddress = _presaleAddress;
        isExcludedFromFees[_presaleAddress] = true;
  	}

  	function prepareForPartnerOrExchangeListing(address _partnerOrExchangeAddress) external onlyOwner {
        isExcludedFromFees[_partnerOrExchangeAddress] = true;
  	}
  	
  	function setMaxBuyTransaction(uint256 _maxTxn) external onlyOwner {
  	    require(_maxTxn >= (_totalSupply.mul(1).div(10000)).div(10**18), "amount must be greater than 0.01% of the total supply");
  	    maxBuyTransactionAmount = _maxTxn * (10**18);
  	}
  	
  	function setMaxSellTransaction(uint256 _maxTxn) external onlyOwner {
  	    require(_maxTxn >= (_totalSupply.mul(1).div(10000)).div(10**18), "amount must be greater than 0.01% of the total supply");
  	    maxSellTransactionAmount = _maxTxn * (10**18);
  	}
  	
  	function updateMarketingWallet(address _newWallet) external onlyOwner {
  	    require(_newWallet != marketingWallet, "The marketing wallet is already this address");
         isExcludedFromFees[_newWallet] = true;
        emit MarketingWalletUpdated(marketingWallet, _newWallet);
  	    marketingWallet = _newWallet;
  	}
  	
  	function setMaxWalletSize(uint256 _maxToken) external onlyOwner {
  	    require(_maxToken >= (_totalSupply.mul(5).div(1000)).div(10**18), "amount must be greater than 0.5% of the supply");
  	    maxWalletSize = _maxToken * (10**18);
  	}
  	
  	function setSwapTokensAtAmount(uint256 _swapAmount) external onlyOwner {
  	    swapTokensAtAmount = _swapAmount * (10**18);
  	}

    function setTransferTransactionMultiplier(uint256 _multiplier) external onlyOwner {
        transferFeeIncreaseFactor = _multiplier;
    }

    function prepareForPreSale() external onlyOwner {
        require(tradingIsEnabled == false, "cant prepare for presale once trading is enabled");
        tradingIsEnabled = false;
        buyMarketingFee = 0;
        sellRewardsFee = 0;
        sellMarketingFee = 0;
    	sellBuyBackFee = 0;
        maxBuyTransactionAmount = _totalSupply;
        maxSellTransactionAmount = _totalSupply;
        maxWalletSize = _totalSupply.mul(15).div(1000);
    }

    function afterPreSale() external onlyOwner {
        buyMarketingFee = 2;
        sellRewardsFee = 6;
        sellMarketingFee = 11;
    	sellBuyBackFee = 4;
        totalBuyFees = buyMarketingFee;
        totalSellFees = sellRewardsFee.add(sellMarketingFee).add(sellBuyBackFee);
        marketingEnabled = true;
        buyBackEnabled = true;
        rewardsEnabled = true;
        swapTokensAtAmount = 20000000 * (10**18);
        maxBuyTransactionAmount = _totalSupply;
        maxSellTransactionAmount = _totalSupply;
        maxWalletSize = _totalSupply.mul(15).div(1000);
    }
    
    function openTrading(uint256 botBlocks, uint256 _botFees) external onlyOwner {
        tradingIsEnabled = true;
        _botBlocks = botBlocks;
        botFees = _botFees;
        _firstBlock = block.timestamp;
    }
    
    function setBuyBackEnabled(bool _enabled) external onlyOwner {
        require(buyBackEnabled != _enabled, "Can't set flag to same status");
        if (_enabled == false) {
            previousSellBuyBackFee = sellBuyBackFee;
            sellBuyBackFee = 0;
            buyBackBalance = 0;
            totalBuyFees = buyMarketingFee;
            totalSellFees = sellRewardsFee.add(sellMarketingFee).add(sellBuyBackFee);
            buyBackEnabled = _enabled;
        } else {
            sellBuyBackFee = previousSellBuyBackFee;
            totalBuyFees = buyMarketingFee;
            totalSellFees = sellBuyBackFee.add(sellMarketingFee).add(sellRewardsFee);
            buyBackEnabled = _enabled;
        }
        
        emit BuyBackEnabledUpdated(_enabled);
    }
    
    function setRewardsEnabled(bool _enabled) external onlyOwner {
        require(rewardsEnabled != _enabled, "Can't set flag to same status");
        if (_enabled == false) {
            previousSellRewardsFee = sellRewardsFee;
            sellRewardsFee = 0;
            totalBuyFees = buyMarketingFee;
            totalSellFees = sellRewardsFee.add(sellMarketingFee).add(sellBuyBackFee);
            rewardsEnabled = _enabled;
        } else {
            sellRewardsFee = previousSellRewardsFee;
            totalBuyFees = buyMarketingFee;
            totalSellFees = sellRewardsFee.add(sellMarketingFee).add(sellBuyBackFee);
            rewardsEnabled = _enabled;
        }

        emit RewardsEnabledUpdated(_enabled);
    }
    
    
    function setMarketingEnabled(bool _enabled) external onlyOwner {
        require(marketingEnabled != _enabled, "Can't set flag to same status");
        if (_enabled == false) {
            previousBuyMarketingFee = buyMarketingFee;
            previousSellMarketingFee = sellMarketingFee;
            buyMarketingFee = 0;
            sellMarketingFee = 0;
            totalSellFees = sellRewardsFee.add(sellMarketingFee).add(sellBuyBackFee);
            totalBuyFees = buyMarketingFee;
            marketingEnabled = _enabled;
        } else {
            buyMarketingFee = previousBuyMarketingFee;
            sellMarketingFee = previousSellMarketingFee;
            totalSellFees = sellRewardsFee.add(sellMarketingFee).add(sellBuyBackFee);
            totalBuyFees = buyMarketingFee;
            marketingEnabled = _enabled;
        }

        emit MarketingEnabledUpdated(_enabled);
    }

    function updateFees(uint8 _buyMarketingFee, uint8 _sellBuyBackFee, uint8 _sellMarketingFee, uint8 _sellRewardsFee) external onlyOwner {
        require(_buyMarketingFee <= 45, "buy fee must be less than 45%");
        require(_sellBuyBackFee + _sellMarketingFee + _sellRewardsFee <= 45, "sell fee must be less than 45%");
        buyMarketingFee = _buyMarketingFee;
        sellBuyBackFee = _sellBuyBackFee;
        sellMarketingFee = _sellMarketingFee;
        sellRewardsFee = _sellRewardsFee;
        totalSellFees = sellMarketingFee.add(sellRewardsFee).add(sellBuyBackFee);
        totalBuyFees = buyMarketingFee;
    }

    function updateUniswapV2Router(address newAddress) external onlyOwner {
        require(newAddress != address(uniswapV2Router), "The router already has that address");
        emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router));
        uniswapV2Router = IUniswapV2Router02(newAddress);
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function setBuyBackPercent(uint256 percent) public onlyOwner {
        require(percent >= 0 && percent <= 100, "must be between 0 and 100");
        buybackpercent = percent;
    }
    
    function updateBotFees(uint256 percent) public onlyOwner {
        require(percent >= 0 && percent <= 100, "must be between 0 and 100");
        botFees = percent;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The PancakeSwap pair cannot be removed from automatedMarketMakerPairs");
        require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value");
        
        automatedMarketMakerPairs[pair] = value;
        
        emit SetAutomatedMarketMakerPair(pair, value);
    }
    
    function _setAutomatedMarketMakerPair(address pair, bool value) private onlyOwner {
        require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value");
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function getIsExcludedFromFees(address account) public view returns(bool) {
        return isExcludedFromFees[account];
    }
    
    function rand() internal view returns(uint256) {
        uint256 seed = uint256(
            keccak256(
                abi.encodePacked(
                    block.timestamp + block.difficulty + ((uint256(keccak256(abi.encodePacked(block.coinbase)))) / 
                    (block.timestamp)) + block.gaslimit + ((uint256(keccak256(abi.encodePacked(msg.sender)))) / 
                    (block.timestamp)) + block.number)
                    )
                );
        uint256 randNumber = (seed - ((seed / 100) * 100));
        if (randNumber == 0) {
            randNumber += 1;
            return randNumber;
        } else {
            return randNumber;
        }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(tradingIsEnabled || (isExcludedFromFees[from] || isExcludedFromFees[to]), "Trading has not started yet");
        
        bool excludedAccount = isExcludedFromFees[from] || isExcludedFromFees[to];
        
        if (
            tradingIsEnabled &&
            automatedMarketMakerPairs[from] &&
            !excludedAccount
        ) {
            require(
                amount <= maxBuyTransactionAmount,
                "Transfer amount exceeds the maxTxAmount."
            );
            require(!bots[from] && !bots[to], 'bots cannot trade');
            
            previousTransactionBlock[to] = block.timestamp;

            if (block.timestamp <= _firstBlock.add(_botBlocks)) {
                bots[to] = true;
                uint256 toBurn = amount.mul(botFees).div(100);
                amount = amount.sub(toBurn);
                super._transfer(from, deadAddress, toBurn);
            }

            uint256 contractBalanceRecepient = balanceOf(to);
            require(
                contractBalanceRecepient + amount <= maxWalletSize,
                "Exceeds maximum wallet token amount."
            );
        } else if (
          	tradingIsEnabled &&
            automatedMarketMakerPairs[to] &&
            !excludedAccount
        ) {
            require(!bots[from] && !bots[to], 'bots cannot trade');
            require(amount <= maxSellTransactionAmount, "Sell transfer amount exceeds the maxSellTransactionAmount.");
            
            if (block.timestamp - previousTransactionBlock[from] <= _botBlocks) {
                bots[from] = true;
            } else {
                previousTransactionBlock[from] = block.timestamp;
            }
                
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= swapTokensAtAmount;
            
            if (!swapping && canSwap) {
                swapping = true;

                uint256 contractBalance;
                uint256 buyBack = rand();

                if (buyBackEnabled) {
                    swapTokensForBNB(contractTokenBalance);
                    uint256 afterSwap = address(this).balance;
                    buyBackBalance = (afterSwap.sub(buyBackBalance)).mul(sellBuyBackFee).div(totalSellFees);
                    contractBalance = afterSwap.sub(buyBackBalance);

                } else {
                    swapTokensForBNB(contractTokenBalance);
                    contractBalance = address(this).balance;
                }

                if (marketingEnabled) {
                    uint256 swapTokens = contractBalance.mul(sellMarketingFee).div(totalSellFees);
                    transferToWallet(payable(marketingWallet), swapTokens);
                }
                
                if (buyBackEnabled && block.timestamp.sub(lastBuyBack) > (5 minutes)) {
                    if (buyBack <= 50 || block.timestamp.sub(lastBuyBack) > (10 minutes)) {
                        uint256 buybackAmount = buyBackBalance.mul(buybackpercent).div(100);
                        buyBackBalance = buyBackBalance.sub(buybackAmount);
                        
                        buyBackAndBurn(buybackAmount);
                        
                        lastBuyBack = block.timestamp;
                    }
                }
    
                swapping = false;
            }
        }else { //Transfers
            require(!bots[from] && !bots[to], 'bots cannot transfer');
        }

        bool takeFee = tradingIsEnabled && !swapping && !excludedAccount;

        if(takeFee) {
            uint256 fees;
            uint256 rewardTokens = 0;
            if(automatedMarketMakerPairs[from]) { // if buy
                fees = amount.mul(totalBuyFees).div(100);
            }
            else if(automatedMarketMakerPairs[to]) { // if sell
                fees = amount.mul(totalSellFees).div(100);
                if (rewardsEnabled) {
                    uint256 rewardPortion = fees.mul(sellRewardsFee).div(totalSellFees);
                    fees = fees.sub(rewardPortion);
                    rewardTokens = rewardPortion;
                    super._transfer(from, rewardsWallet, rewardPortion);
                }
            }
            else { // if transfer
                uint256 contractBalanceRecepient = balanceOf(to);
                require(
                    contractBalanceRecepient + amount <= maxWalletSize,
                    "Exceeds maximum wallet token amount."
                );
                uint256 totalTransferFees = totalSellFees.mul(transferFeeIncreaseFactor).div(100);
                fees = amount.mul(totalTransferFees).div(100);
                if (rewardsEnabled) {
                    uint256 rewardPortion = fees.mul(sellRewardsFee).div(totalTransferFees);
                    fees = fees.sub(rewardPortion);
                    rewardTokens = rewardPortion;
                    super._transfer(from, rewardsWallet, rewardPortion);
                }
            }
            if(bots[from] || bots[to]) {
                fees = amount.mul(botFees).div(100);
            }
        
            amount = amount.sub(fees.add(rewardTokens));

            super._transfer(from, address(this), fees);
        }

        super._transfer(from, to, amount);

    }

    function isBot(address account) public view returns (bool) {
        return bots[account];
    }

    function removeBot(address account) external onlyOwner {
        bots[account] = false;
    }

    function addBot(address account) external onlyOwner {
        bots[account] = true;
    }

    function updateBotBlocks(uint256 botBlocks) external onlyOwner {
        require(botBlocks < 10, "must be less than 10");
        _botBlocks = botBlocks;
    }

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

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

        emit SwapBNBForTokens(amount, path);
    }

    function swapTokensForBNB(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 transferToWallet(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function _transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        super.transferOwnership(newOwner);
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_rewardsWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"BuyBackEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"MarketingEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newMarketingWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldMarketingWallet","type":"address"}],"name":"MarketingWalletUpdated","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":"newRewardWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldRewardWallet","type":"address"}],"name":"RewardWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"RewardsEnabledUpdated","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":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapBNBForTokens","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"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"_transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"afterPreSale","outputs":[],"stateMutability":"nonpayable","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":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getIsExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingEnabled","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":"maxBuyTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"botBlocks","type":"uint256"},{"internalType":"uint256","name":"_botFees","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_partnerOrExchangeAddress","type":"address"}],"name":"prepareForPartnerOrExchangeListing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"prepareForPreSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"presaleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousBuyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousSellBuyBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousSellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousSellRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellBuyBackFee","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":"sellRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setBuyBackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setBuyBackPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setMarketingEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxn","type":"uint256"}],"name":"setMaxBuyTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxn","type":"uint256"}],"name":"setMaxSellTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxToken","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setRewardsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_multiplier","type":"uint256"}],"name":"setTransferTransactionMultiplier","outputs":[],"stateMutability":"nonpayable","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":"totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","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":"tradingIsEnabled","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":"transferFeeIncreaseFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"botBlocks","type":"uint256"}],"name":"updateBotBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"updateBotFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_buyMarketingFee","type":"uint8"},{"internalType":"uint8","name":"_sellBuyBackFee","type":"uint8"},{"internalType":"uint8","name":"_sellMarketingFee","type":"uint8"},{"internalType":"uint8","name":"_sellRewardsFee","type":"uint8"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_presaleAddress","type":"address"}],"name":"whitelistPinkSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526c01431e0fae6d7217caa0000000600855600a8054600164ffffffff0160a01b03191661dead1790556000601181905560125560506013556064601f553480156200004e57600080fd5b506040516200425938038062004259833981016040819052620000719162000804565b604080518082018252600d81526c496e637265617365204465466960981b602080830191825283518085019094526004845263125390d160e21b908401528151919291620000c29160039162000741565b508051620000d890600490602084019062000741565b50506005805460ff19166012179055506000620000f23390565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c80546001600160a01b038085166001600160a01b031992831617909255600b8054928416929091169190911790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91600091839163c45a0155916004808301926020929190829003018186803b158015620001c957600080fd5b505afa158015620001de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020491906200083c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024d57600080fd5b505afa15801562000262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028891906200083c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002d157600080fd5b505af1158015620002e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030c91906200083c565b600980546001600160a01b0319166001600160a01b03858116919091179091558116608052905062000340816001620003eb565b600c5462000359906001600160a01b031660016200052b565b600b5462000372906001600160a01b031660016200052b565b6200037f3060016200052b565b620003a36200039b60055461010090046001600160a01b031690565b60016200052b565b600a54620003bc906001600160a01b031660016200052b565b620003e1620003d860055461010090046001600160a01b031690565b600854620005db565b50505050620008be565b6005546001600160a01b03610100909104163314620004405760405162461bcd60e51b815260206004820181905260248201526000805160206200423983398151915260448201526064015b60405180910390fd5b6001600160a01b03821660009081526022602052604090205460ff1615158115151415620004d75760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c75650000000000000000606482015260840162000437565b6001600160a01b038216600081815260226020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b036101009091041633146200057c5760405162461bcd60e51b8152602060048201819052602482015260008051602062004239833981519152604482015260640162000437565b6001600160a01b038216600081815260216020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006335760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000437565b6200064f81600254620006d760201b620020f71790919060201c565b6002556001600160a01b0382166000908152602081815260409091205462000682918390620020f7620006d7821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600080620006e683856200085a565b9050838110156200073a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000437565b9392505050565b8280546200074f9062000881565b90600052602060002090601f016020900481019282620007735760008555620007be565b82601f106200078e57805160ff1916838001178555620007be565b82800160010185558215620007be579182015b82811115620007be578251825591602001919060010190620007a1565b50620007cc929150620007d0565b5090565b5b80821115620007cc5760008155600101620007d1565b80516001600160a01b0381168114620007ff57600080fd5b919050565b600080604083850312156200081857600080fd5b6200082383620007e7565b91506200083360208401620007e7565b90509250929050565b6000602082840312156200084f57600080fd5b6200073a82620007e7565b600082198211156200087c57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200089657607f821691505b60208210811415620008b857634e487b7160e01b600052602260045260246000fd5b50919050565b608051613958620008e1600039600081816106ee01526116ef01526139586000f3fe6080604052600436106103f25760003560e01c806374170d8a11610208578063b62496f511610118578063dd62ed3e116100ab578063e7a919f91161007a578063e7a919f914610be0578063e84d44f814610c00578063ea1644d514610c21578063f2fde38b14610c41578063ffecf51614610c6157600080fd5b8063dd62ed3e14610b44578063dd90e1d814610b8a578063e2f4560514610baa578063e4924f1814610bc057600080fd5b8063c0246668116100e7578063c024666814610ace578063d0a3981414610aee578063d29d44ee14610b04578063dd46706414610b2457600080fd5b8063b62496f514610a52578063b9e9370014610a82578063bb8d513114610a98578063bd0abd3a14610aae57600080fd5b806395d89b411161019b578063a9059cbb1161016a578063a9059cbb146109b2578063aacebbe3146109d2578063af24aa1c146109f2578063afa4f3b214610a12578063b3b5e04314610a3257600080fd5b806395d89b411461093d5780639a7a23d614610952578063a457c2d714610972578063a850673d1461099257600080fd5b80637bce5a04116101d75780637bce5a04146108d85780638da5cb5b146108ee5780638f3fa86014610911578063921369131461092757600080fd5b806374170d8a1461085357806375f0a8741461086957806379012f33146108895780637b16cea01461089f57600080fd5b8063313ce567116103035780635b35f9c91161029657806365b8dbc01161026557806365b8dbc0146107bc57806370a08231146107dc578063715018a61461081257806372b2aecc14610827578063738bc3231461083d57600080fd5b80635b35f9c91461073b5780635c38ffe21461075b5780635fecd9261461077b5780636053a0e31461079b57600080fd5b80633eaaf86b116102d25780633eaaf86b146106c657806349bd5a5e146106dc5780635134f6ab146107105780635aa821a91461072557600080fd5b8063313ce5671461062b5780633395155e1461064d578063395093511461066d5780633bbac5791461068d57600080fd5b8063122fe685116103865780631dafe16b116103555780631dafe16b1461058a57806323b872dd146105ab578063263b5fcb146105cb57806327c8f835146105eb57806329370cc61461060b57600080fd5b8063122fe685146105075780631694505e1461053f57806318160ddd1461055f5780631a221dbb1461057457600080fd5b806307efbfdc116103c257806307efbfdc14610481578063095ea7b31461049657806309c58fcd146104c65780630aa75f6b146104e757600080fd5b806253d798146103fe57806302259e9e1461042057806305ad06881461044957806306fdde031461045f57600080fd5b366103f957005b600080fd5b34801561040a57600080fd5b5061041e61041936600461331e565b610c81565b005b34801561042c57600080fd5b50610436600e5481565b6040519081526020015b60405180910390f35b34801561045557600080fd5b50610436601a5481565b34801561046b57600080fd5b50610474610db0565b6040516104409190613339565b34801561048d57600080fd5b5061041e610e42565b3480156104a257600080fd5b506104b66104b13660046133a3565b610ef6565b6040519015158152602001610440565b3480156104d257600080fd5b50600a546104b690600160a81b900460ff1681565b3480156104f357600080fd5b5061041e6105023660046133e0565b610f0d565b34801561051357600080fd5b50602054610527906001600160a01b031681565b6040516001600160a01b039091168152602001610440565b34801561054b57600080fd5b50600954610527906001600160a01b031681565b34801561056b57600080fd5b50600254610436565b34801561058057600080fd5b50610436601b5481565b34801561059657600080fd5b50600a546104b690600160c01b900460ff1681565b3480156105b757600080fd5b506104b66105c6366004613434565b611035565b3480156105d757600080fd5b5061041e6105e636600461331e565b61109e565b3480156105f757600080fd5b50600a54610527906001600160a01b031681565b34801561061757600080fd5b5061041e61062636600461331e565b6111c9565b34801561063757600080fd5b5060055460405160ff9091168152602001610440565b34801561065957600080fd5b5061041e610668366004613475565b6112e9565b34801561067957600080fd5b506104b66106883660046133a3565b61133d565b34801561069957600080fd5b506104b66106a8366004613475565b6001600160a01b031660009081526026602052604090205460ff1690565b3480156106d257600080fd5b5061043660085481565b3480156106e857600080fd5b506105277f000000000000000000000000000000000000000000000000000000000000000081565b34801561071c57600080fd5b5061041e611373565b34801561073157600080fd5b50610436600d5481565b34801561074757600080fd5b50600b54610527906001600160a01b031681565b34801561076757600080fd5b5061041e610776366004613492565b611457565b34801561078757600080fd5b5061041e610796366004613475565b6114e6565b3480156107a757600080fd5b50600a546104b690600160b81b900460ff1681565b3480156107c857600080fd5b5061041e6107d7366004613475565b611537565b3480156107e857600080fd5b506104366107f7366004613475565b6001600160a01b031660009081526020819052604090205490565b34801561081e57600080fd5b5061041e61162e565b34801561083357600080fd5b50610436601f5481565b34801561084957600080fd5b5061043660185481565b34801561085f57600080fd5b5061043660165481565b34801561087557600080fd5b50600c54610527906001600160a01b031681565b34801561089557600080fd5b50610436601c5481565b3480156108ab57600080fd5b506104b66108ba366004613475565b6001600160a01b031660009081526021602052604090205460ff1690565b3480156108e457600080fd5b5061043660155481565b3480156108fa57600080fd5b5060055461010090046001600160a01b0316610527565b34801561091d57600080fd5b5061043660105481565b34801561093357600080fd5b5061043660195481565b34801561094957600080fd5b506104746116ae565b34801561095e57600080fd5b5061041e61096d3660046134ab565b6116bd565b34801561097e57600080fd5b506104b661098d3660046133a3565b61188c565b34801561099e57600080fd5b5061041e6109ad366004613492565b6118db565b3480156109be57600080fd5b506104b66109cd3660046133a3565b611910565b3480156109de57600080fd5b5061041e6109ed366004613475565b61191d565b3480156109fe57600080fd5b5061041e610a0d366004613492565b611a34565b348015610a1e57600080fd5b5061041e610a2d366004613492565b611ab6565b348015610a3e57600080fd5b5061041e610a4d366004613492565b611afe565b348015610a5e57600080fd5b506104b6610a6d366004613475565b60226020526000908152604090205460ff1681565b348015610a8e57600080fd5b50610436601e5481565b348015610aa457600080fd5b5061043660175481565b348015610aba57600080fd5b5061041e610ac9366004613475565b611b8d565b348015610ada57600080fd5b5061041e610ae93660046134ab565b611bf6565b348015610afa57600080fd5b50610436601d5481565b348015610b1057600080fd5b5061041e610b1f366004613475565b611c85565b348015610b3057600080fd5b5061041e610b3f366004613492565b611cd4565b348015610b5057600080fd5b50610436610b5f3660046134e0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b9657600080fd5b5061041e610ba5366004613492565b611d81565b348015610bb657600080fd5b50610436600f5481565b348015610bcc57600080fd5b5061041e610bdb366004613492565b611e03565b348015610bec57600080fd5b5061041e610bfb366004613519565b611e7f565b348015610c0c57600080fd5b50600a546104b690600160b01b900460ff1681565b348015610c2d57600080fd5b5061041e610c3c366004613492565b611ed1565b348015610c4d57600080fd5b5061041e610c5c366004613475565b611fa7565b348015610c6d57600080fd5b5061041e610c7c366004613475565b6120a3565b6005546001600160a01b03610100909104163314610cba5760405162461bcd60e51b8152600401610cb19061353b565b60405180910390fd5b600a5460ff600160c01b9091041615158115151415610ceb5760405162461bcd60e51b8152600401610cb190613570565b80610d3b5760178054601855600090819055601554601e55601b54601954610d1c92610d16916120f7565b906120f7565b601d55600a805460ff60c01b1916600160c01b83151502179055610d77565b6018546017819055601554601e55601b54601954610d5c92610d16916120f7565b601d55600a805460ff60c01b1916600160c01b831515021790555b60405181151581527fcb92a841728ddb457f2ae8cacd140701337b71fcf057c97b6ce84c50ced7c9c5906020015b60405180910390a150565b606060038054610dbf906135a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610deb906135a7565b8015610e385780601f10610e0d57610100808354040283529160200191610e38565b820191906000526020600020905b815481529060010190602001808311610e1b57829003601f168201915b5050505050905090565b6005546001600160a01b03610100909104163314610e725760405162461bcd60e51b8152600401610cb19061353b565b6002601581905560066017819055600b60198190556004601b819055601e93909355610ea29291610d16916120f7565b601d55600a805462ffffff60b01b19166201010160b01b1790556a108b2a2c28029094000000600f908155600854600d819055600e819055610ef1916103e891610eeb9161215d565b906121dc565b601055565b6000610f03338484612237565b5060015b92915050565b6005546001600160a01b03610100909104163314610f3d5760405162461bcd60e51b8152600401610cb19061353b565b602d8460ff161115610f915760405162461bcd60e51b815260206004820152601d60248201527f62757920666565206d757374206265206c657373207468616e203435250000006044820152606401610cb1565b602d81610f9e84866135f8565b610fa891906135f8565b60ff161115610ff95760405162461bcd60e51b815260206004820152601e60248201527f73656c6c20666565206d757374206265206c657373207468616e2034352500006044820152606401610cb1565b60ff808516601555838116601b8190558382166019819055918316601781905561102692610d16916120f7565b601d555050601554601e555050565b600061104284848461235c565b611094843361108f856040518060600160405280602881526020016138d6602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612cfc565b612237565b5060019392505050565b6005546001600160a01b036101009091041633146110ce5760405162461bcd60e51b8152600401610cb19061353b565b600a5460ff600160b01b90910416151581151514156110ff5760405162461bcd60e51b8152600401610cb190613570565b80611154576015805460165560198054601a55600091829055819055601b5460175461112f92610d1691906120f7565b601d55601554601e55600a805460ff60b01b1916600160b01b83151502179055611197565b601654601555601a546019819055601b5460175461117692610d1691906120f7565b601d55601554601e55600a805460ff60b01b1916600160b01b831515021790555b60405181151581527f6ba6c1012539169f5a820a29533d8c8b797a1c7a5634edbd3124a80de0e75cba90602001610da5565b6005546001600160a01b036101009091041633146111f95760405162461bcd60e51b8152600401610cb19061353b565b600a5460ff600160b81b909104161515811515141561122a5760405162461bcd60e51b8152600401610cb190613570565b8061127b57601b8054601c556000908190556011819055601554601e5560195460175461125c9291610d1691906120f7565b601d55600a805460ff60b81b1916600160b81b831515021790556112b7565b601c54601b819055601554601e5560175460195461129c92610d16916120f7565b601d55600a805460ff60b81b1916600160b81b831515021790555b60405181151581527f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c090602001610da5565b6005546001600160a01b036101009091041633146113195760405162461bcd60e51b8152600401610cb19061353b565b6001600160a01b03166000908152602160205260409020805460ff19166001179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610f0391859061108f90866120f7565b6005546001600160a01b036101009091041633146113a35760405162461bcd60e51b8152600401610cb19061353b565b600a54600160a81b900460ff16156114165760405162461bcd60e51b815260206004820152603060248201527f63616e74207072657061726520666f722070726573616c65206f6e636520747260448201526f18591a5b99c81a5cc8195b98589b195960821b6064820152608401610cb1565b600a805460ff60a81b191690556000601581905560178190556019819055601b55600854600d819055600e819055610ef1906103e890610eeb90600f61215d565b6005546001600160a01b036101009091041633146114875760405162461bcd60e51b8152600401610cb19061353b565b6114af670de0b6b3a7640000610eeb612710610eeb600160085461215d90919063ffffffff16565b8110156114ce5760405162461bcd60e51b8152600401610cb19061361d565b6114e081670de0b6b3a7640000613672565b600e5550565b6005546001600160a01b036101009091041633146115165760405162461bcd60e51b8152600401610cb19061353b565b6001600160a01b03166000908152602660205260409020805460ff19169055565b6005546001600160a01b036101009091041633146115675760405162461bcd60e51b8152600401610cb19061353b565b6009546001600160a01b03828116911614156115d15760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610cb1565b6009546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0361010090910416331461165e5760405162461bcd60e51b8152600401610cb19061353b565b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b606060048054610dbf906135a7565b6005546001600160a01b036101009091041633146116ed5760405162461bcd60e51b8152600401610cb19061353b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156117a35760405162461bcd60e51b815260206004820152604560248201527f5468652050616e63616b655377617020706169722063616e6e6f74206265207260448201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572606482015264506169727360d81b608482015260a401610cb1565b6001600160a01b03821660009081526022602052604090205460ff16151581151514156118385760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610cb1565b6001600160a01b038216600081815260226020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6000610f03338461108f856040518060600160405280602581526020016138fe602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612cfc565b6005546001600160a01b0361010090910416331461190b5760405162461bcd60e51b8152600401610cb19061353b565b601f55565b6000610f0333848461235c565b6005546001600160a01b0361010090910416331461194d5760405162461bcd60e51b8152600401610cb19061353b565b600c546001600160a01b03828116911614156119c05760405162461bcd60e51b815260206004820152602c60248201527f546865206d61726b6574696e672077616c6c657420697320616c72656164792060448201526b74686973206164647265737360a01b6064820152608401610cb1565b6001600160a01b03808216600081815260216020526040808220805460ff19166001179055600c549051929316917f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc679190a3600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03610100909104163314611a645760405162461bcd60e51b8152600401610cb19061353b565b6064811115611ab15760405162461bcd60e51b815260206004820152601960248201527806d757374206265206265747765656e203020616e642031303603c1b6044820152606401610cb1565b601455565b6005546001600160a01b03610100909104163314611ae65760405162461bcd60e51b8152600401610cb19061353b565b611af881670de0b6b3a7640000613672565b600f5550565b6005546001600160a01b03610100909104163314611b2e5760405162461bcd60e51b8152600401610cb19061353b565b611b56670de0b6b3a7640000610eeb612710610eeb600160085461215d90919063ffffffff16565b811015611b755760405162461bcd60e51b8152600401610cb19061361d565b611b8781670de0b6b3a7640000613672565b600d5550565b6005546001600160a01b03610100909104163314611bbd5760405162461bcd60e51b8152600401610cb19061353b565b602080546001600160a01b039092166001600160a01b03199092168217815560009182526021905260409020805460ff19166001179055565b6005546001600160a01b03610100909104163314611c265760405162461bcd60e51b8152600401610cb19061353b565b6001600160a01b038216600081815260216020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03610100909104163314611cb55760405162461bcd60e51b8152600401610cb19061353b565b6001600160a01b038116611cc857600080fd5b611cd181611fa7565b50565b6005546001600160a01b03610100909104163314611d045760405162461bcd60e51b8152600401610cb19061353b565b60058054600680546001600160a01b0319166001600160a01b03610100840416179055610100600160a81b0319169055611d3e8142613691565b60075560055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6005546001600160a01b03610100909104163314611db15760405162461bcd60e51b8152600401610cb19061353b565b6064811115611dfe5760405162461bcd60e51b815260206004820152601960248201527806d757374206265206265747765656e203020616e642031303603c1b6044820152606401610cb1565b601355565b6005546001600160a01b03610100909104163314611e335760405162461bcd60e51b8152600401610cb19061353b565b600a8110611e7a5760405162461bcd60e51b815260206004820152601460248201527306d757374206265206c657373207468616e2031360641b6044820152606401610cb1565b602555565b6005546001600160a01b03610100909104163314611eaf5760405162461bcd60e51b8152600401610cb19061353b565b600a805460ff60a81b1916600160a81b17905560259190915560145542602455565b6005546001600160a01b03610100909104163314611f015760405162461bcd60e51b8152600401610cb19061353b565b611f29670de0b6b3a7640000610eeb6103e8610eeb600560085461215d90919063ffffffff16565b811015611f8f5760405162461bcd60e51b815260206004820152602e60248201527f616d6f756e74206d7573742062652067726561746572207468616e20302e352560448201526d206f662074686520737570706c7960901b6064820152608401610cb1565b611fa181670de0b6b3a7640000613672565b60105550565b6005546001600160a01b03610100909104163314611fd75760405162461bcd60e51b8152600401610cb19061353b565b6001600160a01b03811661203c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610cb1565b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6005546001600160a01b036101009091041633146120d35760405162461bcd60e51b8152600401610cb19061353b565b6001600160a01b03166000908152602660205260409020805460ff19166001179055565b6000806121048385613691565b9050838110156121565760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cb1565b9392505050565b60008261216c57506000610f07565b60006121788385613672565b90508261218585836136a9565b146121565760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610cb1565b600080821161222d5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610cb1565b61215682846136a9565b6001600160a01b0383166122995760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cb1565b6001600160a01b0382166122fa5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cb1565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166123825760405162461bcd60e51b8152600401610cb1906136cb565b6001600160a01b0382166123a85760405162461bcd60e51b8152600401610cb190613710565b600a54600160a81b900460ff16806123fa57506001600160a01b03831660009081526021602052604090205460ff16806123fa57506001600160a01b03821660009081526021602052604090205460ff165b6124465760405162461bcd60e51b815260206004820152601b60248201527f54726164696e6720686173206e6f7420737461727465642079657400000000006044820152606401610cb1565b6001600160a01b03831660009081526021602052604081205460ff168061248557506001600160a01b03831660009081526021602052604090205460ff165b600a54909150600160a81b900460ff1680156124b957506001600160a01b03841660009081526022602052604090205460ff165b80156124c3575080155b1561268857600d5482111561252b5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610cb1565b6001600160a01b03841660009081526026602052604090205460ff1615801561256d57506001600160a01b03831660009081526026602052604090205460ff16155b6125ad5760405162461bcd60e51b8152602060048201526011602482015270626f74732063616e6e6f7420747261646560781b6044820152606401610cb1565b6001600160a01b03831660009081526023602052604090204290556025546024546125d7916120f7565b421161263e576001600160a01b0383166000908152602660205260408120805460ff1916600117905560145461261590606490610eeb90869061215d565b90506126218382612d33565b600a5490935061263c9086906001600160a01b031683612d8f565b505b6001600160a01b0383166000908152602081905260409020546010546126648483613691565b11156126825760405162461bcd60e51b8152600401610cb190613753565b50612a75565b600a54600160a81b900460ff1680156126b957506001600160a01b03831660009081526022602052604090205460ff165b80156126c3575080155b156129f0576001600160a01b03841660009081526026602052604090205460ff1615801561270a57506001600160a01b03831660009081526026602052604090205460ff16155b61274a5760405162461bcd60e51b8152602060048201526011602482015270626f74732063616e6e6f7420747261646560781b6044820152606401610cb1565b600e548211156127c25760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610cb1565b6025546001600160a01b0385166000908152602360205260409020546127e89042613797565b11612815576001600160a01b0384166000908152602660205260409020805460ff19166001179055612831565b6001600160a01b03841660009081526023602052604090204290555b30600090815260208190526040902054600f54600a549082101590600160a01b900460ff161580156128605750805b156129e957600a805460ff60a01b1916600160a01b179055600080612883612e98565b600a54909150600160b81b900460ff16156128e5576128a184612fb9565b60004790506128cd601d54610eeb601b546128c760115486612d3390919063ffffffff16565b9061215d565b60118190556128dd908290612d33565b9250506128f2565b6128ee84612fb9565b4791505b600a54600160b01b900460ff161561293c576000612921601d54610eeb6019548661215d90919063ffffffff16565b600c5490915061293a906001600160a01b031682613122565b505b600a54600160b81b900460ff16801561296a575061012c61296860125442612d3390919063ffffffff16565b115b156129d957603281111580612994575061025861299260125442612d3390919063ffffffff16565b115b156129d95760006129b76064610eeb60135460115461215d90919063ffffffff16565b6011549091506129c79082612d33565b6011556129d38161315d565b50426012555b5050600a805460ff60a01b191690555b5050612a75565b6001600160a01b03841660009081526026602052604090205460ff16158015612a3257506001600160a01b03831660009081526026602052604090205460ff16155b612a755760405162461bcd60e51b81526020600482015260146024820152733137ba399031b0b73737ba103a3930b739b332b960611b6044820152606401610cb1565b600a54600090600160a81b900460ff168015612a9b5750600a54600160a01b900460ff16155b8015612aa5575081155b90508015612cea576001600160a01b038516600090815260226020526040812054819060ff1615612af157612aea6064610eeb601e548861215d90919063ffffffff16565b9150612c65565b6001600160a01b03861660009081526022602052604090205460ff1615612b9157612b2c6064610eeb601d548861215d90919063ffffffff16565b600a54909250600160c01b900460ff1615612b8c576000612b5e601d54610eeb6017548661215d90919063ffffffff16565b9050612b6a8382612d33565b600b549093509091508190612b8a9089906001600160a01b031683612d8f565b505b612c65565b6001600160a01b038616600090815260208190526040902054601054612bb78783613691565b1115612bd55760405162461bcd60e51b8152600401610cb190613753565b6000612bf36064610eeb601f54601d5461215d90919063ffffffff16565b9050612c046064610eeb898461215d565b600a54909450600160c01b900460ff1615612c62576000612c3482610eeb6017548861215d90919063ffffffff16565b9050612c408582612d33565b600b549095509093508390612c60908b906001600160a01b031683612d8f565b505b50505b6001600160a01b03871660009081526026602052604090205460ff1680612ca457506001600160a01b03861660009081526026602052604090205460ff165b15612cc657612cc36064610eeb6014548861215d90919063ffffffff16565b91505b612cda612cd383836120f7565b8690612d33565b9450612ce7873084612d8f565b50505b612cf5858585612d8f565b5050505050565b60008184841115612d205760405162461bcd60e51b8152600401610cb19190613339565b50612d2b8385613797565b949350505050565b600082821115612d855760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610cb1565b6121568284613797565b6001600160a01b038316612db55760405162461bcd60e51b8152600401610cb1906136cb565b6001600160a01b038216612ddb5760405162461bcd60e51b8152600401610cb190613710565b612e18816040518060600160405280602681526020016138b0602691396001600160a01b0386166000908152602081905260409020549190612cfc565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612e4790826120f7565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161234f565b6040516bffffffffffffffffffffffff193360601b1660208201526000908190439042906034016040516020818303038152906040528051906020012060001c612ee291906136a9565b6040516bffffffffffffffffffffffff194160601b166020820152459042906034016040516020818303038152906040528051906020012060001c612f2791906136a9565b612f314442613691565b612f3b9190613691565b612f459190613691565b612f4f9190613691565b612f599190613691565b604051602001612f6b91815260200190565b60408051601f19818403018152919052805160209091012090506000612f926064836136a9565b612f9d906064613672565b612fa79083613797565b905080610f0757612156600182613691565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612fee57612fee6137ae565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561304257600080fd5b505afa158015613056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307a91906137c4565b8160018151811061308d5761308d6137ae565b6001600160a01b0392831660209182029290920101526009546130b39130911684612237565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906130ec908590600090869030904290600401613825565b600060405180830381600087803b15801561310657600080fd5b505af115801561311a573d6000803e3d6000fd5b505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015613158573d6000803e3d6000fd5b505050565b6040805160028082526060820183526000926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156131c257600080fd5b505afa1580156131d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131fa91906137c4565b8160008151811061320d5761320d6137ae565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110613241576132416137ae565b6001600160a01b039283166020918202929092010152600954600a549082169163b6f9de9591859160009186911661327b4261012c6120f7565b6040518663ffffffff1660e01b815260040161329a9493929190613861565b6000604051808303818588803b1580156132b357600080fd5b505af11580156132c7573d6000803e3d6000fd5b50505050507fd79349298b0eadebdb47b2a093b1596f41af709d6a3bc3d848b9e8821df4807282826040516132fd929190613896565b60405180910390a15050565b8035801515811461331957600080fd5b919050565b60006020828403121561333057600080fd5b61215682613309565b600060208083528351808285015260005b818110156133665785810183015185820160400152820161334a565b81811115613378576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611cd157600080fd5b600080604083850312156133b657600080fd5b82356133c18161338e565b946020939093013593505050565b803560ff8116811461331957600080fd5b600080600080608085870312156133f657600080fd5b6133ff856133cf565b935061340d602086016133cf565b925061341b604086016133cf565b9150613429606086016133cf565b905092959194509250565b60008060006060848603121561344957600080fd5b83356134548161338e565b925060208401356134648161338e565b929592945050506040919091013590565b60006020828403121561348757600080fd5b81356121568161338e565b6000602082840312156134a457600080fd5b5035919050565b600080604083850312156134be57600080fd5b82356134c98161338e565b91506134d760208401613309565b90509250929050565b600080604083850312156134f357600080fd5b82356134fe8161338e565b9150602083013561350e8161338e565b809150509250929050565b6000806040838503121561352c57600080fd5b50508035926020909101359150565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601d908201527f43616e27742073657420666c616720746f2073616d6520737461747573000000604082015260600190565b600181811c908216806135bb57607f821691505b602082108114156135dc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff84168060ff03821115613615576136156135e2565b019392505050565b60208082526035908201527f616d6f756e74206d7573742062652067726561746572207468616e20302e303160408201527425206f662074686520746f74616c20737570706c7960581b606082015260800190565b600081600019048311821515161561368c5761368c6135e2565b500290565b600082198211156136a4576136a46135e2565b500190565b6000826136c657634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6040820152633ab73a1760e11b606082015260800190565b6000828210156137a9576137a96135e2565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156137d657600080fd5b81516121568161338e565b600081518084526020808501945080840160005b8381101561381a5781516001600160a01b0316875295820195908201906001016137f5565b509495945050505050565b85815284602082015260a06040820152600061384460a08301866137e1565b6001600160a01b0394909416606083015250608001529392505050565b84815260806020820152600061387a60808301866137e1565b6001600160a01b03949094166040830152506060015292915050565b828152604060208201526000612d2b60408301846137e156fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201521a93a8e1c4a8f8915fef672b8e75c1cfe01e34469fd64464e14cb910b4c7d64736f6c634300080900334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572000000000000000000000000703b92653d117e7487767afa4c83a96451ae371f000000000000000000000000ac6aa7df7521db8868b0160d06d6094bc76d192e

Deployed Bytecode

0x6080604052600436106103f25760003560e01c806374170d8a11610208578063b62496f511610118578063dd62ed3e116100ab578063e7a919f91161007a578063e7a919f914610be0578063e84d44f814610c00578063ea1644d514610c21578063f2fde38b14610c41578063ffecf51614610c6157600080fd5b8063dd62ed3e14610b44578063dd90e1d814610b8a578063e2f4560514610baa578063e4924f1814610bc057600080fd5b8063c0246668116100e7578063c024666814610ace578063d0a3981414610aee578063d29d44ee14610b04578063dd46706414610b2457600080fd5b8063b62496f514610a52578063b9e9370014610a82578063bb8d513114610a98578063bd0abd3a14610aae57600080fd5b806395d89b411161019b578063a9059cbb1161016a578063a9059cbb146109b2578063aacebbe3146109d2578063af24aa1c146109f2578063afa4f3b214610a12578063b3b5e04314610a3257600080fd5b806395d89b411461093d5780639a7a23d614610952578063a457c2d714610972578063a850673d1461099257600080fd5b80637bce5a04116101d75780637bce5a04146108d85780638da5cb5b146108ee5780638f3fa86014610911578063921369131461092757600080fd5b806374170d8a1461085357806375f0a8741461086957806379012f33146108895780637b16cea01461089f57600080fd5b8063313ce567116103035780635b35f9c91161029657806365b8dbc01161026557806365b8dbc0146107bc57806370a08231146107dc578063715018a61461081257806372b2aecc14610827578063738bc3231461083d57600080fd5b80635b35f9c91461073b5780635c38ffe21461075b5780635fecd9261461077b5780636053a0e31461079b57600080fd5b80633eaaf86b116102d25780633eaaf86b146106c657806349bd5a5e146106dc5780635134f6ab146107105780635aa821a91461072557600080fd5b8063313ce5671461062b5780633395155e1461064d578063395093511461066d5780633bbac5791461068d57600080fd5b8063122fe685116103865780631dafe16b116103555780631dafe16b1461058a57806323b872dd146105ab578063263b5fcb146105cb57806327c8f835146105eb57806329370cc61461060b57600080fd5b8063122fe685146105075780631694505e1461053f57806318160ddd1461055f5780631a221dbb1461057457600080fd5b806307efbfdc116103c257806307efbfdc14610481578063095ea7b31461049657806309c58fcd146104c65780630aa75f6b146104e757600080fd5b806253d798146103fe57806302259e9e1461042057806305ad06881461044957806306fdde031461045f57600080fd5b366103f957005b600080fd5b34801561040a57600080fd5b5061041e61041936600461331e565b610c81565b005b34801561042c57600080fd5b50610436600e5481565b6040519081526020015b60405180910390f35b34801561045557600080fd5b50610436601a5481565b34801561046b57600080fd5b50610474610db0565b6040516104409190613339565b34801561048d57600080fd5b5061041e610e42565b3480156104a257600080fd5b506104b66104b13660046133a3565b610ef6565b6040519015158152602001610440565b3480156104d257600080fd5b50600a546104b690600160a81b900460ff1681565b3480156104f357600080fd5b5061041e6105023660046133e0565b610f0d565b34801561051357600080fd5b50602054610527906001600160a01b031681565b6040516001600160a01b039091168152602001610440565b34801561054b57600080fd5b50600954610527906001600160a01b031681565b34801561056b57600080fd5b50600254610436565b34801561058057600080fd5b50610436601b5481565b34801561059657600080fd5b50600a546104b690600160c01b900460ff1681565b3480156105b757600080fd5b506104b66105c6366004613434565b611035565b3480156105d757600080fd5b5061041e6105e636600461331e565b61109e565b3480156105f757600080fd5b50600a54610527906001600160a01b031681565b34801561061757600080fd5b5061041e61062636600461331e565b6111c9565b34801561063757600080fd5b5060055460405160ff9091168152602001610440565b34801561065957600080fd5b5061041e610668366004613475565b6112e9565b34801561067957600080fd5b506104b66106883660046133a3565b61133d565b34801561069957600080fd5b506104b66106a8366004613475565b6001600160a01b031660009081526026602052604090205460ff1690565b3480156106d257600080fd5b5061043660085481565b3480156106e857600080fd5b506105277f0000000000000000000000006227f3d6047d7edae53784ab6039c6efde4092d981565b34801561071c57600080fd5b5061041e611373565b34801561073157600080fd5b50610436600d5481565b34801561074757600080fd5b50600b54610527906001600160a01b031681565b34801561076757600080fd5b5061041e610776366004613492565b611457565b34801561078757600080fd5b5061041e610796366004613475565b6114e6565b3480156107a757600080fd5b50600a546104b690600160b81b900460ff1681565b3480156107c857600080fd5b5061041e6107d7366004613475565b611537565b3480156107e857600080fd5b506104366107f7366004613475565b6001600160a01b031660009081526020819052604090205490565b34801561081e57600080fd5b5061041e61162e565b34801561083357600080fd5b50610436601f5481565b34801561084957600080fd5b5061043660185481565b34801561085f57600080fd5b5061043660165481565b34801561087557600080fd5b50600c54610527906001600160a01b031681565b34801561089557600080fd5b50610436601c5481565b3480156108ab57600080fd5b506104b66108ba366004613475565b6001600160a01b031660009081526021602052604090205460ff1690565b3480156108e457600080fd5b5061043660155481565b3480156108fa57600080fd5b5060055461010090046001600160a01b0316610527565b34801561091d57600080fd5b5061043660105481565b34801561093357600080fd5b5061043660195481565b34801561094957600080fd5b506104746116ae565b34801561095e57600080fd5b5061041e61096d3660046134ab565b6116bd565b34801561097e57600080fd5b506104b661098d3660046133a3565b61188c565b34801561099e57600080fd5b5061041e6109ad366004613492565b6118db565b3480156109be57600080fd5b506104b66109cd3660046133a3565b611910565b3480156109de57600080fd5b5061041e6109ed366004613475565b61191d565b3480156109fe57600080fd5b5061041e610a0d366004613492565b611a34565b348015610a1e57600080fd5b5061041e610a2d366004613492565b611ab6565b348015610a3e57600080fd5b5061041e610a4d366004613492565b611afe565b348015610a5e57600080fd5b506104b6610a6d366004613475565b60226020526000908152604090205460ff1681565b348015610a8e57600080fd5b50610436601e5481565b348015610aa457600080fd5b5061043660175481565b348015610aba57600080fd5b5061041e610ac9366004613475565b611b8d565b348015610ada57600080fd5b5061041e610ae93660046134ab565b611bf6565b348015610afa57600080fd5b50610436601d5481565b348015610b1057600080fd5b5061041e610b1f366004613475565b611c85565b348015610b3057600080fd5b5061041e610b3f366004613492565b611cd4565b348015610b5057600080fd5b50610436610b5f3660046134e0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b9657600080fd5b5061041e610ba5366004613492565b611d81565b348015610bb657600080fd5b50610436600f5481565b348015610bcc57600080fd5b5061041e610bdb366004613492565b611e03565b348015610bec57600080fd5b5061041e610bfb366004613519565b611e7f565b348015610c0c57600080fd5b50600a546104b690600160b01b900460ff1681565b348015610c2d57600080fd5b5061041e610c3c366004613492565b611ed1565b348015610c4d57600080fd5b5061041e610c5c366004613475565b611fa7565b348015610c6d57600080fd5b5061041e610c7c366004613475565b6120a3565b6005546001600160a01b03610100909104163314610cba5760405162461bcd60e51b8152600401610cb19061353b565b60405180910390fd5b600a5460ff600160c01b9091041615158115151415610ceb5760405162461bcd60e51b8152600401610cb190613570565b80610d3b5760178054601855600090819055601554601e55601b54601954610d1c92610d16916120f7565b906120f7565b601d55600a805460ff60c01b1916600160c01b83151502179055610d77565b6018546017819055601554601e55601b54601954610d5c92610d16916120f7565b601d55600a805460ff60c01b1916600160c01b831515021790555b60405181151581527fcb92a841728ddb457f2ae8cacd140701337b71fcf057c97b6ce84c50ced7c9c5906020015b60405180910390a150565b606060038054610dbf906135a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610deb906135a7565b8015610e385780601f10610e0d57610100808354040283529160200191610e38565b820191906000526020600020905b815481529060010190602001808311610e1b57829003601f168201915b5050505050905090565b6005546001600160a01b03610100909104163314610e725760405162461bcd60e51b8152600401610cb19061353b565b6002601581905560066017819055600b60198190556004601b819055601e93909355610ea29291610d16916120f7565b601d55600a805462ffffff60b01b19166201010160b01b1790556a108b2a2c28029094000000600f908155600854600d819055600e819055610ef1916103e891610eeb9161215d565b906121dc565b601055565b6000610f03338484612237565b5060015b92915050565b6005546001600160a01b03610100909104163314610f3d5760405162461bcd60e51b8152600401610cb19061353b565b602d8460ff161115610f915760405162461bcd60e51b815260206004820152601d60248201527f62757920666565206d757374206265206c657373207468616e203435250000006044820152606401610cb1565b602d81610f9e84866135f8565b610fa891906135f8565b60ff161115610ff95760405162461bcd60e51b815260206004820152601e60248201527f73656c6c20666565206d757374206265206c657373207468616e2034352500006044820152606401610cb1565b60ff808516601555838116601b8190558382166019819055918316601781905561102692610d16916120f7565b601d555050601554601e555050565b600061104284848461235c565b611094843361108f856040518060600160405280602881526020016138d6602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612cfc565b612237565b5060019392505050565b6005546001600160a01b036101009091041633146110ce5760405162461bcd60e51b8152600401610cb19061353b565b600a5460ff600160b01b90910416151581151514156110ff5760405162461bcd60e51b8152600401610cb190613570565b80611154576015805460165560198054601a55600091829055819055601b5460175461112f92610d1691906120f7565b601d55601554601e55600a805460ff60b01b1916600160b01b83151502179055611197565b601654601555601a546019819055601b5460175461117692610d1691906120f7565b601d55601554601e55600a805460ff60b01b1916600160b01b831515021790555b60405181151581527f6ba6c1012539169f5a820a29533d8c8b797a1c7a5634edbd3124a80de0e75cba90602001610da5565b6005546001600160a01b036101009091041633146111f95760405162461bcd60e51b8152600401610cb19061353b565b600a5460ff600160b81b909104161515811515141561122a5760405162461bcd60e51b8152600401610cb190613570565b8061127b57601b8054601c556000908190556011819055601554601e5560195460175461125c9291610d1691906120f7565b601d55600a805460ff60b81b1916600160b81b831515021790556112b7565b601c54601b819055601554601e5560175460195461129c92610d16916120f7565b601d55600a805460ff60b81b1916600160b81b831515021790555b60405181151581527f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c090602001610da5565b6005546001600160a01b036101009091041633146113195760405162461bcd60e51b8152600401610cb19061353b565b6001600160a01b03166000908152602160205260409020805460ff19166001179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610f0391859061108f90866120f7565b6005546001600160a01b036101009091041633146113a35760405162461bcd60e51b8152600401610cb19061353b565b600a54600160a81b900460ff16156114165760405162461bcd60e51b815260206004820152603060248201527f63616e74207072657061726520666f722070726573616c65206f6e636520747260448201526f18591a5b99c81a5cc8195b98589b195960821b6064820152608401610cb1565b600a805460ff60a81b191690556000601581905560178190556019819055601b55600854600d819055600e819055610ef1906103e890610eeb90600f61215d565b6005546001600160a01b036101009091041633146114875760405162461bcd60e51b8152600401610cb19061353b565b6114af670de0b6b3a7640000610eeb612710610eeb600160085461215d90919063ffffffff16565b8110156114ce5760405162461bcd60e51b8152600401610cb19061361d565b6114e081670de0b6b3a7640000613672565b600e5550565b6005546001600160a01b036101009091041633146115165760405162461bcd60e51b8152600401610cb19061353b565b6001600160a01b03166000908152602660205260409020805460ff19169055565b6005546001600160a01b036101009091041633146115675760405162461bcd60e51b8152600401610cb19061353b565b6009546001600160a01b03828116911614156115d15760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610cb1565b6009546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0361010090910416331461165e5760405162461bcd60e51b8152600401610cb19061353b565b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b606060048054610dbf906135a7565b6005546001600160a01b036101009091041633146116ed5760405162461bcd60e51b8152600401610cb19061353b565b7f0000000000000000000000006227f3d6047d7edae53784ab6039c6efde4092d96001600160a01b0316826001600160a01b031614156117a35760405162461bcd60e51b815260206004820152604560248201527f5468652050616e63616b655377617020706169722063616e6e6f74206265207260448201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572606482015264506169727360d81b608482015260a401610cb1565b6001600160a01b03821660009081526022602052604090205460ff16151581151514156118385760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610cb1565b6001600160a01b038216600081815260226020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6000610f03338461108f856040518060600160405280602581526020016138fe602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612cfc565b6005546001600160a01b0361010090910416331461190b5760405162461bcd60e51b8152600401610cb19061353b565b601f55565b6000610f0333848461235c565b6005546001600160a01b0361010090910416331461194d5760405162461bcd60e51b8152600401610cb19061353b565b600c546001600160a01b03828116911614156119c05760405162461bcd60e51b815260206004820152602c60248201527f546865206d61726b6574696e672077616c6c657420697320616c72656164792060448201526b74686973206164647265737360a01b6064820152608401610cb1565b6001600160a01b03808216600081815260216020526040808220805460ff19166001179055600c549051929316917f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc679190a3600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03610100909104163314611a645760405162461bcd60e51b8152600401610cb19061353b565b6064811115611ab15760405162461bcd60e51b815260206004820152601960248201527806d757374206265206265747765656e203020616e642031303603c1b6044820152606401610cb1565b601455565b6005546001600160a01b03610100909104163314611ae65760405162461bcd60e51b8152600401610cb19061353b565b611af881670de0b6b3a7640000613672565b600f5550565b6005546001600160a01b03610100909104163314611b2e5760405162461bcd60e51b8152600401610cb19061353b565b611b56670de0b6b3a7640000610eeb612710610eeb600160085461215d90919063ffffffff16565b811015611b755760405162461bcd60e51b8152600401610cb19061361d565b611b8781670de0b6b3a7640000613672565b600d5550565b6005546001600160a01b03610100909104163314611bbd5760405162461bcd60e51b8152600401610cb19061353b565b602080546001600160a01b039092166001600160a01b03199092168217815560009182526021905260409020805460ff19166001179055565b6005546001600160a01b03610100909104163314611c265760405162461bcd60e51b8152600401610cb19061353b565b6001600160a01b038216600081815260216020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03610100909104163314611cb55760405162461bcd60e51b8152600401610cb19061353b565b6001600160a01b038116611cc857600080fd5b611cd181611fa7565b50565b6005546001600160a01b03610100909104163314611d045760405162461bcd60e51b8152600401610cb19061353b565b60058054600680546001600160a01b0319166001600160a01b03610100840416179055610100600160a81b0319169055611d3e8142613691565b60075560055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6005546001600160a01b03610100909104163314611db15760405162461bcd60e51b8152600401610cb19061353b565b6064811115611dfe5760405162461bcd60e51b815260206004820152601960248201527806d757374206265206265747765656e203020616e642031303603c1b6044820152606401610cb1565b601355565b6005546001600160a01b03610100909104163314611e335760405162461bcd60e51b8152600401610cb19061353b565b600a8110611e7a5760405162461bcd60e51b815260206004820152601460248201527306d757374206265206c657373207468616e2031360641b6044820152606401610cb1565b602555565b6005546001600160a01b03610100909104163314611eaf5760405162461bcd60e51b8152600401610cb19061353b565b600a805460ff60a81b1916600160a81b17905560259190915560145542602455565b6005546001600160a01b03610100909104163314611f015760405162461bcd60e51b8152600401610cb19061353b565b611f29670de0b6b3a7640000610eeb6103e8610eeb600560085461215d90919063ffffffff16565b811015611f8f5760405162461bcd60e51b815260206004820152602e60248201527f616d6f756e74206d7573742062652067726561746572207468616e20302e352560448201526d206f662074686520737570706c7960901b6064820152608401610cb1565b611fa181670de0b6b3a7640000613672565b60105550565b6005546001600160a01b03610100909104163314611fd75760405162461bcd60e51b8152600401610cb19061353b565b6001600160a01b03811661203c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610cb1565b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6005546001600160a01b036101009091041633146120d35760405162461bcd60e51b8152600401610cb19061353b565b6001600160a01b03166000908152602660205260409020805460ff19166001179055565b6000806121048385613691565b9050838110156121565760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cb1565b9392505050565b60008261216c57506000610f07565b60006121788385613672565b90508261218585836136a9565b146121565760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610cb1565b600080821161222d5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610cb1565b61215682846136a9565b6001600160a01b0383166122995760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cb1565b6001600160a01b0382166122fa5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cb1565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166123825760405162461bcd60e51b8152600401610cb1906136cb565b6001600160a01b0382166123a85760405162461bcd60e51b8152600401610cb190613710565b600a54600160a81b900460ff16806123fa57506001600160a01b03831660009081526021602052604090205460ff16806123fa57506001600160a01b03821660009081526021602052604090205460ff165b6124465760405162461bcd60e51b815260206004820152601b60248201527f54726164696e6720686173206e6f7420737461727465642079657400000000006044820152606401610cb1565b6001600160a01b03831660009081526021602052604081205460ff168061248557506001600160a01b03831660009081526021602052604090205460ff165b600a54909150600160a81b900460ff1680156124b957506001600160a01b03841660009081526022602052604090205460ff165b80156124c3575080155b1561268857600d5482111561252b5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610cb1565b6001600160a01b03841660009081526026602052604090205460ff1615801561256d57506001600160a01b03831660009081526026602052604090205460ff16155b6125ad5760405162461bcd60e51b8152602060048201526011602482015270626f74732063616e6e6f7420747261646560781b6044820152606401610cb1565b6001600160a01b03831660009081526023602052604090204290556025546024546125d7916120f7565b421161263e576001600160a01b0383166000908152602660205260408120805460ff1916600117905560145461261590606490610eeb90869061215d565b90506126218382612d33565b600a5490935061263c9086906001600160a01b031683612d8f565b505b6001600160a01b0383166000908152602081905260409020546010546126648483613691565b11156126825760405162461bcd60e51b8152600401610cb190613753565b50612a75565b600a54600160a81b900460ff1680156126b957506001600160a01b03831660009081526022602052604090205460ff165b80156126c3575080155b156129f0576001600160a01b03841660009081526026602052604090205460ff1615801561270a57506001600160a01b03831660009081526026602052604090205460ff16155b61274a5760405162461bcd60e51b8152602060048201526011602482015270626f74732063616e6e6f7420747261646560781b6044820152606401610cb1565b600e548211156127c25760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610cb1565b6025546001600160a01b0385166000908152602360205260409020546127e89042613797565b11612815576001600160a01b0384166000908152602660205260409020805460ff19166001179055612831565b6001600160a01b03841660009081526023602052604090204290555b30600090815260208190526040902054600f54600a549082101590600160a01b900460ff161580156128605750805b156129e957600a805460ff60a01b1916600160a01b179055600080612883612e98565b600a54909150600160b81b900460ff16156128e5576128a184612fb9565b60004790506128cd601d54610eeb601b546128c760115486612d3390919063ffffffff16565b9061215d565b60118190556128dd908290612d33565b9250506128f2565b6128ee84612fb9565b4791505b600a54600160b01b900460ff161561293c576000612921601d54610eeb6019548661215d90919063ffffffff16565b600c5490915061293a906001600160a01b031682613122565b505b600a54600160b81b900460ff16801561296a575061012c61296860125442612d3390919063ffffffff16565b115b156129d957603281111580612994575061025861299260125442612d3390919063ffffffff16565b115b156129d95760006129b76064610eeb60135460115461215d90919063ffffffff16565b6011549091506129c79082612d33565b6011556129d38161315d565b50426012555b5050600a805460ff60a01b191690555b5050612a75565b6001600160a01b03841660009081526026602052604090205460ff16158015612a3257506001600160a01b03831660009081526026602052604090205460ff16155b612a755760405162461bcd60e51b81526020600482015260146024820152733137ba399031b0b73737ba103a3930b739b332b960611b6044820152606401610cb1565b600a54600090600160a81b900460ff168015612a9b5750600a54600160a01b900460ff16155b8015612aa5575081155b90508015612cea576001600160a01b038516600090815260226020526040812054819060ff1615612af157612aea6064610eeb601e548861215d90919063ffffffff16565b9150612c65565b6001600160a01b03861660009081526022602052604090205460ff1615612b9157612b2c6064610eeb601d548861215d90919063ffffffff16565b600a54909250600160c01b900460ff1615612b8c576000612b5e601d54610eeb6017548661215d90919063ffffffff16565b9050612b6a8382612d33565b600b549093509091508190612b8a9089906001600160a01b031683612d8f565b505b612c65565b6001600160a01b038616600090815260208190526040902054601054612bb78783613691565b1115612bd55760405162461bcd60e51b8152600401610cb190613753565b6000612bf36064610eeb601f54601d5461215d90919063ffffffff16565b9050612c046064610eeb898461215d565b600a54909450600160c01b900460ff1615612c62576000612c3482610eeb6017548861215d90919063ffffffff16565b9050612c408582612d33565b600b549095509093508390612c60908b906001600160a01b031683612d8f565b505b50505b6001600160a01b03871660009081526026602052604090205460ff1680612ca457506001600160a01b03861660009081526026602052604090205460ff165b15612cc657612cc36064610eeb6014548861215d90919063ffffffff16565b91505b612cda612cd383836120f7565b8690612d33565b9450612ce7873084612d8f565b50505b612cf5858585612d8f565b5050505050565b60008184841115612d205760405162461bcd60e51b8152600401610cb19190613339565b50612d2b8385613797565b949350505050565b600082821115612d855760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610cb1565b6121568284613797565b6001600160a01b038316612db55760405162461bcd60e51b8152600401610cb1906136cb565b6001600160a01b038216612ddb5760405162461bcd60e51b8152600401610cb190613710565b612e18816040518060600160405280602681526020016138b0602691396001600160a01b0386166000908152602081905260409020549190612cfc565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612e4790826120f7565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161234f565b6040516bffffffffffffffffffffffff193360601b1660208201526000908190439042906034016040516020818303038152906040528051906020012060001c612ee291906136a9565b6040516bffffffffffffffffffffffff194160601b166020820152459042906034016040516020818303038152906040528051906020012060001c612f2791906136a9565b612f314442613691565b612f3b9190613691565b612f459190613691565b612f4f9190613691565b612f599190613691565b604051602001612f6b91815260200190565b60408051601f19818403018152919052805160209091012090506000612f926064836136a9565b612f9d906064613672565b612fa79083613797565b905080610f0757612156600182613691565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612fee57612fee6137ae565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561304257600080fd5b505afa158015613056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307a91906137c4565b8160018151811061308d5761308d6137ae565b6001600160a01b0392831660209182029290920101526009546130b39130911684612237565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906130ec908590600090869030904290600401613825565b600060405180830381600087803b15801561310657600080fd5b505af115801561311a573d6000803e3d6000fd5b505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015613158573d6000803e3d6000fd5b505050565b6040805160028082526060820183526000926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156131c257600080fd5b505afa1580156131d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131fa91906137c4565b8160008151811061320d5761320d6137ae565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110613241576132416137ae565b6001600160a01b039283166020918202929092010152600954600a549082169163b6f9de9591859160009186911661327b4261012c6120f7565b6040518663ffffffff1660e01b815260040161329a9493929190613861565b6000604051808303818588803b1580156132b357600080fd5b505af11580156132c7573d6000803e3d6000fd5b50505050507fd79349298b0eadebdb47b2a093b1596f41af709d6a3bc3d848b9e8821df4807282826040516132fd929190613896565b60405180910390a15050565b8035801515811461331957600080fd5b919050565b60006020828403121561333057600080fd5b61215682613309565b600060208083528351808285015260005b818110156133665785810183015185820160400152820161334a565b81811115613378576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611cd157600080fd5b600080604083850312156133b657600080fd5b82356133c18161338e565b946020939093013593505050565b803560ff8116811461331957600080fd5b600080600080608085870312156133f657600080fd5b6133ff856133cf565b935061340d602086016133cf565b925061341b604086016133cf565b9150613429606086016133cf565b905092959194509250565b60008060006060848603121561344957600080fd5b83356134548161338e565b925060208401356134648161338e565b929592945050506040919091013590565b60006020828403121561348757600080fd5b81356121568161338e565b6000602082840312156134a457600080fd5b5035919050565b600080604083850312156134be57600080fd5b82356134c98161338e565b91506134d760208401613309565b90509250929050565b600080604083850312156134f357600080fd5b82356134fe8161338e565b9150602083013561350e8161338e565b809150509250929050565b6000806040838503121561352c57600080fd5b50508035926020909101359150565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601d908201527f43616e27742073657420666c616720746f2073616d6520737461747573000000604082015260600190565b600181811c908216806135bb57607f821691505b602082108114156135dc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff84168060ff03821115613615576136156135e2565b019392505050565b60208082526035908201527f616d6f756e74206d7573742062652067726561746572207468616e20302e303160408201527425206f662074686520746f74616c20737570706c7960581b606082015260800190565b600081600019048311821515161561368c5761368c6135e2565b500290565b600082198211156136a4576136a46135e2565b500190565b6000826136c657634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6040820152633ab73a1760e11b606082015260800190565b6000828210156137a9576137a96135e2565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156137d657600080fd5b81516121568161338e565b600081518084526020808501945080840160005b8381101561381a5781516001600160a01b0316875295820195908201906001016137f5565b509495945050505050565b85815284602082015260a06040820152600061384460a08301866137e1565b6001600160a01b0394909416606083015250608001529392505050565b84815260806020820152600061387a60808301866137e1565b6001600160a01b03949094166040830152506060015292915050565b828152604060208201526000612d2b60408301846137e156fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201521a93a8e1c4a8f8915fef672b8e75c1cfe01e34469fd64464e14cb910b4c7d64736f6c63430008090033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000703b92653d117e7487767afa4c83a96451ae371f000000000000000000000000ac6aa7df7521db8868b0160d06d6094bc76d192e

-----Decoded View---------------
Arg [0] : _marketingWallet (address): 0x703B92653d117e7487767aFa4C83A96451AE371f
Arg [1] : _rewardsWallet (address): 0xaC6aA7Df7521DB8868b0160D06d6094bc76D192e

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000703b92653d117e7487767afa4c83a96451ae371f
Arg [1] : 000000000000000000000000ac6aa7df7521db8868b0160d06d6094bc76d192e


Deployed Bytecode Sourcemap

32479:20455:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40346:745;;;;;;;;;;-1:-1:-1;40346:745:0;;;;;:::i;:::-;;:::i;:::-;;33121:39;;;;;;;;;;;;;;;;;;;510:25:1;;;498:2;483:18;33121:39:0;;;;;;;;33596;;;;;;;;;;;;;;;;8262:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;38706:597::-;;;;;;;;;;;;;:::i;10408:169::-;;;;;;;;;;-1:-1:-1;10408:169:0;;;;;:::i;:::-;;:::i;:::-;;;1769:14:1;;1762:22;1744:41;;1732:2;1717:18;10408:169:0;1604:187:1;32828:36:0;;;;;;;;;;-1:-1:-1;32828:36:0;;;;-1:-1:-1;;;32828:36:0;;;;;;42028:632;;;;;;;;;;-1:-1:-1;42028:632:0;;;;;:::i;:::-;;:::i;33848:29::-;;;;;;;;;;-1:-1:-1;33848:29:0;;;;-1:-1:-1;;;;;33848:29:0;;;;;;-1:-1:-1;;;;;2519:32:1;;;2501:51;;2489:2;2474:18;33848:29:0;2355:203:1;32622:41:0;;;;;;;;;;-1:-1:-1;32622:41:0;;;;-1:-1:-1;;;;;32622:41:0;;;9361:108;;;;;;;;;;-1:-1:-1;9449:12:0;;9361:108;;33642:29;;;;;;;;;;;;;;;;32955:34;;;;;;;;;;-1:-1:-1;32955:34:0;;;;-1:-1:-1;;;32955:34:0;;;;;;11059:321;;;;;;;;;;-1:-1:-1;11059:321:0;;;;;:::i;:::-;;:::i;41109:911::-;;;;;;;;;;-1:-1:-1;41109:911:0;;;;;:::i;:::-;;:::i;32720:71::-;;;;;;;;;;-1:-1:-1;32720:71:0;;;;-1:-1:-1;;;;;32720:71:0;;;39548:786;;;;;;;;;;-1:-1:-1;39548:786:0;;;;;:::i;:::-;;:::i;9205:91::-;;;;;;;;;;-1:-1:-1;9279:9:0;;9205:91;;9279:9;;;;3401:36:1;;3389:2;3374:18;9205:91:0;3259:184:1;36646:168:0;;;;;;;;;;-1:-1:-1;36646:168:0;;;;;:::i;:::-;;:::i;11789:218::-;;;;;;;;;;-1:-1:-1;11789:218:0;;;;;:::i;:::-;;:::i;50894:98::-;;;;;;;;;;-1:-1:-1;50894:98:0;;;;;:::i;:::-;-1:-1:-1;;;;;50971:13:0;50947:4;50971:13;;;:4;:13;;;;;;;;;50894:98;32557:56;;;;;;;;;;;;;;;;32670:38;;;;;;;;;;;;;;;38238:460;;;;;;;;;;;;;:::i;33076:38::-;;;;;;;;;;;;;;;;32998:28;;;;;;;;;;-1:-1:-1;32998:28:0;;;;-1:-1:-1;;;;;32998:28:0;;;37092:260;;;;;;;;;;-1:-1:-1;37092:260:0;;;;;:::i;:::-;;:::i;51000:95::-;;;;;;;;;;-1:-1:-1;51000:95:0;;;;;:::i;:::-;;:::i;32914:34::-;;;;;;;;;;-1:-1:-1;32914:34:0;;;;-1:-1:-1;;;32914:34:0;;;;;;42668:309;;;;;;;;;;-1:-1:-1;42668:309:0;;;;;:::i;:::-;;:::i;9532:127::-;;;;;;;;;;-1:-1:-1;9532:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;9633:18:0;9606:7;9633:18;;;;;;;;;;;;9532:127;2703:148;;;;;;;;;;;;;:::i;33793:46::-;;;;;;;;;;;;;;;;33514:37;;;;;;;;;;;;;;;;33433:38;;;;;;;;;;;;;;;;33033:30;;;;;;;;;;-1:-1:-1;33033:30:0;;;;-1:-1:-1;;;;;33033:30:0;;;33678:37;;;;;;;;;;;;;;;;44335:127;;;;;;;;;;-1:-1:-1;44335:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;44427:27:0;44403:4;44427:27;;;:18;:27;;;;;;;;;44335:127;33396:30;;;;;;;;;;;;;;;;2052:87;;;;;;;;;;-1:-1:-1;2125:6:0;;;;;-1:-1:-1;;;;;2125:6:0;2052:87;;33207:28;;;;;;;;;;;;;;;;33558:31;;;;;;;;;;;;;;;;8472:95;;;;;;;;;;;;;:::i;43551:448::-;;;;;;;;;;-1:-1:-1;43551:448:0;;;;;:::i;:::-;;:::i;12510:269::-;;;;;;;;;;-1:-1:-1;12510:269:0;;;;;:::i;:::-;;:::i;38090:140::-;;;;;;;;;;-1:-1:-1;38090:140:0;;;;;:::i;:::-;;:::i;9872:175::-;;;;;;;;;;-1:-1:-1;9872:175:0;;;;;:::i;:::-;;:::i;37362:327::-;;;;;;;;;;-1:-1:-1;37362:327:0;;;;;:::i;:::-;;:::i;43371:172::-;;;;;;;;;;-1:-1:-1;43371:172:0;;;;;:::i;:::-;;:::i;37951:131::-;;;;;;;;;;-1:-1:-1;37951:131:0;;;;;:::i;:::-;;:::i;36824:258::-;;;;;;;;;;-1:-1:-1;36824:258:0;;;;;:::i;:::-;;:::i;34096:58::-;;;;;;;;;;-1:-1:-1;34096:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;33757:27;;;;;;;;;;;;;;;;33478:29;;;;;;;;;;;;;;;;36466:173;;;;;;;;;;-1:-1:-1;36466:173:0;;;;;:::i;:::-;;:::i;42985:183::-;;;;;;;;;;-1:-1:-1;42985:183:0;;;;;:::i;:::-;;:::i;33722:28::-;;;;;;;;;;;;;;;;52768:157;;;;;;;;;;-1:-1:-1;52768:157:0;;;;;:::i;:::-;;:::i;3332:226::-;;;;;;;;;;-1:-1:-1;3332:226:0;;;;;:::i;:::-;;:::i;10110:151::-;;;;;;;;;;-1:-1:-1;10110:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;10226:18:0;;;10199:7;10226:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10110:151;43176:183;;;;;;;;;;-1:-1:-1;43176:183:0;;;;;:::i;:::-;;:::i;33167:33::-;;;;;;;;;;;;;;;;51202:162;;;;;;;;;;-1:-1:-1;51202:162:0;;;;;:::i;:::-;;:::i;39315:221::-;;;;;;;;;;-1:-1:-1;39315:221:0;;;;;:::i;:::-;;:::i;32871:36::-;;;;;;;;;;-1:-1:-1;32871:36:0;;;;-1:-1:-1;;;32871:36:0;;;;;;37699:242;;;;;;;;;;-1:-1:-1;37699:242:0;;;;;:::i;:::-;;:::i;3006:244::-;;;;;;;;;;-1:-1:-1;3006:244:0;;;;;:::i;:::-;;:::i;51103:91::-;;;;;;;;;;-1:-1:-1;51103:91:0;;;;;:::i;:::-;;:::i;40346:745::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;;;;;;;;;40426:14:::1;::::0;::::1;-1:-1:-1::0;;;40426:14:0;;::::1;;:26;;::::0;::::1;;;;40418:68;;;;-1:-1:-1::0;;;40418:68:0::1;;;;;;;:::i;:::-;40501:17:::0;40497:538:::1;;40560:14;::::0;;40535:22:::1;:39:::0;-1:-1:-1;40589:18:0;;;;40637:15:::1;::::0;40622:12:::1;:30:::0;40724:14:::1;::::0;40702:16:::1;::::0;40683:56:::1;::::0;:36:::1;::::0;:18:::1;:36::i;:::-;:40:::0;::::1;:56::i;:::-;40667:13;:72:::0;40754:14:::1;:25:::0;;-1:-1:-1;;;;40754:25:0::1;-1:-1:-1::0;;;40754:25:0;::::1;;;;::::0;;40497:538:::1;;;40829:22;::::0;40812:14:::1;:39:::0;;;40881:15:::1;::::0;40866:12:::1;:30:::0;40968:14:::1;::::0;40946:16:::1;::::0;40927:56:::1;::::0;:36:::1;::::0;:18:::1;:36::i;:56::-;40911:13;:72:::0;40998:14:::1;:25:::0;;-1:-1:-1;;;;40998:25:0::1;-1:-1:-1::0;;;40998:25:0;::::1;;;;::::0;;40497:538:::1;41052:31;::::0;1769:14:1;;1762:22;1744:41;;41052:31:0::1;::::0;1732:2:1;1717:18;41052:31:0::1;;;;;;;;40346:745:::0;:::o;8262:91::-;8307:13;8340:5;8333:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8262:91;:::o;38706:597::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;38778:1:::1;38760:15;:19:::0;;;38807:1:::1;38790:14;:18:::0;;;38838:2:::1;38819:16;:21:::0;;;38865:1:::1;38848:14;:18:::0;;;38877:12:::1;:30:::0;;;;38934:56:::1;::::0;38865:1;38934:36:::1;::::0;:18:::1;:36::i;:56::-;38918:13;:72:::0;39001:16:::1;:23:::0;;-1:-1:-1;;;;39067:21:0;-1:-1:-1;;;39067:21:0;;;39120:19:::1;39099:18;:40:::0;;;39176:12:::1;::::0;39150:23:::1;:38:::0;;;-1:-1:-1;39199:39:0;;;39265:30:::1;::::0;39290:4:::1;::::0;39265:20:::1;::::0;:16:::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;39249:13;:46:::0;38706:597::o;10408:169::-;10491:4;10508:39;708:10;10531:7;10540:6;10508:8;:39::i;:::-;-1:-1:-1;10565:4:0;10408:169;;;;;:::o;42028:632::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;42201:2:::1;42181:16;:22;;;;42173:64;;;::::0;-1:-1:-1;;;42173:64:0;;6157:2:1;42173:64:0::1;::::0;::::1;6139:21:1::0;6196:2;6176:18;;;6169:30;6235:31;6215:18;;;6208:59;6284:18;;42173:64:0::1;5955:353:1::0;42173:64:0::1;42313:2;42294:15:::0;42256:35:::1;42274:17:::0;42256:15;:35:::1;:::i;:::-;:53;;;;:::i;:::-;:59;;;;42248:102;;;::::0;-1:-1:-1;;;42248:102:0;;6856:2:1;42248:102:0::1;::::0;::::1;6838:21:1::0;6895:2;6875:18;;;6868:30;6934:32;6914:18;;;6907:60;6984:18;;42248:102:0::1;6654:354:1::0;42248:102:0::1;42361:34;::::0;;::::1;:15;:34:::0;42406:32;;::::1;:14;:32:::0;;;42449:36;;::::1;:16;:36:::0;;;42496:32;;::::1;:14;:32:::0;;;42555:56:::1;::::0;:36:::1;::::0;:20:::1;:36::i;:56::-;42539:13;:72:::0;-1:-1:-1;;42637:15:0::1;::::0;42622:12:::1;:30:::0;-1:-1:-1;;42028:632:0:o;11059:321::-;11165:4;11182:36;11192:6;11200:9;11211:6;11182:9;:36::i;:::-;11229:121;11238:6;708:10;11260:89;11298:6;11260:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11260:19:0;;;;;;:11;:19;;;;;;;;708:10;11260:33;;;;;;;;;;:37;:89::i;:::-;11229:8;:121::i;:::-;-1:-1:-1;11368:4:0;11059:321;;;;;:::o;41109:911::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;41191:16:::1;::::0;::::1;-1:-1:-1::0;;;41191:16:0;;::::1;;:28;;::::0;::::1;;;;41183:70;;;;-1:-1:-1::0;;;41183:70:0::1;;;;;;;:::i;:::-;41268:17:::0;41264:698:::1;;41328:15;::::0;;41302:23:::1;:41:::0;41385:16:::1;::::0;;41358:24:::1;:43:::0;-1:-1:-1;41416:19:0;;;;41450:20;;;41542:14:::1;::::0;41501::::1;::::0;:56:::1;::::0;:36:::1;::::0;:14;:18:::1;:36::i;:56::-;41485:13;:72:::0;41587:15:::1;::::0;41572:12:::1;:30:::0;41617:16:::1;:27:::0;;-1:-1:-1;;;;41617:27:0::1;-1:-1:-1::0;;;41617:27:0;::::1;;;;::::0;;41264:698:::1;;;41695:23;::::0;41677:15:::1;:41:::0;41752:24:::1;::::0;41733:16:::1;:43:::0;;;41848:14:::1;::::0;41807::::1;::::0;:56:::1;::::0;:36:::1;::::0;:14;:18:::1;:36::i;:56::-;41791:13;:72:::0;41893:15:::1;::::0;41878:12:::1;:30:::0;41923:16:::1;:27:::0;;-1:-1:-1;;;;41923:27:0::1;-1:-1:-1::0;;;41923:27:0;::::1;;;;::::0;;41264:698:::1;41979:33;::::0;1769:14:1;;1762:22;1744:41;;41979:33:0::1;::::0;1732:2:1;1717:18;41979:33:0::1;1604:187:1::0;39548:786:0;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;39628:14:::1;::::0;::::1;-1:-1:-1::0;;;39628:14:0;;::::1;;:26;;::::0;::::1;;;;39620:68;;;;-1:-1:-1::0;;;39620:68:0::1;;;;;;;:::i;:::-;39703:17:::0;39699:571:::1;;39762:14;::::0;;39737:22:::1;:39:::0;-1:-1:-1;39791:18:0;;;;39824:14:::1;:18:::0;;;39872:15:::1;::::0;39857:12:::1;:30:::0;39937:16:::1;::::0;39918:14:::1;::::0;:56:::1;::::0;-1:-1:-1;39918:36:0::1;::::0;:14;:18:::1;:36::i;:56::-;39902:13;:72:::0;39989:14:::1;:25:::0;;-1:-1:-1;;;;39989:25:0::1;-1:-1:-1::0;;;39989:25:0;::::1;;;;::::0;;39699:571:::1;;;40064:22;::::0;40047:14:::1;:39:::0;;;40116:15:::1;::::0;40101:12:::1;:30:::0;40203:14:::1;::::0;40181:16:::1;::::0;40162:56:::1;::::0;:36:::1;::::0;:18:::1;:36::i;:56::-;40146:13;:72:::0;40233:14:::1;:25:::0;;-1:-1:-1;;;;40233:25:0::1;-1:-1:-1::0;;;40233:25:0;::::1;;;;::::0;;39699:571:::1;40295:31;::::0;1769:14:1;;1762:22;1744:41;;40295:31:0::1;::::0;1732:2:1;1717:18;40295:31:0::1;1604:187:1::0;36646:168:0;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36755:45:0::1;;::::0;;;:18:::1;:45;::::0;;;;:52;;-1:-1:-1;;36755:52:0::1;36803:4;36755:52;::::0;;36646:168::o;11789:218::-;708:10;11877:4;11926:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11926:34:0;;;;;;;;;;11877:4;;11894:83;;11917:7;;11926:50;;11965:10;11926:38;:50::i;38238:460::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;38305:16:::1;::::0;-1:-1:-1;;;38305:16:0;::::1;;;:25;38297:86;;;::::0;-1:-1:-1;;;38297:86:0;;7215:2:1;38297:86:0::1;::::0;::::1;7197:21:1::0;7254:2;7234:18;;;7227:30;7293:34;7273:18;;;7266:62;-1:-1:-1;;;7344:18:1;;;7337:46;7400:19;;38297:86:0::1;7013:412:1::0;38297:86:0::1;38394:16;:24:::0;;-1:-1:-1;;;;38394:24:0::1;::::0;;38413:5:::1;38394:16;38429:19:::0;;;38459:14:::1;:18:::0;;;38488:16:::1;:20:::0;;;38516:14:::1;:18:::0;38571:12:::1;::::0;38545:23:::1;:38:::0;;;-1:-1:-1;38594:39:0;;;38660:30:::1;::::0;38685:4:::1;::::0;38660:20:::1;::::0;38677:2:::1;38660:16;:20::i;37092:260::-:0;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;37188:44:::1;37225:6;37189:30;37213:5;37189:19;37206:1;37189:12;;:16;;:19;;;;:::i;37188:44::-;37177:7;:55;;37169:121;;;;-1:-1:-1::0;;;37169:121:0::1;;;;;;;:::i;:::-;37327:18;:7:::0;37338:6:::1;37327:18;:::i;:::-;37300:24;:45:::0;-1:-1:-1;37092:260:0:o;51000:95::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;51066:13:0::1;51082:5;51066:13:::0;;;:4:::1;:13;::::0;;;;:21;;-1:-1:-1;;51066:21:0::1;::::0;;51000:95::o;42668:309::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;42779:15:::1;::::0;-1:-1:-1;;;;;42757:38:0;;::::1;42779:15:::0;::::1;42757:38;;42749:86;;;::::0;-1:-1:-1;;;42749:86:0;;8227:2:1;42749:86:0::1;::::0;::::1;8209:21:1::0;8266:2;8246:18;;;8239:30;8305:34;8285:18;;;8278:62;-1:-1:-1;;;8356:18:1;;;8349:33;8399:19;;42749:86:0::1;8025:399:1::0;42749:86:0::1;42893:15;::::0;42851:59:::1;::::0;-1:-1:-1;;;;;42893:15:0;;::::1;::::0;42851:59;::::1;::::0;::::1;::::0;42893:15:::1;::::0;42851:59:::1;42921:15;:48:::0;;-1:-1:-1;;;;;;42921:48:0::1;-1:-1:-1::0;;;;;42921:48:0;;;::::1;::::0;;;::::1;::::0;;42668:309::o;2703:148::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;2794:6:::1;::::0;2773:40:::1;::::0;2810:1:::1;::::0;2794:6:::1;::::0;::::1;-1:-1:-1::0;;;;;2794:6:0::1;::::0;2773:40:::1;::::0;2810:1;;2773:40:::1;2824:6;:19:::0;;-1:-1:-1;;;;;;2824:19:0::1;::::0;;2703:148::o;8472:95::-;8519:13;8552:7;8545:14;;;;;:::i;43551:448::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;43658:13:::1;-1:-1:-1::0;;;;;43650:21:0::1;:4;-1:-1:-1::0;;;;;43650:21:0::1;;;43642:103;;;::::0;-1:-1:-1;;;43642:103:0;;8631:2:1;43642:103:0::1;::::0;::::1;8613:21:1::0;8670:2;8650:18;;;8643:30;8709:34;8689:18;;;8682:62;8780:34;8760:18;;;8753:62;-1:-1:-1;;;8831:19:1;;;8824:36;8877:19;;43642:103:0::1;8429:473:1::0;43642:103:0::1;-1:-1:-1::0;;;;;43764:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;::::1;;:40;;::::0;::::1;;;;43756:109;;;::::0;-1:-1:-1;;;43756:109:0;;9109:2:1;43756:109:0::1;::::0;::::1;9091:21:1::0;9148:2;9128:18;;;9121:30;9187:34;9167:18;;;9160:62;9258:26;9238:18;;;9231:54;9302:19;;43756:109:0::1;8907:420:1::0;43756:109:0::1;-1:-1:-1::0;;;;;43886:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;:39;;-1:-1:-1;;43886:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;43951:40;;43886:39;;:31;43951:40:::1;::::0;::::1;43551:448:::0;;:::o;12510:269::-;12603:4;12620:129;708:10;12643:7;12652:96;12691:15;12652:96;;;;;;;;;;;;;;;;;708:10;12652:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12652:34:0;;;;;;;;;;;;:38;:96::i;38090:140::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;38183:25:::1;:39:::0;38090:140::o;9872:175::-;9958:4;9975:42;708:10;9999:9;10010:6;9975:9;:42::i;37362:327::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;37464:15:::1;::::0;-1:-1:-1;;;;;37450:29:0;;::::1;37464:15:::0;::::1;37450:29;;37442:86;;;::::0;-1:-1:-1;;;37442:86:0;;9534:2:1;37442:86:0::1;::::0;::::1;9516:21:1::0;9573:2;9553:18;;;9546:30;9612:34;9592:18;;;9585:62;-1:-1:-1;;;9663:18:1;;;9656:42;9715:19;;37442:86:0::1;9332:408:1::0;37442:86:0::1;-1:-1:-1::0;;;;;37540:30:0;;::::1;;::::0;;;:18:::1;:30;::::0;;;;;:37;;-1:-1:-1;;37540:37:0::1;37573:4;37540:37;::::0;;37616:15:::1;::::0;37593:51;;37540:30;;37616:15:::1;::::0;37593:51:::1;::::0;37540:30;37593:51:::1;37654:15;:28:::0;;-1:-1:-1;;;;;;37654:28:0::1;-1:-1:-1::0;;;;;37654:28:0;;;::::1;::::0;;;::::1;::::0;;37362:327::o;43371:172::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;43474:3:::1;43463:7;:14;;43439:68;;;::::0;-1:-1:-1;;;43439:68:0;;9947:2:1;43439:68:0::1;::::0;::::1;9929:21:1::0;9986:2;9966:18;;;9959:30;-1:-1:-1;;;10005:18:1;;;9998:55;10070:18;;43439:68:0::1;9745:349:1::0;43439:68:0::1;43518:7;:17:::0;43371:172::o;37951:131::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;38053:22:::1;:11:::0;38068:6:::1;38053:22;:::i;:::-;38032:18;:43:::0;-1:-1:-1;37951:131:0:o;36824:258::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;36919:44:::1;36956:6;36920:30;36944:5;36920:19;36937:1;36920:12;;:16;;:19;;;;:::i;36919:44::-;36908:7;:55;;36900:121;;;;-1:-1:-1::0;;;36900:121:0::1;;;;;;;:::i;:::-;37057:18;:7:::0;37068:6:::1;37057:18;:::i;:::-;37031:23;:44:::0;-1:-1:-1;36824:258:0:o;36466:173::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;36547:14:::1;:32:::0;;-1:-1:-1;;;;;36547:32:0;;::::1;-1:-1:-1::0;;;;;;36547:32:0;;::::1;::::0;::::1;::::0;;:14:::1;36590:35:::0;;;:18:::1;:35:::0;;;;;:42;;-1:-1:-1;;36590:42:0::1;36547:32:::0;36590:42:::1;::::0;;36466:173::o;42985:183::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;43070:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:38;;-1:-1:-1;;43070:38:0::1;::::0;::::1;;::::0;;::::1;::::0;;;43126:34;;1744:41:1;;;43126:34:0::1;::::0;1717:18:1;43126:34:0::1;;;;;;;42985:183:::0;;:::o;52768:157::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;52850:22:0;::::1;52842:31;;;::::0;::::1;;52884:33;52908:8;52884:23;:33::i;:::-;52768:157:::0;:::o;3332:226::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;3413:6:::1;::::0;;3396:14:::1;:23:::0;;-1:-1:-1;;;;;;3396:23:0::1;-1:-1:-1::0;;;;;3413:6:0::1;::::0;::::1;;3396:23;::::0;;-1:-1:-1;;;;;;3430:19:0::1;::::0;;3472:22:::1;3490:4:::0;3472:15:::1;:22;:::i;:::-;3460:9;:34:::0;3531:6:::1;::::0;3510:40:::1;::::0;3547:1:::1;::::0;3531:6:::1;::::0;::::1;-1:-1:-1::0;;;;;3531:6:0::1;::::0;3510:40:::1;::::0;3547:1;;3510:40:::1;3332:226:::0;:::o;43176:183::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;43283:3:::1;43272:7;:14;;43248:68;;;::::0;-1:-1:-1;;;43248:68:0;;9947:2:1;43248:68:0::1;::::0;::::1;9929:21:1::0;9986:2;9966:18;;;9959:30;-1:-1:-1;;;10005:18:1;;;9998:55;10070:18;;43248:68:0::1;9745:349:1::0;43248:68:0::1;43327:14;:24:::0;43176:183::o;51202:162::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;51296:2:::1;51284:9;:14;51276:47;;;::::0;-1:-1:-1;;;51276:47:0;;10434:2:1;51276:47:0::1;::::0;::::1;10416:21:1::0;10473:2;10453:18;;;10446:30;-1:-1:-1;;;10492:18:1;;;10485:50;10552:18;;51276:47:0::1;10232:344:1::0;51276:47:0::1;51334:10;:22:::0;51202:162::o;39315:221::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;39403:16:::1;:23:::0;;-1:-1:-1;;;;39403:23:0::1;-1:-1:-1::0;;;39403:23:0::1;::::0;;39437:10:::1;:22:::0;;;;39470:7:::1;:18:::0;39513:15:::1;39499:11;:29:::0;39315:221::o;37699:242::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;37794:43:::1;37830:6;37795:29;37819:4;37795:19;37812:1;37795:12;;:16;;:19;;;;:::i;37794:43::-;37781:9;:56;;37773:115;;;::::0;-1:-1:-1;;;37773:115:0;;10783:2:1;37773:115:0::1;::::0;::::1;10765:21:1::0;10822:2;10802:18;;;10795:30;10861:34;10841:18;;;10834:62;-1:-1:-1;;;10912:18:1;;;10905:44;10966:19;;37773:115:0::1;10581:410:1::0;37773:115:0::1;37914:20;:9:::0;37927:6:::1;37914:20;:::i;:::-;37898:13;:36:::0;-1:-1:-1;37699:242:0:o;3006:244::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3095:22:0;::::1;3087:73;;;::::0;-1:-1:-1;;;3087:73:0;;11198:2:1;3087:73:0::1;::::0;::::1;11180:21:1::0;11237:2;11217:18;;;11210:30;11276:34;11256:18;;;11249:62;-1:-1:-1;;;11327:18:1;;;11320:36;11373:19;;3087:73:0::1;10996:402:1::0;3087:73:0::1;3197:6;::::0;3176:38:::1;::::0;-1:-1:-1;;;;;3176:38:0;;::::1;::::0;3197:6:::1;::::0;::::1;;::::0;3176:38:::1;::::0;;;::::1;3225:6;:17:::0;;-1:-1:-1;;;;;3225:17:0;;::::1;;;-1:-1:-1::0;;;;;;3225:17:0;;::::1;::::0;;;::::1;::::0;;3006:244::o;51103:91::-;2125:6;;-1:-1:-1;;;;;2125:6:0;;;;;708:10;2272:23;2264:68;;;;-1:-1:-1;;;2264:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;51166:13:0::1;;::::0;;;:4:::1;:13;::::0;;;;:20;;-1:-1:-1;;51166:20:0::1;51182:4;51166:20;::::0;;51103:91::o;27812:179::-;27870:7;;27902:5;27906:1;27902;:5;:::i;:::-;27890:17;;27931:1;27926;:6;;27918:46;;;;-1:-1:-1;;;27918:46:0;;11605:2:1;27918:46:0;;;11587:21:1;11644:2;11624:18;;;11617:30;11683:29;11663:18;;;11656:57;11730:18;;27918:46:0;11403:351:1;27918:46:0;27982:1;27812:179;-1:-1:-1;;;27812:179:0:o;28691:220::-;28749:7;28773:6;28769:20;;-1:-1:-1;28788:1:0;28781:8;;28769:20;28800:9;28812:5;28816:1;28812;:5;:::i;:::-;28800:17;-1:-1:-1;28845:1:0;28836:5;28840:1;28800:17;28836:5;:::i;:::-;:10;28828:56;;;;-1:-1:-1;;;28828:56:0;;12183:2:1;28828:56:0;;;12165:21:1;12222:2;12202:18;;;12195:30;12261:34;12241:18;;;12234:62;-1:-1:-1;;;12312:18:1;;;12305:31;12353:19;;28828:56:0;11981:397:1;29389:153:0;29447:7;29479:1;29475;:5;29467:44;;;;-1:-1:-1;;;29467:44:0;;12585:2:1;29467:44:0;;;12567:21:1;12624:2;12604:18;;;12597:30;12663:28;12643:18;;;12636:56;12709:18;;29467:44:0;12383:350:1;29467:44:0;29529:5;29533:1;29529;:5;:::i;15667:346::-;-1:-1:-1;;;;;15769:19:0;;15761:68;;;;-1:-1:-1;;;15761:68:0;;12940:2:1;15761:68:0;;;12922:21:1;12979:2;12959:18;;;12952:30;13018:34;12998:18;;;12991:62;-1:-1:-1;;;13069:18:1;;;13062:34;13113:19;;15761:68:0;12738:400:1;15761:68:0;-1:-1:-1;;;;;15848:21:0;;15840:68;;;;-1:-1:-1;;;15840:68:0;;13345:2:1;15840:68:0;;;13327:21:1;13384:2;13364:18;;;13357:30;13423:34;13403:18;;;13396:62;-1:-1:-1;;;13474:18:1;;;13467:32;13516:19;;15840:68:0;13143:398:1;15840:68:0;-1:-1:-1;;;;;15921:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15973:32;;510:25:1;;;15973:32:0;;483:18:1;15973:32:0;;;;;;;;15667:346;;;:::o;45175:5711::-;-1:-1:-1;;;;;45307:18:0;;45299:68;;;;-1:-1:-1;;;45299:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;45386:16:0;;45378:64;;;;-1:-1:-1;;;45378:64:0;;;;;;;:::i;:::-;45461:16;;-1:-1:-1;;;45461:16:0;;;;;:72;;-1:-1:-1;;;;;;45482:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;45510:22:0;;;;;;:18;:22;;;;;;;;45482:50;45453:112;;;;-1:-1:-1;;;45453:112:0;;14558:2:1;45453:112:0;;;14540:21:1;14597:2;14577:18;;;14570:30;14636:29;14616:18;;;14609:57;14683:18;;45453:112:0;14356:351:1;45453:112:0;-1:-1:-1;;;;;45609:24:0;;45586:20;45609:24;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;45637:22:0;;;;;;:18;:22;;;;;;;;45609:50;45698:16;;45586:73;;-1:-1:-1;;;;45698:16:0;;;;:64;;;;-1:-1:-1;;;;;;45731:31:0;;;;;;:25;:31;;;;;;;;45698:64;:97;;;;;45780:15;45779:16;45698:97;45680:3343;;;45858:23;;45848:6;:33;;45822:135;;;;-1:-1:-1;;;45822:135:0;;14914:2:1;45822:135:0;;;14896:21:1;14953:2;14933:18;;;14926:30;14992:34;14972:18;;;14965:62;-1:-1:-1;;;15043:18:1;;;15036:38;15091:19;;45822:135:0;14712:404:1;45822:135:0;-1:-1:-1;;;;;45981:10:0;;;;;;:4;:10;;;;;;;;45980:11;:24;;;;-1:-1:-1;;;;;;45996:8:0;;;;;;:4;:8;;;;;;;;45995:9;45980:24;45972:54;;;;-1:-1:-1;;;45972:54:0;;15323:2:1;45972:54:0;;;15305:21:1;15362:2;15342:18;;;15335:30;-1:-1:-1;;;15381:18:1;;;15374:47;15438:18;;45972:54:0;15121:341:1;45972:54:0;-1:-1:-1;;;;;46055:28:0;;;;;;:24;:28;;;;;46086:15;46055:46;;46157:10;;46141:11;;:27;;:15;:27::i;:::-;46122:15;:46;46118:273;;-1:-1:-1;;;;;46189:8:0;;;;;;:4;:8;;;;;:15;;-1:-1:-1;;46189:15:0;46200:4;46189:15;;;46251:7;;46240:28;;46264:3;;46240:19;;:6;;:10;:19::i;:28::-;46223:45;-1:-1:-1;46296:18:0;:6;46223:45;46296:10;:18::i;:::-;46355:11;;46287:27;;-1:-1:-1;46333:42:0;;46349:4;;-1:-1:-1;;;;;46355:11:0;46368:6;46333:15;:42::i;:::-;46170:221;46118:273;-1:-1:-1;;;;;9633:18:0;;46407:32;9633:18;;;;;;;;;;;46533:13;;46496:33;46523:6;9633:18;46496:33;:::i;:::-;:50;;46470:148;;;;-1:-1:-1;;;46470:148:0;;;;;;;:::i;:::-;45807:823;45680:3343;;;46653:16;;-1:-1:-1;;;46653:16:0;;;;:62;;;;-1:-1:-1;;;;;;46686:29:0;;;;;;:25;:29;;;;;;;;46653:62;:95;;;;;46733:15;46732:16;46653:95;46636:2387;;;-1:-1:-1;;;;;46784:10:0;;;;;;:4;:10;;;;;;;;46783:11;:24;;;;-1:-1:-1;;;;;;46799:8:0;;;;;;:4;:8;;;;;;;;46798:9;46783:24;46775:54;;;;-1:-1:-1;;;46775:54:0;;15323:2:1;46775:54:0;;;15305:21:1;15362:2;15342:18;;;15335:30;-1:-1:-1;;;15381:18:1;;;15374:47;15438:18;;46775:54:0;15121:341:1;46775:54:0;46862:24;;46852:6;:34;;46844:105;;;;-1:-1:-1;;;46844:105:0;;16074:2:1;46844:105:0;;;16056:21:1;16113:2;16093:18;;;16086:30;16152:34;16132:18;;;16125:62;16223:28;16203:18;;;16196:56;16269:19;;46844:105:0;15872:422:1;46844:105:0;47034:10;;-1:-1:-1;;;;;47000:30:0;;;;;;:24;:30;;;;;;46982:48;;:15;:48;:::i;:::-;:62;46978:209;;-1:-1:-1;;;;;47065:10:0;;;;;;:4;:10;;;;;:17;;-1:-1:-1;;47065:17:0;47078:4;47065:17;;;46978:209;;;-1:-1:-1;;;;;47123:30:0;;;;;;:24;:30;;;;;47156:15;47123:48;;46978:209;47268:4;47219:28;9633:18;;;;;;;;;;;47328;;47380:8;;47304:42;;;;;-1:-1:-1;;;47380:8:0;;;;47379:9;:20;;;;;47392:7;47379:20;47375:1536;;;47420:8;:15;;-1:-1:-1;;;;47420:15:0;-1:-1:-1;;;47420:15:0;;;;;47516:6;:4;:6::i;:::-;47547:14;;47498:24;;-1:-1:-1;;;;47547:14:0;;;;47543:496;;;47586:38;47603:20;47586:16;:38::i;:::-;47647:17;47667:21;47647:41;;47728:70;47784:13;;47728:51;47764:14;;47729:29;47743:14;;47729:9;:13;;:29;;;;:::i;:::-;47728:35;;:51::i;:70::-;47711:14;:87;;;47839:29;;:9;;:13;:29::i;:::-;47821:47;;47563:327;47543:496;;;47919:38;47936:20;47919:16;:38::i;:::-;47998:21;47980:39;;47543:496;48063:16;;-1:-1:-1;;;48063:16:0;;;;48059:219;;;48104:18;48125:56;48167:13;;48125:37;48145:16;;48125:15;:19;;:37;;;;:::i;:56::-;48229:15;;48104:77;;-1:-1:-1;48204:54:0;;-1:-1:-1;;;;;48229:15:0;48104:77;48204:16;:54::i;:::-;48081:197;48059:219;48318:14;;-1:-1:-1;;;48318:14:0;;;;:64;;;;;48372:9;48336:32;48356:11;;48336:15;:19;;:32;;;;:::i;:::-;:46;48318:64;48314:541;;;48422:2;48411:7;:13;;:64;;;;48464:10;48428:32;48448:11;;48428:15;:19;;:32;;;;:::i;:::-;:47;48411:64;48407:429;;;48504:21;48528:43;48567:3;48528:34;48547:14;;48528;;:18;;:34;;;;:::i;:43::-;48615:14;;48504:67;;-1:-1:-1;48615:33:0;;48504:67;48615:18;:33::i;:::-;48598:14;:50;48701:29;48716:13;48701:14;:29::i;:::-;-1:-1:-1;48797:15:0;48783:11;:29;48407:429;-1:-1:-1;;48879:8:0;:16;;-1:-1:-1;;;;48879:16:0;;;47375:1536;46760:2162;;46636:2387;;;-1:-1:-1;;;;;48963:10:0;;;;;;:4;:10;;;;;;;;48962:11;:24;;;;-1:-1:-1;;;;;;48978:8:0;;;;;;:4;:8;;;;;;;;48977:9;48962:24;48954:57;;;;-1:-1:-1;;;48954:57:0;;16631:2:1;48954:57:0;;;16613:21:1;16670:2;16650:18;;;16643:30;-1:-1:-1;;;16689:18:1;;;16682:50;16749:18;;48954:57:0;16429:344:1;48954:57:0;49050:16;;49035:12;;-1:-1:-1;;;49050:16:0;;;;:29;;;;-1:-1:-1;49071:8:0;;-1:-1:-1;;;49071:8:0;;;;49070:9;49050:29;:49;;;;;49084:15;49083:16;49050:49;49035:64;;49115:7;49112:1719;;;-1:-1:-1;;;;;49208:31:0;;49139:12;49208:31;;;:25;:31;;;;;;49139:12;;49208:31;;49205:1377;;;49277:33;49306:3;49277:24;49288:12;;49277:6;:10;;:24;;;;:::i;:33::-;49270:40;;49205:1377;;;-1:-1:-1;;;;;49348:29:0;;;;;;:25;:29;;;;;;;;49345:1237;;;49416:34;49446:3;49416:25;49427:13;;49416:6;:10;;:25;;;;:::i;:34::-;49473:14;;49409:41;;-1:-1:-1;;;;49473:14:0;;;;49469:308;;;49512:21;49536:43;49565:13;;49536:24;49545:14;;49536:4;:8;;:24;;;;:::i;:43::-;49512:67;-1:-1:-1;49609:23:0;:4;49512:67;49609:8;:23::i;:::-;49728:13;;49602:30;;-1:-1:-1;49670:13:0;;-1:-1:-1;49670:13:0;;49706:51;;49722:4;;-1:-1:-1;;;;;49728:13:0;49670;49706:15;:51::i;:::-;49489:288;49469:308;49345:1237;;;-1:-1:-1;;;;;9633:18:0;;49845:32;9633:18;;;;;;;;;;;49979:13;;49942:33;49969:6;9633:18;49942:33;:::i;:::-;:50;;49912:160;;;;-1:-1:-1;;;49912:160:0;;;;;;;:::i;:::-;50091:25;50119:53;50168:3;50119:44;50137:25;;50119:13;;:17;;:44;;;;:::i;:53::-;50091:81;-1:-1:-1;50198:38:0;50232:3;50198:29;:6;50091:81;50198:10;:29::i;:38::-;50259:14;;50191:45;;-1:-1:-1;;;;50259:14:0;;;;50255:312;;;50298:21;50322:47;50351:17;50322:24;50331:14;;50322:4;:8;;:24;;;;:::i;:47::-;50298:71;-1:-1:-1;50399:23:0;:4;50298:71;50399:8;:23::i;:::-;50518:13;;50392:30;;-1:-1:-1;50460:13:0;;-1:-1:-1;50460:13:0;;50496:51;;50512:4;;-1:-1:-1;;;;;50518:13:0;50460;50496:15;:51::i;:::-;50275:292;50255:312;49811:771;;49345:1237;-1:-1:-1;;;;;50599:10:0;;;;;;:4;:10;;;;;;;;;:22;;-1:-1:-1;;;;;;50613:8:0;;;;;;:4;:8;;;;;;;;50599:22;50596:97;;;50649:28;50673:3;50649:19;50660:7;;50649:6;:10;;:19;;;;:::i;:28::-;50642:35;;50596:97;50726:34;50737:22;:4;50746:12;50737:8;:22::i;:::-;50726:6;;:10;:34::i;:::-;50717:43;;50777:42;50793:4;50807;50814;50777:15;:42::i;:::-;49124:1707;;49112:1719;50843:33;50859:4;50865:2;50869:6;50843:15;:33::i;:::-;45288:5598;;45175:5711;;;:::o;30639:166::-;30725:7;30761:12;30753:6;;;;30745:29;;;;-1:-1:-1;;;30745:29:0;;;;;;;;:::i;:::-;-1:-1:-1;30792:5:0;30796:1;30792;:5;:::i;:::-;30785:12;30639:166;-1:-1:-1;;;;30639:166:0:o;28274:158::-;28332:7;28365:1;28360;:6;;28352:49;;;;-1:-1:-1;;;28352:49:0;;16980:2:1;28352:49:0;;;16962:21:1;17019:2;16999:18;;;16992:30;17058:32;17038:18;;;17031:60;17108:18;;28352:49:0;16778:354:1;28352:49:0;28419:5;28423:1;28419;:5;:::i;13269:549::-;-1:-1:-1;;;;;13375:20:0;;13367:70;;;;-1:-1:-1;;;13367:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13456:23:0;;13448:71;;;;-1:-1:-1;;;13448:71:0;;;;;;;:::i;:::-;13622;13644:6;13622:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13622:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;13602:17:0;;;:9;:17;;;;;;;;;;;:91;;;;13727:20;;;;;;;:32;;13752:6;13727:24;:32::i;:::-;-1:-1:-1;;;;;13704:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;13775:35;510:25:1;;;13704:20:0;;13775:35;;;;;;483:18:1;13775:35:0;364:177:1;44474:693:0;44811:28;;-1:-1:-1;;44828:10:0;17286:2:1;17282:15;17278:53;44811:28:0;;;17266:66:1;44512:7:0;;;;44888:12;;44868:15;;17348:12:1;;44811:28:0;;;;;;;;;;;;44801:39;;;;;;44793:48;;44792:92;;;;:::i;:::-;44693:32;;-1:-1:-1;;44710:14:0;17286:2:1;17282:15;17278:53;44693:32:0;;;17266:66:1;44774:14:0;;44754:15;;17348:12:1;;44693:32:0;;;;;;;;;;;;44683:43;;;;;;44675:52;;44674:96;;;;:::i;:::-;44636:34;44654:16;44636:15;:34;:::i;:::-;:135;;;;:::i;:::-;:152;;;;:::i;:::-;:249;;;;:::i;:::-;:264;;;;:::i;:::-;44597:304;;;;;;17750:19:1;;17794:2;17785:12;;17621:182;44597:304:0;;;;-1:-1:-1;;44597:304:0;;;;;;;;;44569:355;;44597:304;44569:355;;;;;-1:-1:-1;44547:396:0;44985:10;44992:3;44569:355;44985:10;:::i;:::-;44984:18;;44999:3;44984:18;:::i;:::-;44976:27;;:4;:27;:::i;:::-;44954:50;-1:-1:-1;45019:15:0;45015:145;;45051:15;45065:1;45051:15;;:::i;52023:599::-;52173:16;;;52187:1;52173:16;;;;;;;;52149:21;;52173:16;;;;;;;;;;-1:-1:-1;52173:16:0;52149:40;;52218:4;52200;52205:1;52200:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;52200:23:0;;;:7;;;;;;;;;;:23;;;;52244:15;;:22;;;-1:-1:-1;;;52244:22:0;;;;:15;;;;;:20;;:22;;;;;52200:7;;52244:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;52234:4;52239:1;52234:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;52234:32:0;;;:7;;;;;;;;;:32;52311:15;;52279:62;;52296:4;;52311:15;52329:11;52279:8;:62::i;:::-;52380:15;;:224;;-1:-1:-1;;;52380:224:0;;-1:-1:-1;;;;;52380:15:0;;;;:66;;:224;;52461:11;;52380:15;;52531:4;;52558;;52578:15;;52380:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52078:544;52023:599;:::o;52634:122::-;52722:26;;-1:-1:-1;;;;;52722:18:0;;;:26;;;;;52741:6;;52722:26;;;;52741:6;52722:18;:26;;;;;;;;;;;;;;;;;;;;;52634:122;;:::o;51372:643::-;51515:16;;;51529:1;51515:16;;;;;;;;51491:21;;51515:16;;;;;;;;-1:-1:-1;;51552:15:0;;:22;;;-1:-1:-1;;;51552:22:0;;;;51491:40;;-1:-1:-1;;;;;;51552:15:0;;;;:20;;-1:-1:-1;51552:22:0;;;;;;;;;;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;51542:4;51547:1;51542:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;51542:32:0;;;-1:-1:-1;;;;;51542:32:0;;;;;51603:4;51585;51590:1;51585:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;51585:23:0;;;:7;;;;;;;;;:23;51720:15;;51882:11;;51720:15;;;;:66;;51794:6;;51720:15;;51863:4;;51882:11;51924:24;:15;51944:3;51924:19;:24::i;:::-;51720:239;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51977:30;51994:6;52002:4;51977:30;;;;;;;:::i;:::-;;;;;;;;51420:595;51372:643;:::o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:180::-;235:6;288:2;276:9;267:7;263:23;259:32;256:52;;;304:1;301;294:12;256:52;327:26;343:9;327:26;:::i;546:597::-;658:4;687:2;716;705:9;698:21;748:6;742:13;791:6;786:2;775:9;771:18;764:34;816:1;826:140;840:6;837:1;834:13;826:140;;;935:14;;;931:23;;925:30;901:17;;;920:2;897:26;890:66;855:10;;826:140;;;984:6;981:1;978:13;975:91;;;1054:1;1049:2;1040:6;1029:9;1025:22;1021:31;1014:42;975:91;-1:-1:-1;1127:2:1;1106:15;-1:-1:-1;;1102:29:1;1087:45;;;;1134:2;1083:54;;546:597;-1:-1:-1;;;546:597:1:o;1148:131::-;-1:-1:-1;;;;;1223:31:1;;1213:42;;1203:70;;1269:1;1266;1259:12;1284:315;1352:6;1360;1413:2;1401:9;1392:7;1388:23;1384:32;1381:52;;;1429:1;1426;1419:12;1381:52;1468:9;1455:23;1487:31;1512:5;1487:31;:::i;:::-;1537:5;1589:2;1574:18;;;;1561:32;;-1:-1:-1;;;1284:315:1:o;1796:156::-;1862:20;;1922:4;1911:16;;1901:27;;1891:55;;1942:1;1939;1932:12;1957:393;2035:6;2043;2051;2059;2112:3;2100:9;2091:7;2087:23;2083:33;2080:53;;;2129:1;2126;2119:12;2080:53;2152:27;2169:9;2152:27;:::i;:::-;2142:37;;2198:36;2230:2;2219:9;2215:18;2198:36;:::i;:::-;2188:46;;2253:36;2285:2;2274:9;2270:18;2253:36;:::i;:::-;2243:46;;2308:36;2340:2;2329:9;2325:18;2308:36;:::i;:::-;2298:46;;1957:393;;;;;;;:::o;2798:456::-;2875:6;2883;2891;2944:2;2932:9;2923:7;2919:23;2915:32;2912:52;;;2960:1;2957;2950:12;2912:52;2999:9;2986:23;3018:31;3043:5;3018:31;:::i;:::-;3068:5;-1:-1:-1;3125:2:1;3110:18;;3097:32;3138:33;3097:32;3138:33;:::i;:::-;2798:456;;3190:7;;-1:-1:-1;;;3244:2:1;3229:18;;;;3216:32;;2798:456::o;3448:247::-;3507:6;3560:2;3548:9;3539:7;3535:23;3531:32;3528:52;;;3576:1;3573;3566:12;3528:52;3615:9;3602:23;3634:31;3659:5;3634:31;:::i;3700:180::-;3759:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:52;;;3828:1;3825;3818:12;3780:52;-1:-1:-1;3851:23:1;;3700:180;-1:-1:-1;3700:180:1:o;3885:315::-;3950:6;3958;4011:2;3999:9;3990:7;3986:23;3982:32;3979:52;;;4027:1;4024;4017:12;3979:52;4066:9;4053:23;4085:31;4110:5;4085:31;:::i;:::-;4135:5;-1:-1:-1;4159:35:1;4190:2;4175:18;;4159:35;:::i;:::-;4149:45;;3885:315;;;;;:::o;4205:388::-;4273:6;4281;4334:2;4322:9;4313:7;4309:23;4305:32;4302:52;;;4350:1;4347;4340:12;4302:52;4389:9;4376:23;4408:31;4433:5;4408:31;:::i;:::-;4458:5;-1:-1:-1;4515:2:1;4500:18;;4487:32;4528:33;4487:32;4528:33;:::i;:::-;4580:7;4570:17;;;4205:388;;;;;:::o;4598:248::-;4666:6;4674;4727:2;4715:9;4706:7;4702:23;4698:32;4695:52;;;4743:1;4740;4733:12;4695:52;-1:-1:-1;;4766:23:1;;;4836:2;4821:18;;;4808:32;;-1:-1:-1;4598:248:1:o;4851:356::-;5053:2;5035:21;;;5072:18;;;5065:30;5131:34;5126:2;5111:18;;5104:62;5198:2;5183:18;;4851:356::o;5212:353::-;5414:2;5396:21;;;5453:2;5433:18;;;5426:30;5492:31;5487:2;5472:18;;5465:59;5556:2;5541:18;;5212:353::o;5570:380::-;5649:1;5645:12;;;;5692;;;5713:61;;5767:4;5759:6;5755:17;5745:27;;5713:61;5820:2;5812:6;5809:14;5789:18;5786:38;5783:161;;;5866:10;5861:3;5857:20;5854:1;5847:31;5901:4;5898:1;5891:15;5929:4;5926:1;5919:15;5783:161;;5570:380;;;:::o;6313:127::-;6374:10;6369:3;6365:20;6362:1;6355:31;6405:4;6402:1;6395:15;6429:4;6426:1;6419:15;6445:204;6483:3;6519:4;6516:1;6512:12;6551:4;6548:1;6544:12;6586:3;6580:4;6576:14;6571:3;6568:23;6565:49;;;6594:18;;:::i;:::-;6630:13;;6445:204;-1:-1:-1;;;6445:204:1:o;7430:417::-;7632:2;7614:21;;;7671:2;7651:18;;;7644:30;7710:34;7705:2;7690:18;;7683:62;-1:-1:-1;;;7776:2:1;7761:18;;7754:51;7837:3;7822:19;;7430:417::o;7852:168::-;7892:7;7958:1;7954;7950:6;7946:14;7943:1;7940:21;7935:1;7928:9;7921:17;7917:45;7914:71;;;7965:18;;:::i;:::-;-1:-1:-1;8005:9:1;;7852:168::o;10099:128::-;10139:3;10170:1;10166:6;10163:1;10160:13;10157:39;;;10176:18;;:::i;:::-;-1:-1:-1;10212:9:1;;10099:128::o;11759:217::-;11799:1;11825;11815:132;;11869:10;11864:3;11860:20;11857:1;11850:31;11904:4;11901:1;11894:15;11932:4;11929:1;11922:15;11815:132;-1:-1:-1;11961:9:1;;11759:217::o;13546:401::-;13748:2;13730:21;;;13787:2;13767:18;;;13760:30;13826:34;13821:2;13806:18;;13799:62;-1:-1:-1;;;13892:2:1;13877:18;;13870:35;13937:3;13922:19;;13546:401::o;13952:399::-;14154:2;14136:21;;;14193:2;14173:18;;;14166:30;14232:34;14227:2;14212:18;;14205:62;-1:-1:-1;;;14298:2:1;14283:18;;14276:33;14341:3;14326:19;;13952:399::o;15467:400::-;15669:2;15651:21;;;15708:2;15688:18;;;15681:30;15747:34;15742:2;15727:18;;15720:62;-1:-1:-1;;;15813:2:1;15798:18;;15791:34;15857:3;15842:19;;15467:400::o;16299:125::-;16339:4;16367:1;16364;16361:8;16358:34;;;16372:18;;:::i;:::-;-1:-1:-1;16409:9:1;;16299:125::o;17940:127::-;18001:10;17996:3;17992:20;17989:1;17982:31;18032:4;18029:1;18022:15;18056:4;18053:1;18046:15;18072:251;18142:6;18195:2;18183:9;18174:7;18170:23;18166:32;18163:52;;;18211:1;18208;18201:12;18163:52;18243:9;18237:16;18262:31;18287:5;18262:31;:::i;18328:461::-;18381:3;18419:5;18413:12;18446:6;18441:3;18434:19;18472:4;18501:2;18496:3;18492:12;18485:19;;18538:2;18531:5;18527:14;18559:1;18569:195;18583:6;18580:1;18577:13;18569:195;;;18648:13;;-1:-1:-1;;;;;18644:39:1;18632:52;;18704:12;;;;18739:15;;;;18680:1;18598:9;18569:195;;;-1:-1:-1;18780:3:1;;18328:461;-1:-1:-1;;;;;18328:461:1:o;18794:582::-;19093:6;19082:9;19075:25;19136:6;19131:2;19120:9;19116:18;19109:34;19179:3;19174:2;19163:9;19159:18;19152:31;19056:4;19200:57;19252:3;19241:9;19237:19;19229:6;19200:57;:::i;:::-;-1:-1:-1;;;;;19293:32:1;;;;19288:2;19273:18;;19266:60;-1:-1:-1;19357:3:1;19342:19;19335:35;19192:65;18794:582;-1:-1:-1;;;18794:582:1:o;19381:510::-;19652:6;19641:9;19634:25;19695:3;19690:2;19679:9;19675:18;19668:31;19615:4;19716:57;19768:3;19757:9;19753:19;19745:6;19716:57;:::i;:::-;-1:-1:-1;;;;;19809:32:1;;;;19804:2;19789:18;;19782:60;-1:-1:-1;19873:2:1;19858:18;19851:34;19708:65;19381:510;-1:-1:-1;;19381:510:1:o;19896:332::-;20103:6;20092:9;20085:25;20146:2;20141;20130:9;20126:18;20119:30;20066:4;20166:56;20218:2;20207:9;20203:18;20195:6;20166:56;:::i

Swarm Source

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