ETH Price: $3,371.61 (+0.13%)
Gas: 9.05 Gwei

Contract

0xe5Db2c3E2CEFf742E5306bCfc12622f5e2d14e98
 

Overview

ETH Balance

0.904170140436135861 ETH

Eth Value

$3,048.51 (@ $3,371.61/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve211949932024-11-15 18:50:357 days ago1731696635IN
ClienteleCoin: CLT Token
0 ETH0.0008819419.0374331
Approve211949742024-11-15 18:46:477 days ago1731696407IN
ClienteleCoin: CLT Token
0 ETH0.000824917.69148599
Approve208299052024-09-25 20:08:4758 days ago1727294927IN
ClienteleCoin: CLT Token
0 ETH0.0005013220.59423674
Approve204437672024-08-02 22:14:23112 days ago1722636863IN
ClienteleCoin: CLT Token
0 ETH0.000150973.24210091
Approve203883892024-07-26 4:39:47120 days ago1721968787IN
ClienteleCoin: CLT Token
0 ETH0.000105932.28968219
Approve203652762024-07-22 23:13:11123 days ago1721689991IN
ClienteleCoin: CLT Token
0 ETH0.000218124.68417042
Approve201943122024-06-29 2:18:47147 days ago1719627527IN
ClienteleCoin: CLT Token
0 ETH0.000085991.84668323
Transfer201878702024-06-28 4:43:11148 days ago1719549791IN
ClienteleCoin: CLT Token
0 ETH0.000433184.70644663
Approve201142932024-06-17 21:49:35158 days ago1718660975IN
ClienteleCoin: CLT Token
0 ETH0.000213244.60183984
Approve199490132024-05-25 19:35:23181 days ago1716665723IN
ClienteleCoin: CLT Token
0 ETH0.000221744.78655855
Approve199489692024-05-25 19:26:35181 days ago1716665195IN
ClienteleCoin: CLT Token
0 ETH0.000210974.55407753
Approve198774412024-05-15 19:21:59191 days ago1715800919IN
ClienteleCoin: CLT Token
0 ETH0.000449019.64232791
Approve198096712024-05-06 7:52:23201 days ago1714981943IN
ClienteleCoin: CLT Token
0 ETH0.000131995.01076869
Approve198096682024-05-06 7:51:47201 days ago1714981907IN
ClienteleCoin: CLT Token
0 ETH0.000124995.13478709
Transfer197025832024-04-21 8:27:23216 days ago1713688043IN
ClienteleCoin: CLT Token
0 ETH0.00139823.08994852
Transfer196995472024-04-20 22:16:23216 days ago1713651383IN
ClienteleCoin: CLT Token
0 ETH0.0009759410.60332123
Approve195769162024-04-03 18:04:59233 days ago1712167499IN
ClienteleCoin: CLT Token
0 ETH0.0032917770.68895303
Approve192199892024-02-13 15:32:11283 days ago1707838331IN
ClienteleCoin: CLT Token
0 ETH0.0019225241.23205683
Transfer189975952024-01-13 11:12:59314 days ago1705144379IN
ClienteleCoin: CLT Token
0 ETH0.0012311513.37441818
Approve189896872024-01-12 8:40:35316 days ago1705048835IN
ClienteleCoin: CLT Token
0 ETH0.0007463816.02829211
Approve178178792023-08-01 4:51:23480 days ago1690865483IN
ClienteleCoin: CLT Token
0 ETH0.0006112313.20761069
Approve176985192023-07-15 11:34:23496 days ago1689420863IN
ClienteleCoin: CLT Token
0 ETH0.000623313.47188403
Approve174248602023-06-07 0:09:23535 days ago1686096563IN
ClienteleCoin: CLT Token
0 ETH0.0008287817.90840453
Approve174115352023-06-05 3:01:11537 days ago1685934071IN
ClienteleCoin: CLT Token
0 ETH0.0010292122.23365612
Approve173922742023-06-02 9:49:35539 days ago1685699375IN
ClienteleCoin: CLT Token
0 ETH0.0006443524.37147569
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
155941642022-09-23 6:09:59792 days ago1663913399
ClienteleCoin: CLT Token
0.00000207 ETH
155941642022-09-23 6:09:59792 days ago1663913399
ClienteleCoin: CLT Token
0.00000207 ETH
155941642022-09-23 6:09:59792 days ago1663913399
ClienteleCoin: CLT Token
0.00000623 ETH
146918812022-05-01 12:11:51936 days ago1651407111
ClienteleCoin: CLT Token
0 ETH
146918812022-05-01 12:11:51936 days ago1651407111
ClienteleCoin: CLT Token
0 ETH
146918812022-05-01 12:11:51936 days ago1651407111
ClienteleCoin: CLT Token
0.00000002 ETH
143265232022-03-05 11:07:04993 days ago1646478424
ClienteleCoin: CLT Token
0.00128084 ETH
140939352022-01-28 11:45:331029 days ago1643370333
ClienteleCoin: CLT Token
0.01202777 ETH
140422412022-01-20 11:48:241037 days ago1642679304
ClienteleCoin: CLT Token
0.01218755 ETH
140268542022-01-18 2:25:501040 days ago1642472750
ClienteleCoin: CLT Token
0.01234944 ETH
140032822022-01-14 11:08:181043 days ago1642158498
ClienteleCoin: CLT Token
0.01251349 ETH
139840252022-01-11 11:48:101046 days ago1641901690
ClienteleCoin: CLT Token
0.01267972 ETH
139516142022-01-06 11:37:551051 days ago1641469075
ClienteleCoin: CLT Token
0.01284815 ETH
139329942022-01-03 14:26:331054 days ago1641219993
ClienteleCoin: CLT Token
0.01301882 ETH
139104242021-12-31 2:28:361058 days ago1640917716
ClienteleCoin: CLT Token
0.00065207 ETH
139104242021-12-31 2:28:361058 days ago1640917716
ClienteleCoin: CLT Token
0.00065207 ETH
139104242021-12-31 2:28:361058 days ago1640917716
ClienteleCoin: CLT Token
0.00195621 ETH
139036702021-12-30 1:08:421059 days ago1640826522
ClienteleCoin: CLT Token
0.01291833 ETH
138706072021-12-24 22:30:211064 days ago1640385021
ClienteleCoin: CLT Token
0.01308706 ETH
138555722021-12-22 14:34:321066 days ago1640183672
ClienteleCoin: CLT Token
0.01325778 ETH
138323862021-12-19 0:31:411070 days ago1639873901
ClienteleCoin: CLT Token
0.01343037 ETH
138166422021-12-16 14:12:261072 days ago1639663946
ClienteleCoin: CLT Token
0.01360521 ETH
137978142021-12-13 16:03:341075 days ago1639411414
ClienteleCoin: CLT Token
0.01378232 ETH
137752392021-12-10 4:33:301079 days ago1639110810
ClienteleCoin: CLT Token
0.01396174 ETH
137563932021-12-07 4:10:351082 days ago1638850235
ClienteleCoin: CLT Token
0.01414349 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ClienteleCoin

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-18
*/

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.4;

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

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

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

    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    //Added function
    // 1 minute = 60
    // 1h 3600
    // 24h 86400
    // 1w 604800

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

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

    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime, "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() internal {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "nonReentrant:: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }

    modifier isHuman() {
        require(tx.origin == msg.sender, "isHuman:: sorry humans only");
        _;
    }
}

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

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

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

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

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

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

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

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

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

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

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

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

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

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

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

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

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

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

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

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

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

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

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

    function name() external pure returns (string memory);

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

contract ClienteleCoin is ERC20, Ownable, ReentrancyGuard {
    using SafeMath for uint256;

    //AMM swap settings
    IUniswapV2Router02 public uniswapV2Router;
    address public immutable uniswapV2Pair;
    uint256 public liquidateTokensAtAmount = 1000 * (10**9);

    //Token info
    uint256 public constant TOTAL_SUPPLY = 137000000000000 * (10**9);

    //Transfer delay info
    bool public TDEnabled = false;
    uint256 public TD = 30 minutes;
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    mapping(address => uint256) private _soldTimes;
    mapping(address => uint256) private _boughtTimes;

    //Tax info
    bool _feesEnabled = true;
    uint256 public constant ETH_REWARDS_FEE = 25;
    uint256 public constant MARKETING_FEE = 25;
    uint256 public constant DEV_FEE = 25;
    uint256 public impactFee = 200;
    uint256 public constant TOTAL_FEES = ETH_REWARDS_FEE + MARKETING_FEE + DEV_FEE;
    address public devWallet = 0x395DA634618C39675b560Aa5d321966672D6DC71;
    address public marketingWallet = 0xD7F7e7C412824C6f4F107453068e7c8062B0B488;
    address private _airdropAddress = 0xAcfE101cA7E2bc9Ee6a76Deaa9Bc6C9DAb0b5481;

    mapping(address => bool) private _isExcludedFromFees;
    uint256 public impactThreshold = 50;
    bool public priceImpactFeeDisabled = true;

    // Claiming info
    mapping(address => uint256) public nextAvailableClaimDate;
    uint256 public rewardCycleBlock = 2 days;
    uint256 threshHoldTopUpRate = 2;

    bool private liquidating = false;

    event UpdatedUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event CycleBlockUpdated(uint256 indexed newBlock, uint256 indexed OldBlock);
    event ImpactFeeUpdated(uint256 indexed newFee, uint256 indexed oldFee);
    event ThresholdFeeUpdated(uint256 indexed newThreshold, uint256 indexed oldThreshold);
    event ImpactFeeDisableUpdated(bool indexed value);

    event LiquidationThresholdUpdated(uint256 indexed newValue, uint256 indexed oldValue);
    event TaxDistributed(uint256 tokensSwapped, uint256 ethReceived, uint256 rewardPoolGot, uint256 devGot, uint256 marketingGot);

    event ClaimSuccessfully(address recipient, uint256 ethReceived, uint256 nextAvailableClaimDate);

    constructor(address routerAddress) ERC20("ClienteleCoin", "CLT") {
        //set amm info
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(routerAddress);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner());
        excludeFromFees(address(this));

        // mint tokens
        _mint(owner(), TOTAL_SUPPLY);
    }

    receive() external payable {}

    function updateUniswapV2Router(address newAddress) public onlyOwner {
        require(newAddress != address(uniswapV2Router), "CLT: The router already has that address");
        emit UpdatedUniswapV2Router(newAddress, address(uniswapV2Router));
        uniswapV2Router = IUniswapV2Router02(newAddress);
    }

    function enableFees() public onlyOwner {
        _feesEnabled = true;
    }

    function disableFees() public onlyOwner {
        _feesEnabled = false;
    }

    function updateliquidateTokensAtAmount(uint256 newValue) public onlyOwner {
        liquidateTokensAtAmount = newValue;
    }

    function updateAirdropAddress(address airdropAddress) public onlyOwner {
        _airdropAddress = airdropAddress;
    }

    function updateRewardCycleBlock(uint256 newBlock) public onlyOwner {
        emit CycleBlockUpdated(newBlock, rewardCycleBlock);
        rewardCycleBlock = newBlock;
    }

    function updateImpactThreshold(uint256 newValue) public onlyOwner {
        emit ThresholdFeeUpdated(newValue, impactThreshold);
        impactThreshold = newValue;
    }

    function updateImpactFee(uint256 newValue) public onlyOwner {
        emit ImpactFeeUpdated(newValue, impactFee);
        impactFee = newValue;
    }

    function updateImpactFeeDisabled(bool newValue) public onlyOwner {
        emit ImpactFeeDisableUpdated(newValue);
        priceImpactFeeDisabled = newValue;
    }

    function excludeFromFees(address account) public onlyOwner {
        _isExcludedFromFees[account] = true;
    }

    function includeToFees(address account) public onlyOwner {
        _isExcludedFromFees[account] = false;
    }

    function updateLiquidationThreshold(uint256 newValue) external onlyOwner {
        emit LiquidationThresholdUpdated(newValue, liquidateTokensAtAmount);
        liquidateTokensAtAmount = newValue;
    }

    function activateTD() external onlyOwner {
        TDEnabled = true;
    }

    function DisableTD() external onlyOwner {
        TDEnabled = false;
    }

    function setTDTime(uint256 delay) public onlyOwner returns (bool) {
        TD = delay; // in seconds
        return true;
    }

    function getPriceImpactFee(uint256 amount) public view returns (uint256) {
        if (priceImpactFeeDisabled) return 0;

        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        address token0 = pair.token0();
        address token1 = pair.token1();
        uint256 reserve0;
        uint256 reserve1;

        if (token0 == address(this)) {
            (reserve1, reserve0, ) = pair.getReserves();
        } else if (token1 == address(this)) {
            (reserve0, reserve1, ) = pair.getReserves();
        }

        if (reserve0 == 0 && reserve1 == 0) {
            // check liquidity has ever been added or not. if not, the function will return zero impact
            return 0;
        }

        uint256 amountB = uniswapV2Router.getAmountIn(amount, reserve0, reserve1);
        uint256 priceImpact = reserve0.sub(reserve0.sub(amountB)).mul(10000) / reserve0;

        if (priceImpact >= impactThreshold) {
            return impactFee;
        }

        return 0;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        //check if tx delay enabled, the sender should wait until the delay passess
        if (TDEnabled && !liquidating) {
            if (from == address(uniswapV2Pair)) {
                uint256 multiplier = _boughtTimes[to] == 1 ? 2 : 1;
                require(
                    (_holderLastTransferTimestamp[to].add(TD.mul(multiplier)) <= block.timestamp) || _isExcludedFromFees[to],
                    "_transfer:: Transfer Delay enabled.  Please try again after the tx block passess"
                );
                _holderLastTransferTimestamp[to] = block.timestamp;
                _boughtTimes[to] = _boughtTimes[to] + 1;
            } else if (to == address(uniswapV2Pair)) {
                uint256 multiplier = _soldTimes[from] == 1 ? 2 : 1;
                require(
                    (_holderLastTransferTimestamp[from].add(TD.mul(multiplier)) <= block.timestamp) || _isExcludedFromFees[from],
                    "_transfer:: Transfer Delay enabled.  Please try again after the tx block passess"
                );
                _holderLastTransferTimestamp[from] = block.timestamp;
                _soldTimes[to] = _soldTimes[to] + 1;
            } else {
                require(
                    (_holderLastTransferTimestamp[from].add(TD.mul(2)) <= block.timestamp) || _isExcludedFromFees[from],
                    "_transfer:: Transfer Delay enabled.  Please try again after the tx block passess"
                );
                _holderLastTransferTimestamp[from] = block.timestamp;
            }
        }

        //if tokens came from airdrop wallet, then add anti-dump transfer delay for recepients
        if (from == _airdropAddress) {
            _holderLastTransferTimestamp[to] = block.timestamp + 2 hours;
        }

        //check the contract balance > swap amount threshold,
        //then do it and distribute rewards to the reward pool, dev, markting wallet
        //distribution won't work in case a transfer is from uni
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= liquidateTokensAtAmount;
        if (canSwap && from != address(uniswapV2Pair)) swapAndDistributeRewards(contractTokenBalance);

        //fee is being taken only from buy/sells
        //also avoid fees on liquidation
        bool takeFee = false;
        if ((to == address(uniswapV2Pair) && !_isExcludedFromFees[from]) || (from == address(uniswapV2Pair) && !_isExcludedFromFees[to])) {
            takeFee = true;
        }

        if (liquidating) takeFee = false;

        //main fee taking logic
        if (takeFee && _feesEnabled) {
            //calculate fees and send amount
            uint256 rewardPoolAmount = amount.mul(ETH_REWARDS_FEE).div(1000);
            uint256 marketingAmount = amount.mul(MARKETING_FEE).div(1000);
            uint256 devAmount = amount.mul(DEV_FEE).div(1000);
            uint256 priceFee = getPriceImpactFee(amount.sub(rewardPoolAmount).sub(marketingAmount).sub(devAmount));
            uint256 impactFeeAmount = amount.mul(priceFee).div(1000);
            uint256 sendAmount = amount.sub(rewardPoolAmount).sub(marketingAmount).sub(devAmount);

            //avoid stack problem
            sendAmount = sendAmount.sub(impactFeeAmount);
            uint256 taxAmount = amount.sub(sendAmount);

            //check if fees and send amount are correct
            require(amount == sendAmount.add(taxAmount), "CLT::transfer: Tax value invalid");

            //transfer tax to the contract wallet
            super._transfer(from, address(this), taxAmount);

            //remained tokens will be transferred to the recipient
            amount = sendAmount;
        }

        //block
        topUpClaimCycleAfterTransfer(to, amount);

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

    function swapAndDistributeRewards(uint256 tokens) private {
        //NOTE: do smth with the correct part management

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        if (!liquidating) {
            liquidating = true;

            swapTokensForEth(tokens);

            // how much eth should we distribute
            uint256 newBalance = address(this).balance.sub(initialBalance);

            //split the contract balance into three parts
            uint256 toRewardPool = newBalance.div(3);
            uint256 toDevWallet = toRewardPool;
            uint256 toMarketingWallet = newBalance.sub(toDevWallet).sub(toRewardPool);

            //reward pool eth stay on the contract
            address(marketingWallet).call{value: toMarketingWallet}("");
            address(devWallet).call{value: toDevWallet}("");

            liquidating = false;
            emit TaxDistributed(tokens, newBalance, toRewardPool, toDevWallet, toMarketingWallet);
        }
    }

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    //to do add to claim cycle after receiving

    function calculateReward(address ofAddress) public view returns (uint256) {
        uint256 totalSupply = totalSupply().sub(balanceOf(address(0))).sub(balanceOf(0x000000000000000000000000000000000000dEaD)).sub(balanceOf(address(uniswapV2Pair))); // exclude burned wallets //and uni pair

        uint256 poolValue = address(this).balance;
        uint256 currentBalance = balanceOf(address(ofAddress));
        uint256 reward = poolValue.mul(currentBalance).div(totalSupply);

        return reward;
    }

    function claimReward() public isHuman nonReentrant {
        require(nextAvailableClaimDate[msg.sender] <= block.timestamp, "Error: next available not reached");
        require(balanceOf(msg.sender) >= 0, "Error: must own token to claim reward");

        uint256 reward = calculateReward(msg.sender);

        // update rewardCycleBlock
        nextAvailableClaimDate[msg.sender] = block.timestamp + rewardCycleBlock;
        emit ClaimSuccessfully(msg.sender, reward, nextAvailableClaimDate[msg.sender]);

        (bool sent, ) = address(msg.sender).call{value: reward}("");
        require(sent, "Error: Cannot withdraw reward");
    }

    function topUpClaimCycleAfterTransfer(address recipient, uint256 amount) private {
        uint256 currentRecipientBalance = balanceOf(recipient);
        uint256 additionalBlock = 0;
        if (nextAvailableClaimDate[recipient] + rewardCycleBlock < block.timestamp) nextAvailableClaimDate[recipient] = block.timestamp;

        //if a user has zero balance, just regular rewardCycleBlock will be applied
        if (currentRecipientBalance > 0) {
            uint256 rate = amount.mul(100).div(currentRecipientBalance);
            if (uint256(rate) >= threshHoldTopUpRate) {
                uint256 incurCycleBlock = rewardCycleBlock.mul(uint256(rate)).div(100);
                if (incurCycleBlock >= rewardCycleBlock) {
                    incurCycleBlock = rewardCycleBlock;
                }
                additionalBlock = incurCycleBlock;
            }
        } else {
            nextAvailableClaimDate[recipient] = nextAvailableClaimDate[recipient] + rewardCycleBlock;
        }
        nextAvailableClaimDate[recipient] = nextAvailableClaimDate[recipient] + additionalBlock;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routerAddress","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":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"nextAvailableClaimDate","type":"uint256"}],"name":"ClaimSuccessfully","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newBlock","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"OldBlock","type":"uint256"}],"name":"CycleBlockUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"ImpactFeeDisableUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldFee","type":"uint256"}],"name":"ImpactFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"LiquidationThresholdUpdated","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rewardPoolGot","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"devGot","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingGot","type":"uint256"}],"name":"TaxDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newThreshold","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldThreshold","type":"uint256"}],"name":"ThresholdFeeUpdated","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":"UpdatedUniswapV2Router","type":"event"},{"inputs":[],"name":"DEV_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DisableTD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ETH_REWARDS_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MARKETING_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TDEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_FEES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activateTD","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ofAddress","type":"address"}],"name":"calculateReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getPriceImpactFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"impactFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"impactThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeToFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidateTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nextAvailableClaimDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceImpactFeeDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardCycleBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"setTDTime","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","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":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"airdropAddress","type":"address"}],"name":"updateAirdropAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateImpactFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"updateImpactFeeDisabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateImpactThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateLiquidationThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBlock","type":"uint256"}],"name":"updateRewardCycleBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateliquidateTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405264e8d4a51000600a55600b805460ff19908116909155610708600c55601080548216600190811790915560c8601155601280546001600160a01b031990811673395da634618c39675b560aa5d321966672d6dc711790915560138054821673d7f7e7c412824c6f4f107453068e7c8062b0b4881790556014805490911673acfe101ca7e2bc9ee6a76deaa9bc6c9dab0b5481179055603260165560178054831690911790556202a3006019556002601a55601b80549091169055348015620000cb57600080fd5b50604051620033cc380380620033cc833981016040819052620000ee9162000669565b6040518060400160405280600d81526020016c21b634b2b73a32b632a1b7b4b760991b8152506040518060400160405280600381526020016210d31560ea1b815250816003908051906020019062000148929190620005c3565b5080516200015e906004906020840190620005c3565b505050600062000173620003d560201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600160088190555060008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200020a57600080fd5b505afa1580156200021f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000245919062000669565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200028e57600080fd5b505afa158015620002a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c9919062000669565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200031257600080fd5b505af115801562000327573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034d919062000669565b600980546001600160a01b0319166001600160a01b038516179055606081901b6001600160601b031916608052905062000399620003936005546001600160a01b031690565b620003d9565b620003a430620003d9565b620003cc620003bb6005546001600160a01b031690565b691d02c8edfee423a000006200045d565b505050620006f4565b3390565b6005546001600160a01b03163314620004395760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03166000908152601560205260409020805460ff19166001179055565b6001600160a01b038216620004b55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000430565b620004d1816002546200055960201b620019521790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620005049183906200195262000559821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60008062000568838562000692565b905083811015620005bc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000430565b9392505050565b828054620005d190620006b7565b90600052602060002090601f016020900481019282620005f5576000855562000640565b82601f106200061057805160ff191683800117855562000640565b8280016001018555821562000640579182015b828111156200064057825182559160200191906001019062000623565b506200064e92915062000652565b5090565b5b808211156200064e576000815560010162000653565b6000602082840312156200067b578081fd5b81516001600160a01b0381168114620005bc578182fd5b60008219821115620006b257634e487b7160e01b81526011600452602481fd5b500190565b600181811c90821680620006cc57607f821691505b60208210811415620006ee57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160601c612c8862000744600039600081816104ec01528181610e6f0152818161172d01528181611b5b01528181611c8d01528181611e9301528181611eda0152611f3a0152612c886000f3fe60806040526004361061031e5760003560e01c806375722434116101ab578063a457c2d7116100f7578063ce404b2311610095578063dd4670641161006f578063dd46706414610893578063dd62ed3e146108b3578063e57f14e1146108f9578063f2fde38b1461091957600080fd5b8063ce404b231461083e578063d3b5be1a14610853578063d82e39621461087357600080fd5b8063af3e2122116100d1578063af3e212214610454578063b47fd563146107e6578063b88a802f14610813578063c816e4b61461082857600080fd5b8063a457c2d714610791578063a69df4b5146107b1578063a9059cbb146107c657600080fd5b80638da5cb5b1161016457806392ca1e8d1161013e57806392ca1e8d1461073157806395d89b4114610746578063966f41a21461075b5780639c21a9b81461077b57600080fd5b80638da5cb5b146106d55780638ea5220f146106f3578063902d55a51461071357600080fd5b8063757224341461063057806375f0a8741461064a5780637b5db6611461066a5780637cd09f921461068a5780638263a8d61461069f57806389b6e25e146106b557600080fd5b8063436a88c11161026a578063602bc62b1161022357806370a08231116101fd57806370a08231146105c5578063715018a6146105e55780637217f4bc146105fa57806372ba4df51461061057600080fd5b8063602bc62b1461057057806365b8dbc0146105855780636b292d37146105a557600080fd5b8063436a88c11461045457806349bd5a5e146104da5780635007de651461050e57806353adf85c14610528578063557ed1ba1461053d5780635907bd191461055057600080fd5b80632116a4ae116102d7578063313ce567116102b1578063313ce56714610469578063368f5bd514610485578063395093511461049a5780634116d15d146104ba57600080fd5b80632116a4ae1461041457806323b872dd146104345780632d17f2691461045457600080fd5b80630496a34d1461032a57806306fdde031461034c578063095ea7b3146103775780631694505e146103a757806318160ddd146103df5780631faaddf3146103fe57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061034a6103453660046128c2565b610939565b005b34801561035857600080fd5b5061036161099f565b60405161036e91906128f2565b60405180910390f35b34801561038357600080fd5b50610397610392366004612829565b610a31565b604051901515815260200161036e565b3480156103b357600080fd5b506009546103c7906001600160a01b031681565b6040516001600160a01b03909116815260200161036e565b3480156103eb57600080fd5b506002545b60405190815260200161036e565b34801561040a57600080fd5b506103f060115481565b34801561042057600080fd5b5061039761042f3660046128c2565b610a48565b34801561044057600080fd5b5061039761044f3660046127e9565b610a83565b34801561046057600080fd5b506103f0601981565b34801561047557600080fd5b506040516009815260200161036e565b34801561049157600080fd5b5061034a610aec565b3480156104a657600080fd5b506103976104b5366004612829565b610b25565b3480156104c657600080fd5b5061034a6104d53660046128c2565b610b5b565b3480156104e657600080fd5b506103c77f000000000000000000000000000000000000000000000000000000000000000081565b34801561051a57600080fd5b50600b546103979060ff1681565b34801561053457600080fd5b5061034a610bb8565b34801561054957600080fd5b50426103f0565b34801561055c57600080fd5b5061034a61056b3660046128c2565b610bee565b34801561057c57600080fd5b506007546103f0565b34801561059157600080fd5b5061034a6105a0366004612779565b610c4b565b3480156105b157600080fd5b5061034a6105c0366004612779565b610d41565b3480156105d157600080fd5b506103f06105e0366004612779565b610d8d565b3480156105f157600080fd5b5061034a610da8565b34801561060657600080fd5b506103f060195481565b34801561061c57600080fd5b5061034a61062b366004612779565b610e0a565b34801561063c57600080fd5b506017546103979060ff1681565b34801561065657600080fd5b506013546103c7906001600160a01b031681565b34801561067657600080fd5b506103f06106853660046128c2565b610e55565b34801561069657600080fd5b5061034a6111ab565b3480156106ab57600080fd5b506103f060165481565b3480156106c157600080fd5b5061034a6106d03660046128c2565b6111e4565b3480156106e157600080fd5b506005546001600160a01b03166103c7565b3480156106ff57600080fd5b506012546103c7906001600160a01b031681565b34801561071f57600080fd5b506103f0691d02c8edfee423a0000081565b34801561073d57600080fd5b506103f0611213565b34801561075257600080fd5b5061036161122c565b34801561076757600080fd5b5061034a610776366004612854565b61123b565b34801561078757600080fd5b506103f0600c5481565b34801561079d57600080fd5b506103976107ac366004612829565b6112a5565b3480156107bd57600080fd5b5061034a6112f4565b3480156107d257600080fd5b506103976107e1366004612829565b6113fc565b3480156107f257600080fd5b506103f0610801366004612779565b60186020526000908152604090205481565b34801561081f57600080fd5b5061034a611409565b34801561083457600080fd5b506103f0600a5481565b34801561084a57600080fd5b5061034a61168f565b34801561085f57600080fd5b5061034a61086e3660046128c2565b6116c5565b34801561087f57600080fd5b506103f061088e366004612779565b611722565b34801561089f57600080fd5b5061034a6108ae3660046128c2565b6117a6565b3480156108bf57600080fd5b506103f06108ce3660046127b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561090557600080fd5b5061034a610914366004612779565b61182b565b34801561092557600080fd5b5061034a610934366004612779565b611879565b6005546001600160a01b0316331461096c5760405162461bcd60e51b815260040161096390612988565b60405180910390fd5b60165460405182907f45f855674a81ee4a043e3eadaffb44a6e1f0df2ef0c510f52ff5d2cc7dbc969490600090a3601655565b6060600380546109ae90612b56565b80601f01602080910402602001604051908101604052809291908181526020018280546109da90612b56565b8015610a275780601f106109fc57610100808354040283529160200191610a27565b820191906000526020600020905b815481529060010190602001808311610a0a57829003601f168201915b5050505050905090565b6000610a3e3384846119b8565b5060015b92915050565b6005546000906001600160a01b03163314610a755760405162461bcd60e51b815260040161096390612988565b50600c81905560015b919050565b6000610a90848484611add565b610ae28433610add85604051806060016040528060288152602001612be6602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906120df565b6119b8565b5060019392505050565b6005546001600160a01b03163314610b165760405162461bcd60e51b815260040161096390612988565b6010805460ff19166001179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a3e918590610add9086611952565b6005546001600160a01b03163314610b855760405162461bcd60e51b815260040161096390612988565b60115460405182907f3e598abbf839fb9f42cbf366b55a140e583506553980c23c68379f3566c5859d90600090a3601155565b6005546001600160a01b03163314610be25760405162461bcd60e51b815260040161096390612988565b600b805460ff19169055565b6005546001600160a01b03163314610c185760405162461bcd60e51b815260040161096390612988565b60195460405182907fe7cda9606ff2f769167fdf0eb6c612cddb2317d2808071755beebedd723cd3a690600090a3601955565b6005546001600160a01b03163314610c755760405162461bcd60e51b815260040161096390612988565b6009546001600160a01b0382811691161415610ce45760405162461bcd60e51b815260206004820152602860248201527f434c543a2054686520726f7574657220616c7265616479206861732074686174604482015267206164647265737360c01b6064820152608401610963565b6009546040516001600160a01b03918216918316907fcd2acde3ae4de754da8074077404027fae40be67d89638ee1ceca2427883da7d90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d6b5760405162461bcd60e51b815260040161096390612988565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610dd25760405162461bcd60e51b815260040161096390612988565b6005546040516000916001600160a01b031690600080516020612c0e833981519152908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610e345760405162461bcd60e51b815260040161096390612988565b6001600160a01b03166000908152601560205260409020805460ff19169055565b60175460009060ff1615610e6b57506000919050565b60007f000000000000000000000000000000000000000000000000000000000000000090506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610ecb57600080fd5b505afa158015610edf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f039190612795565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4057600080fd5b505afa158015610f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f789190612795565b90506000806001600160a01b03841630141561101557846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610fc757600080fd5b505afa158015610fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fff9190612874565b506001600160701b0390811693501690506110a9565b6001600160a01b0383163014156110a957846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561105f57600080fd5b505afa158015611073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110979190612874565b506001600160701b0391821693501690505b811580156110b5575080155b156110c7575060009695505050505050565b6009546040516385f8c25960e01b81526004810189905260248101849052604481018390526000916001600160a01b0316906385f8c2599060640160206040518083038186803b15801561111a57600080fd5b505afa15801561112e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115291906128da565b905060008361117761271061117161116a8487612119565b8890612119565b9061215b565b6111819190612b00565b9050601654811061119c575050601154979650505050505050565b50600098975050505050505050565b6005546001600160a01b031633146111d55760405162461bcd60e51b815260040161096390612988565b600b805460ff19166001179055565b6005546001600160a01b0316331461120e5760405162461bcd60e51b815260040161096390612988565b600a55565b601961121f8180612ae8565b6112299190612ae8565b81565b6060600480546109ae90612b56565b6005546001600160a01b031633146112655760405162461bcd60e51b815260040161096390612988565b604051811515907f55c19e5f01f19b1320171e8b80e3926c38efd7f66c3ef89f45defdf6c2122b7b90600090a26017805460ff1916911515919091179055565b6000610a3e3384610add85604051806060016040528060258152602001612c2e602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906120df565b6006546001600160a01b0316331461135a5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610963565b60075442116113ab5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610963565b6006546005546040516001600160a01b039283169290911690600080516020612c0e83398151915290600090a3600654600580546001600160a01b0319166001600160a01b03909216919091179055565b6000610a3e338484611add565b3233146114585760405162461bcd60e51b815260206004820152601b60248201527f697348756d616e3a3a20736f7272792068756d616e73206f6e6c7900000000006044820152606401610963565b600260085414156114ab5760405162461bcd60e51b815260206004820152601d60248201527f6e6f6e5265656e7472616e743a3a207265656e7472616e742063616c6c0000006044820152606401610963565b6002600855336000908152601860205260409020544210156115195760405162461bcd60e51b815260206004820152602160248201527f4572726f723a206e65787420617661696c61626c65206e6f74207265616368656044820152601960fa1b6064820152608401610963565b600061152433610d8d565b10156115805760405162461bcd60e51b815260206004820152602560248201527f4572726f723a206d757374206f776e20746f6b656e20746f20636c61696d2072604482015264195dd85c9960da1b6064820152608401610963565b600061158b33611722565b90506019544261159b9190612ae8565b33600081815260186020908152604091829020849055815192835282018490528101919091527f25aee98a65c97a4eccb09abe48315f60cd987890080434e094a7fca39a3d84689060600160405180910390a1604051600090339083908381818185875af1925050503d8060008114611630576040519150601f19603f3d011682016040523d82523d6000602084013e611635565b606091505b50509050806116865760405162461bcd60e51b815260206004820152601d60248201527f4572726f723a2043616e6e6f74207769746864726177207265776172640000006044820152606401610963565b50506001600855565b6005546001600160a01b031633146116b95760405162461bcd60e51b815260040161096390612988565b6010805460ff19169055565b6005546001600160a01b031633146116ef5760405162461bcd60e51b815260040161096390612988565b600a5460405182907fcdadd717dc9ee3550a289071d1af75e229726888d51e3a31c9e3dfc693d4852b90600090a3600a55565b6000806117766117517f0000000000000000000000000000000000000000000000000000000000000000610d8d565b61177061175f61dead610d8d565b61177061176c6000610d8d565b6002545b90612119565b905047600061178485610d8d565b9050600061179c84611796858561215b565b906121da565b9695505050505050565b6005546001600160a01b031633146117d05760405162461bcd60e51b815260040161096390612988565b60058054600680546001600160a01b03199081166001600160a01b038416179091551690556117ff8142612ae8565b6007556005546040516000916001600160a01b031690600080516020612c0e833981519152908390a350565b6005546001600160a01b031633146118555760405162461bcd60e51b815260040161096390612988565b6001600160a01b03166000908152601560205260409020805460ff19166001179055565b6005546001600160a01b031633146118a35760405162461bcd60e51b815260040161096390612988565b6001600160a01b0381166119085760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610963565b6005546040516001600160a01b03808416921690600080516020612c0e83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b60008061195f8385612ae8565b9050838110156119b15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610963565b9392505050565b6001600160a01b038316611a1a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610963565b6001600160a01b038216611a7b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610963565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611b035760405162461bcd60e51b8152600401610963906129bd565b6001600160a01b038216611b295760405162461bcd60e51b815260040161096390612945565b80611b3f57611b3a8383600061221c565b505050565b600b5460ff168015611b545750601b5460ff16155b15611e38577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415611c8b576001600160a01b0382166000908152600f6020526040812054600114611bba576001611bbd565b60025b60ff16905042611bfa611bdb83600c5461215b90919063ffffffff16565b6001600160a01b0386166000908152600d602052604090205490611952565b111580611c1f57506001600160a01b03831660009081526015602052604090205460ff165b611c3b5760405162461bcd60e51b815260040161096390612a02565b6001600160a01b0383166000908152600d60209081526040808320429055600f909152902054611c6c906001612ae8565b6001600160a01b0384166000908152600f602052604090205550611e38565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611dc1576001600160a01b0383166000908152600e6020526040812054600114611cec576001611cef565b60025b60ff16905042611d2c611d0d83600c5461215b90919063ffffffff16565b6001600160a01b0387166000908152600d602052604090205490611952565b111580611d5157506001600160a01b03841660009081526015602052604090205460ff165b611d6d5760405162461bcd60e51b815260040161096390612a02565b6001600160a01b038085166000908152600d602090815260408083204290559286168252600e90522054611da2906001612ae8565b6001600160a01b0384166000908152600e602052604090205550611e38565b42611ddb611bdb6002600c5461215b90919063ffffffff16565b111580611e0057506001600160a01b03831660009081526015602052604090205460ff165b611e1c5760405162461bcd60e51b815260040161096390612a02565b6001600160a01b0383166000908152600d602052604090204290555b6014546001600160a01b0384811691161415611e7457611e5a42611c20612ae8565b6001600160a01b0383166000908152600d60205260409020555b6000611e7f30610d8d565b600a5490915081108015908190611ec857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b15611ed657611ed682612325565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316148015611f3257506001600160a01b03861660009081526015602052604090205460ff16155b80611f9257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b0316148015611f9257506001600160a01b03851660009081526015602052604090205460ff16155b15611f9b575060015b601b5460ff1615611faa575060005b808015611fb9575060105460ff165b156120c2576000611fd16103e861179687601961215b565b90506000611fe66103e861179688601961215b565b90506000611ffb6103e861179689601961215b565b905060006120126106858361177086818d8a612119565b905060006120266103e86117968b8561215b565b9050600061203a8461177087818e8b612119565b90506120468183612119565b905060006120548b83612119565b90506120608282611952565b8b146120ae5760405162461bcd60e51b815260206004820181905260248201527f434c543a3a7472616e736665723a205461782076616c756520696e76616c69646044820152606401610963565b6120b98d308361221c565b50985050505050505b6120cc8585612482565b6120d786868661221c565b505050505050565b600081848411156121035760405162461bcd60e51b815260040161096391906128f2565b5060006121108486612b3f565b95945050505050565b60006119b183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120df565b60008261216a57506000610a42565b60006121768385612b20565b9050826121838583612b00565b146119b15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610963565b60006119b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125b7565b6001600160a01b0383166122425760405162461bcd60e51b8152600401610963906129bd565b6001600160a01b0382166122685760405162461bcd60e51b815260040161096390612945565b6122a581604051806060016040528060268152602001612bc0602691396001600160a01b03861660009081526020819052604090205491906120df565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546122d49082611952565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611ad0565b601b54479060ff1661247e57601b805460ff19166001179055612347826125e5565b60006123534783612119565b905060006123628260036121da565b9050806000612375826117708682612119565b6013546040519192506001600160a01b0316908290600081818185875af1925050503d80600081146123c3576040519150601f19603f3d011682016040523d82523d6000602084013e6123c8565b606091505b50506012546040516001600160a01b0390911691508390600081818185875af1925050503d8060008114612418576040519150601f19603f3d011682016040523d82523d6000602084013e61241d565b606091505b5050601b805460ff1916905550604080518781526020810186905290810184905260608101839052608081018290527f1f9c80ba93be7c925dc5b9f8017795013223f7f7ba4681e7b91c2e8a108b838f9060a00160405180910390a1505050505b5050565b600061248d83610d8d565b6019546001600160a01b0385166000908152601860205260408120549293509142916124b891612ae8565b10156124da576001600160a01b03841660009081526018602052604090204290555b81156125315760006124f18361179686606461215b565b9050601a54811061252b57600061251860646117968460195461215b90919063ffffffff16565b9050601954811061252857506019545b91505b50612571565b6019546001600160a01b0385166000908152601860205260409020546125579190612ae8565b6001600160a01b0385166000908152601860205260409020555b6001600160a01b038416600090815260186020526040902054612595908290612ae8565b6001600160a01b03909416600090815260186020526040902093909355505050565b600081836125d85760405162461bcd60e51b815260040161096391906128f2565b5060006121108486612b00565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061262857634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561267c57600080fd5b505afa158015612690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b49190612795565b816001815181106126d557634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526009546126fb91309116846119b8565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612734908590600090869030904290600401612a78565b600060405180830381600087803b15801561274e57600080fd5b505af11580156120d7573d6000803e3d6000fd5b80516001600160701b0381168114610a7e57600080fd5b60006020828403121561278a578081fd5b81356119b181612ba7565b6000602082840312156127a6578081fd5b81516119b181612ba7565b600080604083850312156127c3578081fd5b82356127ce81612ba7565b915060208301356127de81612ba7565b809150509250929050565b6000806000606084860312156127fd578081fd5b833561280881612ba7565b9250602084013561281881612ba7565b929592945050506040919091013590565b6000806040838503121561283b578182fd5b823561284681612ba7565b946020939093013593505050565b600060208284031215612865578081fd5b813580151581146119b1578182fd5b600080600060608486031215612888578283fd5b61289184612762565b925061289f60208501612762565b9150604084015163ffffffff811681146128b7578182fd5b809150509250925092565b6000602082840312156128d3578081fd5b5035919050565b6000602082840312156128eb578081fd5b5051919050565b6000602080835283518082850152825b8181101561291e57858101830151858201604001528201612902565b8181111561292f5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526050908201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60408201527f65642e2020506c656173652074727920616761696e206166746572207468652060608201526f747820626c6f636b207061737365737360801b608082015260a00190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015612ac75784516001600160a01b031683529383019391830191600101612aa2565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612afb57612afb612b91565b500190565b600082612b1b57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612b3a57612b3a612b91565b500290565b600082821015612b5157612b51612b91565b500390565b600181811c90821680612b6a57607f821691505b60208210811415612b8b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114612bbc57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122009d7f201f4f649d7fee978dc4ab1b4ef788146f808bf441d96aa56e2a0c2b6b764736f6c634300080400330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x60806040526004361061031e5760003560e01c806375722434116101ab578063a457c2d7116100f7578063ce404b2311610095578063dd4670641161006f578063dd46706414610893578063dd62ed3e146108b3578063e57f14e1146108f9578063f2fde38b1461091957600080fd5b8063ce404b231461083e578063d3b5be1a14610853578063d82e39621461087357600080fd5b8063af3e2122116100d1578063af3e212214610454578063b47fd563146107e6578063b88a802f14610813578063c816e4b61461082857600080fd5b8063a457c2d714610791578063a69df4b5146107b1578063a9059cbb146107c657600080fd5b80638da5cb5b1161016457806392ca1e8d1161013e57806392ca1e8d1461073157806395d89b4114610746578063966f41a21461075b5780639c21a9b81461077b57600080fd5b80638da5cb5b146106d55780638ea5220f146106f3578063902d55a51461071357600080fd5b8063757224341461063057806375f0a8741461064a5780637b5db6611461066a5780637cd09f921461068a5780638263a8d61461069f57806389b6e25e146106b557600080fd5b8063436a88c11161026a578063602bc62b1161022357806370a08231116101fd57806370a08231146105c5578063715018a6146105e55780637217f4bc146105fa57806372ba4df51461061057600080fd5b8063602bc62b1461057057806365b8dbc0146105855780636b292d37146105a557600080fd5b8063436a88c11461045457806349bd5a5e146104da5780635007de651461050e57806353adf85c14610528578063557ed1ba1461053d5780635907bd191461055057600080fd5b80632116a4ae116102d7578063313ce567116102b1578063313ce56714610469578063368f5bd514610485578063395093511461049a5780634116d15d146104ba57600080fd5b80632116a4ae1461041457806323b872dd146104345780632d17f2691461045457600080fd5b80630496a34d1461032a57806306fdde031461034c578063095ea7b3146103775780631694505e146103a757806318160ddd146103df5780631faaddf3146103fe57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061034a6103453660046128c2565b610939565b005b34801561035857600080fd5b5061036161099f565b60405161036e91906128f2565b60405180910390f35b34801561038357600080fd5b50610397610392366004612829565b610a31565b604051901515815260200161036e565b3480156103b357600080fd5b506009546103c7906001600160a01b031681565b6040516001600160a01b03909116815260200161036e565b3480156103eb57600080fd5b506002545b60405190815260200161036e565b34801561040a57600080fd5b506103f060115481565b34801561042057600080fd5b5061039761042f3660046128c2565b610a48565b34801561044057600080fd5b5061039761044f3660046127e9565b610a83565b34801561046057600080fd5b506103f0601981565b34801561047557600080fd5b506040516009815260200161036e565b34801561049157600080fd5b5061034a610aec565b3480156104a657600080fd5b506103976104b5366004612829565b610b25565b3480156104c657600080fd5b5061034a6104d53660046128c2565b610b5b565b3480156104e657600080fd5b506103c77f00000000000000000000000057cd855ff9106bcf8a0943156cc43b1075ec0c8181565b34801561051a57600080fd5b50600b546103979060ff1681565b34801561053457600080fd5b5061034a610bb8565b34801561054957600080fd5b50426103f0565b34801561055c57600080fd5b5061034a61056b3660046128c2565b610bee565b34801561057c57600080fd5b506007546103f0565b34801561059157600080fd5b5061034a6105a0366004612779565b610c4b565b3480156105b157600080fd5b5061034a6105c0366004612779565b610d41565b3480156105d157600080fd5b506103f06105e0366004612779565b610d8d565b3480156105f157600080fd5b5061034a610da8565b34801561060657600080fd5b506103f060195481565b34801561061c57600080fd5b5061034a61062b366004612779565b610e0a565b34801561063c57600080fd5b506017546103979060ff1681565b34801561065657600080fd5b506013546103c7906001600160a01b031681565b34801561067657600080fd5b506103f06106853660046128c2565b610e55565b34801561069657600080fd5b5061034a6111ab565b3480156106ab57600080fd5b506103f060165481565b3480156106c157600080fd5b5061034a6106d03660046128c2565b6111e4565b3480156106e157600080fd5b506005546001600160a01b03166103c7565b3480156106ff57600080fd5b506012546103c7906001600160a01b031681565b34801561071f57600080fd5b506103f0691d02c8edfee423a0000081565b34801561073d57600080fd5b506103f0611213565b34801561075257600080fd5b5061036161122c565b34801561076757600080fd5b5061034a610776366004612854565b61123b565b34801561078757600080fd5b506103f0600c5481565b34801561079d57600080fd5b506103976107ac366004612829565b6112a5565b3480156107bd57600080fd5b5061034a6112f4565b3480156107d257600080fd5b506103976107e1366004612829565b6113fc565b3480156107f257600080fd5b506103f0610801366004612779565b60186020526000908152604090205481565b34801561081f57600080fd5b5061034a611409565b34801561083457600080fd5b506103f0600a5481565b34801561084a57600080fd5b5061034a61168f565b34801561085f57600080fd5b5061034a61086e3660046128c2565b6116c5565b34801561087f57600080fd5b506103f061088e366004612779565b611722565b34801561089f57600080fd5b5061034a6108ae3660046128c2565b6117a6565b3480156108bf57600080fd5b506103f06108ce3660046127b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561090557600080fd5b5061034a610914366004612779565b61182b565b34801561092557600080fd5b5061034a610934366004612779565b611879565b6005546001600160a01b0316331461096c5760405162461bcd60e51b815260040161096390612988565b60405180910390fd5b60165460405182907f45f855674a81ee4a043e3eadaffb44a6e1f0df2ef0c510f52ff5d2cc7dbc969490600090a3601655565b6060600380546109ae90612b56565b80601f01602080910402602001604051908101604052809291908181526020018280546109da90612b56565b8015610a275780601f106109fc57610100808354040283529160200191610a27565b820191906000526020600020905b815481529060010190602001808311610a0a57829003601f168201915b5050505050905090565b6000610a3e3384846119b8565b5060015b92915050565b6005546000906001600160a01b03163314610a755760405162461bcd60e51b815260040161096390612988565b50600c81905560015b919050565b6000610a90848484611add565b610ae28433610add85604051806060016040528060288152602001612be6602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906120df565b6119b8565b5060019392505050565b6005546001600160a01b03163314610b165760405162461bcd60e51b815260040161096390612988565b6010805460ff19166001179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a3e918590610add9086611952565b6005546001600160a01b03163314610b855760405162461bcd60e51b815260040161096390612988565b60115460405182907f3e598abbf839fb9f42cbf366b55a140e583506553980c23c68379f3566c5859d90600090a3601155565b6005546001600160a01b03163314610be25760405162461bcd60e51b815260040161096390612988565b600b805460ff19169055565b6005546001600160a01b03163314610c185760405162461bcd60e51b815260040161096390612988565b60195460405182907fe7cda9606ff2f769167fdf0eb6c612cddb2317d2808071755beebedd723cd3a690600090a3601955565b6005546001600160a01b03163314610c755760405162461bcd60e51b815260040161096390612988565b6009546001600160a01b0382811691161415610ce45760405162461bcd60e51b815260206004820152602860248201527f434c543a2054686520726f7574657220616c7265616479206861732074686174604482015267206164647265737360c01b6064820152608401610963565b6009546040516001600160a01b03918216918316907fcd2acde3ae4de754da8074077404027fae40be67d89638ee1ceca2427883da7d90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d6b5760405162461bcd60e51b815260040161096390612988565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610dd25760405162461bcd60e51b815260040161096390612988565b6005546040516000916001600160a01b031690600080516020612c0e833981519152908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610e345760405162461bcd60e51b815260040161096390612988565b6001600160a01b03166000908152601560205260409020805460ff19169055565b60175460009060ff1615610e6b57506000919050565b60007f00000000000000000000000057cd855ff9106bcf8a0943156cc43b1075ec0c8190506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610ecb57600080fd5b505afa158015610edf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f039190612795565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4057600080fd5b505afa158015610f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f789190612795565b90506000806001600160a01b03841630141561101557846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610fc757600080fd5b505afa158015610fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fff9190612874565b506001600160701b0390811693501690506110a9565b6001600160a01b0383163014156110a957846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561105f57600080fd5b505afa158015611073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110979190612874565b506001600160701b0391821693501690505b811580156110b5575080155b156110c7575060009695505050505050565b6009546040516385f8c25960e01b81526004810189905260248101849052604481018390526000916001600160a01b0316906385f8c2599060640160206040518083038186803b15801561111a57600080fd5b505afa15801561112e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115291906128da565b905060008361117761271061117161116a8487612119565b8890612119565b9061215b565b6111819190612b00565b9050601654811061119c575050601154979650505050505050565b50600098975050505050505050565b6005546001600160a01b031633146111d55760405162461bcd60e51b815260040161096390612988565b600b805460ff19166001179055565b6005546001600160a01b0316331461120e5760405162461bcd60e51b815260040161096390612988565b600a55565b601961121f8180612ae8565b6112299190612ae8565b81565b6060600480546109ae90612b56565b6005546001600160a01b031633146112655760405162461bcd60e51b815260040161096390612988565b604051811515907f55c19e5f01f19b1320171e8b80e3926c38efd7f66c3ef89f45defdf6c2122b7b90600090a26017805460ff1916911515919091179055565b6000610a3e3384610add85604051806060016040528060258152602001612c2e602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906120df565b6006546001600160a01b0316331461135a5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610963565b60075442116113ab5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610963565b6006546005546040516001600160a01b039283169290911690600080516020612c0e83398151915290600090a3600654600580546001600160a01b0319166001600160a01b03909216919091179055565b6000610a3e338484611add565b3233146114585760405162461bcd60e51b815260206004820152601b60248201527f697348756d616e3a3a20736f7272792068756d616e73206f6e6c7900000000006044820152606401610963565b600260085414156114ab5760405162461bcd60e51b815260206004820152601d60248201527f6e6f6e5265656e7472616e743a3a207265656e7472616e742063616c6c0000006044820152606401610963565b6002600855336000908152601860205260409020544210156115195760405162461bcd60e51b815260206004820152602160248201527f4572726f723a206e65787420617661696c61626c65206e6f74207265616368656044820152601960fa1b6064820152608401610963565b600061152433610d8d565b10156115805760405162461bcd60e51b815260206004820152602560248201527f4572726f723a206d757374206f776e20746f6b656e20746f20636c61696d2072604482015264195dd85c9960da1b6064820152608401610963565b600061158b33611722565b90506019544261159b9190612ae8565b33600081815260186020908152604091829020849055815192835282018490528101919091527f25aee98a65c97a4eccb09abe48315f60cd987890080434e094a7fca39a3d84689060600160405180910390a1604051600090339083908381818185875af1925050503d8060008114611630576040519150601f19603f3d011682016040523d82523d6000602084013e611635565b606091505b50509050806116865760405162461bcd60e51b815260206004820152601d60248201527f4572726f723a2043616e6e6f74207769746864726177207265776172640000006044820152606401610963565b50506001600855565b6005546001600160a01b031633146116b95760405162461bcd60e51b815260040161096390612988565b6010805460ff19169055565b6005546001600160a01b031633146116ef5760405162461bcd60e51b815260040161096390612988565b600a5460405182907fcdadd717dc9ee3550a289071d1af75e229726888d51e3a31c9e3dfc693d4852b90600090a3600a55565b6000806117766117517f00000000000000000000000057cd855ff9106bcf8a0943156cc43b1075ec0c81610d8d565b61177061175f61dead610d8d565b61177061176c6000610d8d565b6002545b90612119565b905047600061178485610d8d565b9050600061179c84611796858561215b565b906121da565b9695505050505050565b6005546001600160a01b031633146117d05760405162461bcd60e51b815260040161096390612988565b60058054600680546001600160a01b03199081166001600160a01b038416179091551690556117ff8142612ae8565b6007556005546040516000916001600160a01b031690600080516020612c0e833981519152908390a350565b6005546001600160a01b031633146118555760405162461bcd60e51b815260040161096390612988565b6001600160a01b03166000908152601560205260409020805460ff19166001179055565b6005546001600160a01b031633146118a35760405162461bcd60e51b815260040161096390612988565b6001600160a01b0381166119085760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610963565b6005546040516001600160a01b03808416921690600080516020612c0e83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b60008061195f8385612ae8565b9050838110156119b15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610963565b9392505050565b6001600160a01b038316611a1a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610963565b6001600160a01b038216611a7b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610963565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611b035760405162461bcd60e51b8152600401610963906129bd565b6001600160a01b038216611b295760405162461bcd60e51b815260040161096390612945565b80611b3f57611b3a8383600061221c565b505050565b600b5460ff168015611b545750601b5460ff16155b15611e38577f00000000000000000000000057cd855ff9106bcf8a0943156cc43b1075ec0c816001600160a01b0316836001600160a01b03161415611c8b576001600160a01b0382166000908152600f6020526040812054600114611bba576001611bbd565b60025b60ff16905042611bfa611bdb83600c5461215b90919063ffffffff16565b6001600160a01b0386166000908152600d602052604090205490611952565b111580611c1f57506001600160a01b03831660009081526015602052604090205460ff165b611c3b5760405162461bcd60e51b815260040161096390612a02565b6001600160a01b0383166000908152600d60209081526040808320429055600f909152902054611c6c906001612ae8565b6001600160a01b0384166000908152600f602052604090205550611e38565b7f00000000000000000000000057cd855ff9106bcf8a0943156cc43b1075ec0c816001600160a01b0316826001600160a01b03161415611dc1576001600160a01b0383166000908152600e6020526040812054600114611cec576001611cef565b60025b60ff16905042611d2c611d0d83600c5461215b90919063ffffffff16565b6001600160a01b0387166000908152600d602052604090205490611952565b111580611d5157506001600160a01b03841660009081526015602052604090205460ff165b611d6d5760405162461bcd60e51b815260040161096390612a02565b6001600160a01b038085166000908152600d602090815260408083204290559286168252600e90522054611da2906001612ae8565b6001600160a01b0384166000908152600e602052604090205550611e38565b42611ddb611bdb6002600c5461215b90919063ffffffff16565b111580611e0057506001600160a01b03831660009081526015602052604090205460ff165b611e1c5760405162461bcd60e51b815260040161096390612a02565b6001600160a01b0383166000908152600d602052604090204290555b6014546001600160a01b0384811691161415611e7457611e5a42611c20612ae8565b6001600160a01b0383166000908152600d60205260409020555b6000611e7f30610d8d565b600a5490915081108015908190611ec857507f00000000000000000000000057cd855ff9106bcf8a0943156cc43b1075ec0c816001600160a01b0316856001600160a01b031614155b15611ed657611ed682612325565b60007f00000000000000000000000057cd855ff9106bcf8a0943156cc43b1075ec0c816001600160a01b0316856001600160a01b0316148015611f3257506001600160a01b03861660009081526015602052604090205460ff16155b80611f9257507f00000000000000000000000057cd855ff9106bcf8a0943156cc43b1075ec0c816001600160a01b0316866001600160a01b0316148015611f9257506001600160a01b03851660009081526015602052604090205460ff16155b15611f9b575060015b601b5460ff1615611faa575060005b808015611fb9575060105460ff165b156120c2576000611fd16103e861179687601961215b565b90506000611fe66103e861179688601961215b565b90506000611ffb6103e861179689601961215b565b905060006120126106858361177086818d8a612119565b905060006120266103e86117968b8561215b565b9050600061203a8461177087818e8b612119565b90506120468183612119565b905060006120548b83612119565b90506120608282611952565b8b146120ae5760405162461bcd60e51b815260206004820181905260248201527f434c543a3a7472616e736665723a205461782076616c756520696e76616c69646044820152606401610963565b6120b98d308361221c565b50985050505050505b6120cc8585612482565b6120d786868661221c565b505050505050565b600081848411156121035760405162461bcd60e51b815260040161096391906128f2565b5060006121108486612b3f565b95945050505050565b60006119b183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120df565b60008261216a57506000610a42565b60006121768385612b20565b9050826121838583612b00565b146119b15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610963565b60006119b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125b7565b6001600160a01b0383166122425760405162461bcd60e51b8152600401610963906129bd565b6001600160a01b0382166122685760405162461bcd60e51b815260040161096390612945565b6122a581604051806060016040528060268152602001612bc0602691396001600160a01b03861660009081526020819052604090205491906120df565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546122d49082611952565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611ad0565b601b54479060ff1661247e57601b805460ff19166001179055612347826125e5565b60006123534783612119565b905060006123628260036121da565b9050806000612375826117708682612119565b6013546040519192506001600160a01b0316908290600081818185875af1925050503d80600081146123c3576040519150601f19603f3d011682016040523d82523d6000602084013e6123c8565b606091505b50506012546040516001600160a01b0390911691508390600081818185875af1925050503d8060008114612418576040519150601f19603f3d011682016040523d82523d6000602084013e61241d565b606091505b5050601b805460ff1916905550604080518781526020810186905290810184905260608101839052608081018290527f1f9c80ba93be7c925dc5b9f8017795013223f7f7ba4681e7b91c2e8a108b838f9060a00160405180910390a1505050505b5050565b600061248d83610d8d565b6019546001600160a01b0385166000908152601860205260408120549293509142916124b891612ae8565b10156124da576001600160a01b03841660009081526018602052604090204290555b81156125315760006124f18361179686606461215b565b9050601a54811061252b57600061251860646117968460195461215b90919063ffffffff16565b9050601954811061252857506019545b91505b50612571565b6019546001600160a01b0385166000908152601860205260409020546125579190612ae8565b6001600160a01b0385166000908152601860205260409020555b6001600160a01b038416600090815260186020526040902054612595908290612ae8565b6001600160a01b03909416600090815260186020526040902093909355505050565b600081836125d85760405162461bcd60e51b815260040161096391906128f2565b5060006121108486612b00565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061262857634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561267c57600080fd5b505afa158015612690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b49190612795565b816001815181106126d557634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526009546126fb91309116846119b8565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612734908590600090869030904290600401612a78565b600060405180830381600087803b15801561274e57600080fd5b505af11580156120d7573d6000803e3d6000fd5b80516001600160701b0381168114610a7e57600080fd5b60006020828403121561278a578081fd5b81356119b181612ba7565b6000602082840312156127a6578081fd5b81516119b181612ba7565b600080604083850312156127c3578081fd5b82356127ce81612ba7565b915060208301356127de81612ba7565b809150509250929050565b6000806000606084860312156127fd578081fd5b833561280881612ba7565b9250602084013561281881612ba7565b929592945050506040919091013590565b6000806040838503121561283b578182fd5b823561284681612ba7565b946020939093013593505050565b600060208284031215612865578081fd5b813580151581146119b1578182fd5b600080600060608486031215612888578283fd5b61289184612762565b925061289f60208501612762565b9150604084015163ffffffff811681146128b7578182fd5b809150509250925092565b6000602082840312156128d3578081fd5b5035919050565b6000602082840312156128eb578081fd5b5051919050565b6000602080835283518082850152825b8181101561291e57858101830151858201604001528201612902565b8181111561292f5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526050908201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60408201527f65642e2020506c656173652074727920616761696e206166746572207468652060608201526f747820626c6f636b207061737365737360801b608082015260a00190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015612ac75784516001600160a01b031683529383019391830191600101612aa2565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612afb57612afb612b91565b500190565b600082612b1b57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612b3a57612b3a612b91565b500290565b600082821015612b5157612b51612b91565b500390565b600181811c90821680612b6a57607f821691505b60208210811415612b8b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114612bbc57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122009d7f201f4f649d7fee978dc4ab1b4ef788146f808bf441d96aa56e2a0c2b6b764736f6c63430008040033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

27608:14757:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31559:173;;;;;;;;;;-1:-1:-1;31559:173:0;;;;;:::i;:::-;;:::i;:::-;;8776:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10942:169;;;;;;;;;;-1:-1:-1;10942:169:0;;;;;:::i;:::-;;:::i;:::-;;;4039:14:1;;4032:22;4014:41;;4002:2;3987:18;10942:169:0;3969:92:1;27733:41:0;;;;;;;;;;-1:-1:-1;27733:41:0;;;;-1:-1:-1;;;;;27733:41:0;;;;;;-1:-1:-1;;;;;3480:32:1;;;3462:51;;3450:2;3435:18;27733:41:0;3417:102:1;9895:108:0;;;;;;;;;;-1:-1:-1;9983:12:0;;9895:108;;;12102:25:1;;;12090:2;12075:18;9895:108:0;12057:76:1;28504:30:0;;;;;;;;;;;;;;;;32695:131;;;;;;;;;;-1:-1:-1;32695:131:0;;;;;:::i;:::-;;:::i;11593:355::-;;;;;;;;;;-1:-1:-1;11593:355:0;;;;;:::i;:::-;;:::i;28361:44::-;;;;;;;;;;;;28403:2;28361:44;;9738:92;;;;;;;;;;-1:-1:-1;9738:92:0;;9821:1;14060:36:1;;14048:2;14033:18;9738:92:0;14015:87:1;30940:77:0;;;;;;;;;;;;;:::i;12357:218::-;;;;;;;;;;-1:-1:-1;12357:218:0;;;;;:::i;:::-;;:::i;31740:152::-;;;;;;;;;;-1:-1:-1;31740:152:0;;;;;:::i;:::-;;:::i;27781:38::-;;;;;;;;;;;;;;;28008:29;;;;;;;;;;-1:-1:-1;28008:29:0;;;;;;;;32611:76;;;;;;;;;;;;;:::i;2264:90::-;;;;;;;;;;-1:-1:-1;2331:15:0;2264:90;;31377:174;;;;;;;;;;-1:-1:-1;31377:174:0;;;;;:::i;:::-;;:::i;2068:90::-;;;;;;;;;;-1:-1:-1;2141:9:0;;2068:90;;30619:313;;;;;;;;;;-1:-1:-1;30619:313:0;;;;;:::i;:::-;;:::i;31247:122::-;;;;;;;;;;-1:-1:-1;31247:122:0;;;;;:::i;:::-;;:::i;10066:127::-;;;;;;;;;;-1:-1:-1;10066:127:0;;;;;:::i;:::-;;:::i;1513:148::-;;;;;;;;;;;;;:::i;29106:40::-;;;;;;;;;;;;;;;;32195:112;;;;;;;;;;-1:-1:-1;32195:112:0;;;;;:::i;:::-;;:::i;28970:41::-;;;;;;;;;;-1:-1:-1;28970:41:0;;;;;;;;28702:75;;;;;;;;;;-1:-1:-1;28702:75:0;;;;-1:-1:-1;;;;;28702:75:0;;;32834:1020;;;;;;;;;;-1:-1:-1;32834:1020:0;;;;;:::i;:::-;;:::i;32527:76::-;;;;;;;;;;;;;:::i;28928:35::-;;;;;;;;;;;;;;;;31112:127;;;;;;;;;;-1:-1:-1;31112:127:0;;;;;:::i;:::-;;:::i;871:79::-;;;;;;;;;;-1:-1:-1;936:6:0;;-1:-1:-1;;;;;936:6:0;871:79;;28626:69;;;;;;;;;;-1:-1:-1;28626:69:0;;;;-1:-1:-1;;;;;28626:69:0;;;27908:64;;;;;;;;;;;;27947:25;27908:64;;28541:78;;;;;;;;;;;;;:::i;8995:104::-;;;;;;;;;;;;;:::i;31900:166::-;;;;;;;;;;-1:-1:-1;31900:166:0;;;;;:::i;:::-;;:::i;28044:30::-;;;;;;;;;;;;;;;;13078:269;;;;;;;;;;-1:-1:-1;13078:269:0;;;;;:::i;:::-;;:::i;2596:304::-;;;;;;;;;;;;;:::i;10406:175::-;;;;;;;;;;-1:-1:-1;10406:175:0;;;;;:::i;:::-;;:::i;29042:57::-;;;;;;;;;;-1:-1:-1;29042:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;40589:651;;;;;;;;;;;;;:::i;27826:55::-;;;;;;;;;;;;;;;;31025:79;;;;;;;;;;;;;:::i;32315:204::-;;;;;;;;;;-1:-1:-1;32315:204:0;;;;;:::i;:::-;;:::i;40068:513::-;;;;;;;;;;-1:-1:-1;40068:513:0;;;;;:::i;:::-;;:::i;2362:226::-;;;;;;;;;;-1:-1:-1;2362:226:0;;;;;:::i;:::-;;:::i;10644:151::-;;;;;;;;;;-1:-1:-1;10644:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;10760:18:0;;;10733:7;10760:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10644:151;32074:113;;;;;;;;;;-1:-1:-1;32074:113:0;;;;;:::i;:::-;;:::i;1816:244::-;;;;;;;;;;-1:-1:-1;1816:244:0;;;;;:::i;:::-;;:::i;31559:173::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;;;;;;;;;31671:15:::1;::::0;31641:46:::1;::::0;31661:8;;31641:46:::1;::::0;;;::::1;31698:15;:26:::0;31559:173::o;8776:100::-;8830:13;8863:5;8856:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8776:100;:::o;10942:169::-;11025:4;11042:39;177:10;11065:7;11074:6;11042:8;:39::i;:::-;-1:-1:-1;11099:4:0;10942:169;;;;;:::o;32695:131::-;1083:6;;32755:4;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;-1:-1:-1;32772:2:0::1;:10:::0;;;32814:4:::1;1153:1;32695:131:::0;;;:::o;11593:355::-;11733:4;11750:36;11760:6;11768:9;11779:6;11750:9;:36::i;:::-;11797:121;11806:6;177:10;11828:89;11866:6;11828:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11828:19:0;;;;;;:11;:19;;;;;;;;177:10;11828:33;;;;;;;;;;:37;:89::i;:::-;11797:8;:121::i;:::-;-1:-1:-1;11936:4:0;11593:355;;;;;:::o;30940:77::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;30990:12:::1;:19:::0;;-1:-1:-1;;30990:19:0::1;31005:4;30990:19;::::0;;30940:77::o;12357:218::-;177:10;12445:4;12494:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12494:34:0;;;;;;;;;;12445:4;;12462:83;;12485:7;;12494:50;;12533:10;12494:38;:50::i;31740:152::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;31843:9:::1;::::0;31816:37:::1;::::0;31833:8;;31816:37:::1;::::0;;;::::1;31864:9;:20:::0;31740:152::o;32611:76::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;32662:9:::1;:17:::0;;-1:-1:-1;;32662:17:0::1;::::0;;32611:76::o;31377:174::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;31488:16:::1;::::0;31460:45:::1;::::0;31478:8;;31460:45:::1;::::0;;;::::1;31516:16;:27:::0;31377:174::o;30619:313::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;30728:15:::1;::::0;-1:-1:-1;;;;;30706:38:0;;::::1;30728:15:::0;::::1;30706:38;;30698:91;;;::::0;-1:-1:-1;;;30698:91:0;;11345:2:1;30698:91:0::1;::::0;::::1;11327:21:1::0;11384:2;11364:18;;;11357:30;11423:34;11403:18;;;11396:62;-1:-1:-1;;;11474:18:1;;;11467:38;11522:19;;30698:91:0::1;11317:230:1::0;30698:91:0::1;30848:15;::::0;30805:60:::1;::::0;-1:-1:-1;;;;;30848:15:0;;::::1;::::0;30805:60;::::1;::::0;::::1;::::0;30848:15:::1;::::0;30805:60:::1;30876:15;:48:::0;;-1:-1:-1;;;;;;30876:48:0::1;-1:-1:-1::0;;;;;30876:48:0;;;::::1;::::0;;;::::1;::::0;;30619:313::o;31247:122::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;31329:15:::1;:32:::0;;-1:-1:-1;;;;;;31329:32:0::1;-1:-1:-1::0;;;;;31329:32:0;;;::::1;::::0;;;::::1;::::0;;31247:122::o;10066:127::-;-1:-1:-1;;;;;10167:18:0;10140:7;10167:18;;;;;;;;;;;;10066:127::o;1513:148::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;1604:6:::1;::::0;1583:40:::1;::::0;1620:1:::1;::::0;-1:-1:-1;;;;;1604:6:0::1;::::0;-1:-1:-1;;;;;;;;;;;1583:40:0;1620:1;;1583:40:::1;1634:6;:19:::0;;-1:-1:-1;;;;;;1634:19:0::1;::::0;;1513:148::o;32195:112::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32263:28:0::1;32294:5;32263:28:::0;;;:19:::1;:28;::::0;;;;:36;;-1:-1:-1;;32263:36:0::1;::::0;;32195:112::o;32834:1020::-;32922:22;;32898:7;;32922:22;;32918:36;;;-1:-1:-1;32953:1:0;;32834:1020;-1:-1:-1;32834:1020:0:o;32918:36::-;32967:19;33004:13;32967:51;;33029:14;33046:4;-1:-1:-1;;;;;33046:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33029:30;;33070:14;33087:4;-1:-1:-1;;;;;33087:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33070:30;-1:-1:-1;33111:16:0;;-1:-1:-1;;;;;33171:23:0;;33189:4;33171:23;33167:204;;;33236:4;-1:-1:-1;;;;;33236:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;33211:43:0;;;;-1:-1:-1;33211:43:0;;-1:-1:-1;33167:204:0;;;-1:-1:-1;;;;;33276:23:0;;33294:4;33276:23;33272:99;;;33341:4;-1:-1:-1;;;;;33341:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;33316:43:0;;;;-1:-1:-1;33316:43:0;;-1:-1:-1;33272:99:0;33387:13;;:30;;;;-1:-1:-1;33404:13:0;;33387:30;33383:176;;;-1:-1:-1;33546:1:0;;32834:1020;-1:-1:-1;;;;;;32834:1020:0:o;33383:176::-;33589:15;;:55;;-1:-1:-1;;;33589:55:0;;;;;13328:25:1;;;13369:18;;;13362:34;;;13412:18;;;13405:34;;;33571:15:0;;-1:-1:-1;;;;;33589:15:0;;:27;;13301:18:1;;33589:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33571:73;-1:-1:-1;33655:19:0;33726:8;33677:46;33717:5;33677:35;33690:21;33726:8;33571:73;33690:12;:21::i;:::-;33677:8;;:12;:35::i;:::-;:39;;:46::i;:::-;:57;;;;:::i;:::-;33655:79;;33766:15;;33751:11;:30;33747:79;;-1:-1:-1;;33805:9:0;;;32834:1020;-1:-1:-1;;;;;;;32834:1020:0:o;33747:79::-;-1:-1:-1;33845:1:0;;32834:1020;-1:-1:-1;;;;;;;;32834:1020:0:o;32527:76::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;32579:9:::1;:16:::0;;-1:-1:-1;;32579:16:0::1;32591:4;32579:16;::::0;;32527:76::o;31112:127::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;31197:23:::1;:34:::0;31112:127::o;28541:78::-;28495:2;28578:31;28495:2;;28578:31;:::i;:::-;:41;;;;:::i;:::-;28541:78;:::o;8995:104::-;9051:13;9084:7;9077:14;;;;;:::i;31900:166::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;31981:33:::1;::::0;;::::1;;::::0;::::1;::::0;;;::::1;32025:22;:33:::0;;-1:-1:-1;;32025:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31900:166::o;13078:269::-;13171:4;13188:129;177:10;13211:7;13220:96;13259:15;13220:96;;;;;;;;;;;;;;;;;177:10;13220:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13220:34:0;;;;;;;;;;;;:38;:96::i;2596:304::-;2648:14;;-1:-1:-1;;;;;2648:14:0;2666:10;2648:28;2640:76;;;;-1:-1:-1;;;2640:76:0;;11754:2:1;2640:76:0;;;11736:21:1;11793:2;11773:18;;;11766:30;11832:34;11812:18;;;11805:62;-1:-1:-1;;;11883:18:1;;;11876:33;11926:19;;2640:76:0;11726:225:1;2640:76:0;2753:9;;2735:15;:27;2727:71;;;;-1:-1:-1;;;2727:71:0;;10496:2:1;2727:71:0;;;10478:21:1;10535:2;10515:18;;;10508:30;10574:33;10554:18;;;10547:61;10625:18;;2727:71:0;10468:181:1;2727:71:0;2843:14;;2835:6;;2814:44;;-1:-1:-1;;;;;2843:14:0;;;;2835:6;;;;-1:-1:-1;;;;;;;;;;;2814:44:0;2843:14;;2814:44;2878:14;;2869:6;:23;;-1:-1:-1;;;;;;2869:23:0;-1:-1:-1;;;;;2878:14:0;;;2869:23;;;;;;2596:304::o;10406:175::-;10492:4;10509:42;177:10;10533:9;10544:6;10509:9;:42::i;40589:651::-;4782:9;4795:10;4782:23;4774:63;;;;-1:-1:-1;;;4774:63:0;;7850:2:1;4774:63:0;;;7832:21:1;7889:2;7869:18;;;7862:30;7928:29;7908:18;;;7901:57;7975:18;;4774:63:0;7822:177:1;4774:63:0;3791:1:::1;4396:7;;:19;;4388:61;;;::::0;-1:-1:-1;;;4388:61:0;;8969:2:1;4388:61:0::1;::::0;::::1;8951:21:1::0;9008:2;8988:18;;;8981:30;9047:31;9027:18;;;9020:59;9096:18;;4388:61:0::1;8941:179:1::0;4388:61:0::1;3791:1;4527:7;:18:::0;40682:10:::2;40659:34;::::0;;;:22:::2;:34;::::0;;;;;40697:15:::2;-1:-1:-1::0;40659:53:0::2;40651:99;;;::::0;-1:-1:-1;;;40651:99:0;;5111:2:1;40651:99:0::2;::::0;::::2;5093:21:1::0;5150:2;5130:18;;;5123:30;5189:34;5169:18;;;5162:62;-1:-1:-1;;;5240:18:1;;;5233:31;5281:19;;40651:99:0::2;5083:223:1::0;40651:99:0::2;40794:1;40769:21;40779:10;40769:9;:21::i;:::-;:26;;40761:76;;;::::0;-1:-1:-1;;;40761:76:0;;7444:2:1;40761:76:0::2;::::0;::::2;7426:21:1::0;7483:2;7463:18;;;7456:30;7522:34;7502:18;;;7495:62;-1:-1:-1;;;7573:18:1;;;7566:35;7618:19;;40761:76:0::2;7416:227:1::0;40761:76:0::2;40850:14;40867:27;40883:10;40867:15;:27::i;:::-;40850:44;;40998:16;;40980:15;:34;;;;:::i;:::-;40966:10;40943:34;::::0;;;:22:::2;:34;::::0;;;;;;;;:71;;;41030:73;;3726:51:1;;;3793:18;;3786:34;;;3836:18;;3829:34;;;;41030:73:0::2;::::0;3714:2:1;3699:18;41030:73:0::2;;;;;;;41132:43;::::0;41117:9:::2;::::0;41140:10:::2;::::0;41164:6;;41117:9;41132:43;41117:9;41132:43;41164:6;41140:10;41132:43:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41116:59;;;41194:4;41186:46;;;::::0;-1:-1:-1;;;41186:46:0;;9733:2:1;41186:46:0::2;::::0;::::2;9715:21:1::0;9772:2;9752:18;;;9745:30;9811:31;9791:18;;;9784:59;9860:18;;41186:46:0::2;9705:179:1::0;41186:46:0::2;-1:-1:-1::0;;3747:1:0::1;4706:7;:22:::0;40589:651::o;31025:79::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;31076:12:::1;:20:::0;;-1:-1:-1;;31076:20:0::1;::::0;;31025:79::o;32315:204::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;32442:23:::1;::::0;32404:62:::1;::::0;32432:8;;32404:62:::1;::::0;;;::::1;32477:23;:34:::0;32315:204::o;40068:513::-;40133:7;40153:19;40175:138;40279:33;40297:13;40279:9;:33::i;:::-;40175:99;40220:53;40230:42;40220:9;:53::i;:::-;40175:40;40193:21;40211:1;40193:9;:21::i;:::-;9983:12;;40175:13;:17;;:40::i;:138::-;40153:160;-1:-1:-1;40387:21:0;40367:17;40444:29;40462:9;40444;:29::i;:::-;40419:54;-1:-1:-1;40484:14:0;40501:46;40535:11;40501:29;:9;40419:54;40501:13;:29::i;:::-;:33;;:46::i;:::-;40484:63;40068:513;-1:-1:-1;;;;;;40068:513:0:o;2362:226::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;2443:6:::1;::::0;;2426:14:::1;:23:::0;;-1:-1:-1;;;;;;2426:23:0;;::::1;-1:-1:-1::0;;;;;2443:6:0;::::1;2426:23;::::0;;;2460:19:::1;::::0;;2502:22:::1;2520:4:::0;2502:15:::1;:22;:::i;:::-;2490:9;:34:::0;2561:6:::1;::::0;2540:40:::1;::::0;2577:1:::1;::::0;-1:-1:-1;;;;;2561:6:0::1;::::0;-1:-1:-1;;;;;;;;;;;2540:40:0;2577:1;;2540:40:::1;2362:226:::0;:::o;32074:113::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32144:28:0::1;;::::0;;;:19:::1;:28;::::0;;;;:35;;-1:-1:-1;;32144:35:0::1;32175:4;32144:35;::::0;;32074:113::o;1816:244::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1905:22:0;::::1;1897:73;;;::::0;-1:-1:-1;;;1897:73:0;;6278:2:1;1897:73:0::1;::::0;::::1;6260:21:1::0;6317:2;6297:18;;;6290:30;6356:34;6336:18;;;6329:62;-1:-1:-1;;;6407:18:1;;;6400:36;6453:19;;1897:73:0::1;6250:228:1::0;1897:73:0::1;2007:6;::::0;1986:38:::1;::::0;-1:-1:-1;;;;;1986:38:0;;::::1;::::0;2007:6:::1;::::0;-1:-1:-1;;;;;;;;;;;1986:38:0;2007:6:::1;::::0;1986:38:::1;2035:6;:17:::0;;-1:-1:-1;;;;;;2035:17:0::1;-1:-1:-1::0;;;;;2035:17:0;;;::::1;::::0;;;::::1;::::0;;1816:244::o;17403:179::-;17461:7;;17493:5;17497:1;17493;:5;:::i;:::-;17481:17;;17522:1;17517;:6;;17509:46;;;;-1:-1:-1;;;17509:46:0;;7088:2:1;17509:46:0;;;7070:21:1;7127:2;7107:18;;;7100:30;7166:29;7146:18;;;7139:57;7213:18;;17509:46:0;7060:177:1;17509:46:0;17573:1;17403:179;-1:-1:-1;;;17403:179:0:o;16264:380::-;-1:-1:-1;;;;;16400:19:0;;16392:68;;;;-1:-1:-1;;;16392:68:0;;10091:2:1;16392:68:0;;;10073:21:1;10130:2;10110:18;;;10103:30;10169:34;10149:18;;;10142:62;-1:-1:-1;;;10220:18:1;;;10213:34;10264:19;;16392:68:0;10063:226:1;16392:68:0;-1:-1:-1;;;;;16479:21:0;;16471:68;;;;-1:-1:-1;;;16471:68:0;;6685:2:1;16471:68:0;;;6667:21:1;6724:2;6704:18;;;6697:30;6763:34;6743:18;;;6736:62;-1:-1:-1;;;6814:18:1;;;6807:32;6856:19;;16471:68:0;6657:224:1;16471:68:0;-1:-1:-1;;;;;16552:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16604:32;;12102:25:1;;;16604:32:0;;12075:18:1;16604:32:0;;;;;;;;16264:380;;;:::o;33862:4271::-;-1:-1:-1;;;;;33994:18:0;;33986:68;;;;-1:-1:-1;;;33986:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34073:16:0;;34065:64;;;;-1:-1:-1;;;34065:64:0;;;;;;;:::i;:::-;34146:11;34142:93;;34174:28;34190:4;34196:2;34200:1;34174:15;:28::i;:::-;33862:4271;;;:::o;34142:93::-;34336:9;;;;:25;;;;-1:-1:-1;34350:11:0;;;;34349:12;34336:25;34332:1478;;;34398:13;-1:-1:-1;;;;;34382:30:0;:4;-1:-1:-1;;;;;34382:30:0;;34378:1421;;;-1:-1:-1;;;;;34454:16:0;;34433:18;34454:16;;;:12;:16;;;;;;34474:1;34454:21;:29;;34482:1;34454:29;;;34478:1;34454:29;34433:50;;;;34593:15;34533:56;34570:18;34577:10;34570:2;;:6;;:18;;;;:::i;:::-;-1:-1:-1;;;;;34533:32:0;;;;;;:28;:32;;;;;;;:36;:56::i;:::-;:75;;34532:104;;;-1:-1:-1;;;;;;34613:23:0;;;;;;:19;:23;;;;;;;;34532:104;34502:258;;;;-1:-1:-1;;;34502:258:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34779:32:0;;;;;;:28;:32;;;;;;;;34814:15;34779:50;;34867:12;:16;;;;;;:20;;34886:1;34867:20;:::i;:::-;-1:-1:-1;;;;;34848:16:0;;;;;;:12;:16;;;;;:39;-1:-1:-1;34378:1421:0;;;34927:13;-1:-1:-1;;;;;34913:28:0;:2;-1:-1:-1;;;;;34913:28:0;;34909:890;;;-1:-1:-1;;;;;34983:16:0;;34962:18;34983:16;;;:10;:16;;;;;;35003:1;34983:21;:29;;35011:1;34983:29;;;35007:1;34983:29;34962:50;;;;35124:15;35062:58;35101:18;35108:10;35101:2;;:6;;:18;;;;:::i;:::-;-1:-1:-1;;;;;35062:34:0;;;;;;:28;:34;;;;;;;:38;:58::i;:::-;:77;;35061:108;;;-1:-1:-1;;;;;;35144:25:0;;;;;;:19;:25;;;;;;;;35061:108;35031:262;;;;-1:-1:-1;;;35031:262:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35312:34:0;;;;;;;:28;:34;;;;;;;;35349:15;35312:52;;35400:14;;;;;:10;:14;;;;:18;;35417:1;35400:18;:::i;:::-;-1:-1:-1;;;;;35383:14:0;;;;;;:10;:14;;;;;:35;-1:-1:-1;34909:890:0;;;35543:15;35490:49;35529:9;35536:1;35529:2;;:6;;:9;;;;:::i;35490:49::-;:68;;35489:99;;;-1:-1:-1;;;;;;35563:25:0;;;;;;:19;:25;;;;;;;;35489:99;35459:253;;;;-1:-1:-1;;;35459:253:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35731:34:0;;;;;;:28;:34;;;;;35768:15;35731:52;;34909:890;35930:15;;-1:-1:-1;;;;;35922:23:0;;;35930:15;;35922:23;35918:116;;;35997:25;:15;36015:7;35997:25;:::i;:::-;-1:-1:-1;;;;;35962:32:0;;;;;;:28;:32;;;;;:60;35918:116;36261:28;36292:24;36310:4;36292:9;:24::i;:::-;36366:23;;36261:55;;-1:-1:-1;36342:47:0;;;;;;;36404:41;;;36431:13;-1:-1:-1;;;;;36415:30:0;:4;-1:-1:-1;;;;;36415:30:0;;;36404:41;36400:93;;;36447:46;36472:20;36447:24;:46::i;:::-;36598:12;36648:13;-1:-1:-1;;;;;36634:28:0;:2;-1:-1:-1;;;;;36634:28:0;;:58;;;;-1:-1:-1;;;;;;36667:25:0;;;;;;:19;:25;;;;;;;;36666:26;36634:58;36633:124;;;;36714:13;-1:-1:-1;;;;;36698:30:0;:4;-1:-1:-1;;;;;36698:30:0;;:58;;;;-1:-1:-1;;;;;;36733:23:0;;;;;;:19;:23;;;;;;;;36732:24;36698:58;36629:171;;;-1:-1:-1;36784:4:0;36629:171;36816:11;;;;36812:32;;;-1:-1:-1;36839:5:0;36812:32;36894:7;:23;;;;-1:-1:-1;36905:12:0;;;;36894:23;36890:1120;;;36980:24;37007:37;37039:4;37007:27;:6;28403:2;37007:10;:27::i;:37::-;36980:64;-1:-1:-1;37059:23:0;37085:35;37115:4;37085:25;:6;28452:2;37085:10;:25::i;:35::-;37059:61;-1:-1:-1;37135:17:0;37155:29;37179:4;37155:19;:6;28495:2;37155:10;:19::i;:29::-;37135:49;-1:-1:-1;37199:16:0;37218:83;37236:64;37135:49;37236;37269:15;37236:49;:6;37247:16;37236:10;:28::i;37218:83::-;37199:102;-1:-1:-1;37316:23:0;37342:30;37367:4;37342:20;:6;37199:102;37342:10;:20::i;:30::-;37316:56;-1:-1:-1;37387:18:0;37408:64;37462:9;37408:49;37441:15;37408:49;:6;37419:16;37408:10;:28::i;:64::-;37387:85;-1:-1:-1;37537:31:0;37387:85;37552:15;37537:14;:31::i;:::-;37524:44;-1:-1:-1;37583:17:0;37603:22;:6;37524:44;37603:10;:22::i;:::-;37583:42;-1:-1:-1;37717:25:0;:10;37583:42;37717:14;:25::i;:::-;37707:6;:35;37699:80;;;;-1:-1:-1;;;37699:80:0;;5917:2:1;37699:80:0;;;5899:21:1;;;5936:18;;;5929:30;5995:34;5975:18;;;5968:62;6047:18;;37699:80:0;5889:182:1;37699:80:0;37847:47;37863:4;37877;37884:9;37847:15;:47::i;:::-;-1:-1:-1;37988:10:0;-1:-1:-1;;;;;;36890:1120:0;38039:40;38068:2;38072:6;38039:28;:40::i;:::-;38092:33;38108:4;38114:2;38118:6;38092:15;:33::i;:::-;33862:4271;;;;;;:::o;17734:224::-;17854:7;17890:12;17882:6;;;;17874:29;;;;-1:-1:-1;;;17874:29:0;;;;;;;;:::i;:::-;-1:-1:-1;17914:9:0;17926:5;17930:1;17926;:5;:::i;:::-;17914:17;17734:224;-1:-1:-1;;;;;17734:224:0:o;17590:136::-;17648:7;17675:43;17679:1;17682;17675:43;;;;;;;;;;;;;;;;;:3;:43::i;17966:246::-;18024:7;18048:6;18044:47;;-1:-1:-1;18078:1:0;18071:8;;18044:47;18101:9;18113:5;18117:1;18113;:5;:::i;:::-;18101:17;-1:-1:-1;18146:1:0;18137:5;18141:1;18101:17;18137:5;:::i;:::-;:10;18129:56;;;;-1:-1:-1;;;18129:56:0;;8206:2:1;18129:56:0;;;8188:21:1;8245:2;8225:18;;;8218:30;8284:34;8264:18;;;8257:62;-1:-1:-1;;;8335:18:1;;;8328:31;8376:19;;18129:56:0;8178:223:1;18220:132:0;18278:7;18305:39;18309:1;18312;18305:39;;;;;;;;;;;;;;;;;:3;:39::i;13837:573::-;-1:-1:-1;;;;;13977:20:0;;13969:70;;;;-1:-1:-1;;;13969:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14058:23:0;;14050:71;;;;-1:-1:-1;;;14050:71:0;;;;;;;:::i;:::-;14214;14236:6;14214:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14214:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;14194:17:0;;;:9;:17;;;;;;;;;;;:91;;;;14319:20;;;;;;;:32;;14344:6;14319:24;:32::i;:::-;-1:-1:-1;;;;;14296:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;14367:35;12102:25:1;;;14296:20:0;;14367:35;;;;;;12075:18:1;14367:35:0;12057:76:1;38141:1272:0;38599:11;;38560:21;;38599:11;;38594:812;;38627:11;:18;;-1:-1:-1;;38627:18:0;38641:4;38627:18;;;38662:24;38679:6;38662:16;:24::i;:::-;38753:18;38774:41;:21;38800:14;38774:25;:41::i;:::-;38753:62;-1:-1:-1;38891:20:0;38914:17;38753:62;38929:1;38914:14;:17::i;:::-;38891:40;-1:-1:-1;38891:40:0;38946:19;39023:45;38891:40;39023:27;:10;38891:40;39023:14;:27::i;:45::-;39145:15;;39137:59;;38995:73;;-1:-1:-1;;;;;;39145:15:0;;38995:73;;39137:59;;;;38995:73;39145:15;39137:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;39219:9:0;;39211:47;;-1:-1:-1;;;;;39219:9:0;;;;-1:-1:-1;39242:11:0;;39211:47;;;;39242:11;39219:9;39211:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;39275:11:0;:19;;-1:-1:-1;;39275:19:0;;;-1:-1:-1;39314:80:0;;;13709:25:1;;;13765:2;13750:18;;13743:34;;;13793:18;;;13786:34;;;13851:2;13836:18;;13829:34;;;13894:3;13879:19;;13872:35;;;39314:80:0;;13696:3:1;13681:19;39314:80:0;;;;;;;38594:812;;;;;38141:1272;;:::o;41248:1114::-;41340:31;41374:20;41384:9;41374;:20::i;:::-;41483:16;;-1:-1:-1;;;;;41447:33:0;;41405:23;41447:33;;;:22;:33;;;;;;41340:54;;-1:-1:-1;41405:23:0;41502:15;;41447:52;;;:::i;:::-;:70;41443:127;;;-1:-1:-1;;;;;41519:33:0;;;;;;:22;:33;;;;;41555:15;41519:51;;41443:127;41672:27;;41668:589;;41716:12;41731:44;41751:23;41731:15;:6;41742:3;41731:10;:15::i;:44::-;41716:59;;41811:19;;41802:4;41794:36;41790:335;;41851:23;41877:44;41917:3;41877:35;41906:4;41877:16;;:20;;:35;;;;:::i;:44::-;41851:70;;41963:16;;41944:15;:35;41940:118;;-1:-1:-1;42022:16:0;;41940:118;42094:15;-1:-1:-1;41790:335:0;41668:589;;;;42229:16;;-1:-1:-1;;;;;42193:33:0;;;;;;:22;:33;;;;;;:52;;42229:16;42193:52;:::i;:::-;-1:-1:-1;;;;;42157:33:0;;;;;;:22;:33;;;;;:88;41668:589;-1:-1:-1;;;;;42303:33:0;;;;;;:22;:33;;;;;;:51;;42339:15;;42303:51;:::i;:::-;-1:-1:-1;;;;;42267:33:0;;;;;;;:22;:33;;;;;:87;;;;-1:-1:-1;;;41248:1114:0:o;18360:223::-;18480:7;18515:12;18508:5;18500:28;;;;-1:-1:-1;;;18500:28:0;;;;;;;;:::i;:::-;-1:-1:-1;18539:9:0;18551:5;18555:1;18551;:5;:::i;39421:589::-;39571:16;;;39585:1;39571:16;;;;;;;;39547:21;;39571:16;;;;;;;;;;-1:-1:-1;39571:16:0;39547:40;;39616:4;39598;39603:1;39598:7;;;;;;-1:-1:-1;;;39598:7:0;;;;;;;;;-1:-1:-1;;;;;39598:23:0;;;:7;;;;;;;;;;:23;;;;39642:15;;:22;;;-1:-1:-1;;;39642:22:0;;;;:15;;;;;:20;;:22;;;;;39598:7;;39642:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39632:4;39637:1;39632:7;;;;;;-1:-1:-1;;;39632:7:0;;;;;;;;;-1:-1:-1;;;;;39632:32:0;;;:7;;;;;;;;;:32;39709:15;;39677:62;;39694:4;;39709:15;39727:11;39677:8;:62::i;:::-;39778:15;;:224;;-1:-1:-1;;;39778:224:0;;-1:-1:-1;;;;;39778:15:0;;;;:66;;:224;;39859:11;;39778:15;;39929:4;;39956;;39976:15;;39778:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:188:1;93:13;;-1:-1:-1;;;;;135:42:1;;125:53;;115:2;;192:1;189;182:12;207:257;266:6;319:2;307:9;298:7;294:23;290:32;287:2;;;340:6;332;325:22;287:2;384:9;371:23;403:31;428:5;403:31;:::i;469:261::-;539:6;592:2;580:9;571:7;567:23;563:32;560:2;;;613:6;605;598:22;560:2;650:9;644:16;669:31;694:5;669:31;:::i;735:398::-;803:6;811;864:2;852:9;843:7;839:23;835:32;832:2;;;885:6;877;870:22;832:2;929:9;916:23;948:31;973:5;948:31;:::i;:::-;998:5;-1:-1:-1;1055:2:1;1040:18;;1027:32;1068:33;1027:32;1068:33;:::i;:::-;1120:7;1110:17;;;822:311;;;;;:::o;1138:466::-;1215:6;1223;1231;1284:2;1272:9;1263:7;1259:23;1255:32;1252:2;;;1305:6;1297;1290:22;1252:2;1349:9;1336:23;1368:31;1393:5;1368:31;:::i;:::-;1418:5;-1:-1:-1;1475:2:1;1460:18;;1447:32;1488:33;1447:32;1488:33;:::i;:::-;1242:362;;1540:7;;-1:-1:-1;;;1594:2:1;1579:18;;;;1566:32;;1242:362::o;1609:325::-;1677:6;1685;1738:2;1726:9;1717:7;1713:23;1709:32;1706:2;;;1759:6;1751;1744:22;1706:2;1803:9;1790:23;1822:31;1847:5;1822:31;:::i;:::-;1872:5;1924:2;1909:18;;;;1896:32;;-1:-1:-1;;;1696:238:1:o;1939:293::-;1995:6;2048:2;2036:9;2027:7;2023:23;2019:32;2016:2;;;2069:6;2061;2054:22;2016:2;2113:9;2100:23;2166:5;2159:13;2152:21;2145:5;2142:32;2132:2;;2193:6;2185;2178:22;2237:470;2324:6;2332;2340;2393:2;2381:9;2372:7;2368:23;2364:32;2361:2;;;2414:6;2406;2399:22;2361:2;2442:40;2472:9;2442:40;:::i;:::-;2432:50;;2501:49;2546:2;2535:9;2531:18;2501:49;:::i;:::-;2491:59;;2593:2;2582:9;2578:18;2572:25;2637:10;2630:5;2626:22;2619:5;2616:33;2606:2;;2668:6;2660;2653:22;2606:2;2696:5;2686:15;;;2351:356;;;;;:::o;2712:190::-;2771:6;2824:2;2812:9;2803:7;2799:23;2795:32;2792:2;;;2845:6;2837;2830:22;2792:2;-1:-1:-1;2873:23:1;;2782:120;-1:-1:-1;2782:120:1:o;2907:194::-;2977:6;3030:2;3018:9;3009:7;3005:23;3001:32;2998:2;;;3051:6;3043;3036:22;2998:2;-1:-1:-1;3079:16:1;;2988:113;-1:-1:-1;2988:113:1:o;4301:603::-;4413:4;4442:2;4471;4460:9;4453:21;4503:6;4497:13;4546:6;4541:2;4530:9;4526:18;4519:34;4571:4;4584:140;4598:6;4595:1;4592:13;4584:140;;;4693:14;;;4689:23;;4683:30;4659:17;;;4678:2;4655:26;4648:66;4613:10;;4584:140;;;4742:6;4739:1;4736:13;4733:2;;;4812:4;4807:2;4798:6;4787:9;4783:22;4779:31;4772:45;4733:2;-1:-1:-1;4888:2:1;4867:15;-1:-1:-1;;4863:29:1;4848:45;;;;4895:2;4844:54;;4422:482;-1:-1:-1;;;4422:482:1:o;5311:399::-;5513:2;5495:21;;;5552:2;5532:18;;;5525:30;5591:34;5586:2;5571:18;;5564:62;-1:-1:-1;;;5657:2:1;5642:18;;5635:33;5700:3;5685:19;;5485:225::o;8406:356::-;8608:2;8590:21;;;8627:18;;;8620:30;8686:34;8681:2;8666:18;;8659:62;8753:2;8738:18;;8580:182::o;9125:401::-;9327:2;9309:21;;;9366:2;9346:18;;;9339:30;9405:34;9400:2;9385:18;;9378:62;-1:-1:-1;;;9471:2:1;9456:18;;9449:35;9516:3;9501:19;;9299:227::o;10654:484::-;10856:2;10838:21;;;10895:2;10875:18;;;10868:30;10934:34;10929:2;10914:18;;10907:62;11005:34;11000:2;10985:18;;10978:62;-1:-1:-1;;;11071:3:1;11056:19;;11049:47;11128:3;11113:19;;10828:310::o;12138:983::-;12400:4;12448:3;12437:9;12433:19;12479:6;12468:9;12461:25;12505:2;12543:6;12538:2;12527:9;12523:18;12516:34;12586:3;12581:2;12570:9;12566:18;12559:31;12610:6;12645;12639:13;12676:6;12668;12661:22;12714:3;12703:9;12699:19;12692:26;;12753:2;12745:6;12741:15;12727:29;;12774:4;12787:195;12801:6;12798:1;12795:13;12787:195;;;12866:13;;-1:-1:-1;;;;;12862:39:1;12850:52;;12957:15;;;;12922:12;;;;12898:1;12816:9;12787:195;;;-1:-1:-1;;;;;;;13038:32:1;;;;13033:2;13018:18;;13011:60;-1:-1:-1;;;13102:3:1;13087:19;13080:35;12999:3;12409:712;-1:-1:-1;;;12409:712:1:o;14107:128::-;14147:3;14178:1;14174:6;14171:1;14168:13;14165:2;;;14184:18;;:::i;:::-;-1:-1:-1;14220:9:1;;14155:80::o;14240:217::-;14280:1;14306;14296:2;;-1:-1:-1;;;14331:31:1;;14385:4;14382:1;14375:15;14413:4;14338:1;14403:15;14296:2;-1:-1:-1;14442:9:1;;14286:171::o;14462:168::-;14502:7;14568:1;14564;14560:6;14556:14;14553:1;14550:21;14545:1;14538:9;14531:17;14527:45;14524:2;;;14575:18;;:::i;:::-;-1:-1:-1;14615:9:1;;14514:116::o;14635:125::-;14675:4;14703:1;14700;14697:8;14694:2;;;14708:18;;:::i;:::-;-1:-1:-1;14745:9:1;;14684:76::o;14765:380::-;14844:1;14840:12;;;;14887;;;14908:2;;14962:4;14954:6;14950:17;14940:27;;14908:2;15015;15007:6;15004:14;14984:18;14981:38;14978:2;;;15061:10;15056:3;15052:20;15049:1;15042:31;15096:4;15093:1;15086:15;15124:4;15121:1;15114:15;14978:2;;14820:325;;;:::o;15150:127::-;15211:10;15206:3;15202:20;15199:1;15192:31;15242:4;15239:1;15232:15;15266:4;15263:1;15256:15;15282:131;-1:-1:-1;;;;;15357:31:1;;15347:42;;15337:2;;15403:1;15400;15393:12;15337:2;15327:86;:::o

Swarm Source

ipfs://09d7f201f4f649d7fee978dc4ab1b4ef788146f808bf441d96aa56e2a0c2b6b7

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

ClienteleCoin aims to bridge the gap between digital currency and physical goods. ClienteleCoin was launched by the founders of Clientele, a high-end clothing boutique with 3 store locations. ClienteleCoin is accepted in-store and online for all transactions and products.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.