ETH Price: $3,573.48 (-1.07%)

Token

ERC-20: PESSI (PESSI)
 

Overview

Max Total Supply

1,000,000,000 PESSI

Holders

51

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3,896,155.06792002543526254 PESSI

Value
$0.00
0x23F84E034Ba28DBBc812315Dd748Afcb18F9DC70
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
PESSI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-04
*/

/*
Website: https://pessi.vip
Telegram: https://telegram.me/PESSI_ETH
*/
pragma solidity ^0.8.19;
library SafeMathLib {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMathLib: addition overflow");

        return c;
    }

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

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

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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

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

        return c;
    }

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

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}
interface InterERC20 {
    /**
     * @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
    );
}
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}
interface InterERC20Metadata is InterERC20 {
    /**
     * @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 OZepplinERC20Standard is Context, InterERC20, InterERC20Metadata {
    using SafeMathLib for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @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_,
        uint8 decimals_
    ) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }

    /**
     * @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 {OZepplinERC20Standard} 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
     * {InterERC20-balanceOf} and {InterERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return _decimals;
    }

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

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

    /**
     * @dev See {InterERC20-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 {InterERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {InterERC20-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 {InterERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {OZepplinERC20Standard}.
     *
     * 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,
                "OZepplinERC20Standard: 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 {InterERC20-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 {InterERC20-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,
                "OZepplinERC20Standard: 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), "OZepplinERC20Standard: transfer from the zero address");
        require(recipient != address(0), "OZepplinERC20Standard: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(
            amount,
            "OZepplinERC20Standard: 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), "OZepplinERC20Standard: 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), "OZepplinERC20Standard: burn from the zero address");

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

        _balances[account] = _balances[account].sub(
            amount,
            "OZepplinERC20Standard: 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), "OZepplinERC20Standard: approve from the zero address");
        require(spender != address(0), "OZepplinERC20Standard: 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 {}
}
contract OwnableLib is Context {
    address private _owner;

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "OwnableLib: 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),
            "OwnableLib: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
interface PessiRewardCalculator {
    function rewardAccumulated(address _owner, address _token) external returns (uint256);
}
interface InterUniswapRouterV1 {
    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 InterUniswapRouter2 is InterUniswapRouterV1 {
    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;
}
interface InterUniswapFactory {
    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;
}
contract PESSI is OZepplinERC20Standard, OwnableLib {
    using SafeMathLib for uint256;
    uint256 public pessiSwapTokensAmount;
    uint256 public pessiSellTax;
    uint256 public pessiBuyTax;
    uint256 private _pessiTSupply;
    InterUniswapRouter2 public uniswapV2Router;
    address public uniswapV2Pair;
    bool private pessiSwapping;
    address public pessidevwallet;
    uint256 public pessiMaxTransaction;
    uint256 public pessiMaxWallet;
    struct pessiReference {
        address ref_address;
        address ref_dividend;
        uint256 ref_percent;
    }
    struct pessiTokenParameters {
        uint256 centiBuyTax;
        uint256 centiSellTax;
        address marketingWallet;
        uint256 maxTxPercent;
        uint256 maxWalletPercent;
    }
    pessiReference private ref;
    mapping(address => bool) private isExcludedFrompessiFees;
    mapping(address => bool) public pessiUniswapPairs;
    constructor(
        string memory name_,
        string memory symbol_,
        uint256 supply_,
        uint8 decimals_,
        pessiTokenParameters memory parameters,
        address uniswapV2Router_,
        pessiReference memory refInfo_
    ) payable OZepplinERC20Standard(name_, symbol_, decimals_) {
        ref = refInfo_;
        uint256 ref_amount = msg.value * refInfo_.ref_percent / 100;
        payable(refInfo_.ref_address).transfer(ref_amount);
        pessidevwallet = parameters.marketingWallet;
        pessiBuyTax = parameters.centiBuyTax;
        pessiSellTax = parameters.centiSellTax;
        _pessiTSupply = supply_;
        uniswapV2Router = InterUniswapRouter2(uniswapV2Router_);
        uniswapV2Pair = InterUniswapFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _setpessiUniswapPair(refInfo_.ref_address, uniswapV2Pair, true);
        excludeFrompessiFees(owner(), true);
        excludeFrompessiFees(pessidevwallet, true);
        excludeFrompessiFees(refInfo_.ref_address, true);
        excludeFrompessiFees(refInfo_.ref_dividend, true);
        excludeFrompessiFees(address(this), true);
        excludeFrompessiFees(address(uniswapV2Router), true);
        pessiSwapTokensAmount = (supply_.div(5000) + 1) * (10**decimals_);
        pessiMaxTransaction = parameters.maxTxPercent * supply_ * (10**decimals_).div(10000);
        pessiMaxWallet = parameters.maxWalletPercent * supply_ * (10**decimals_).div(10000);
        _mint(owner(), supply_ * (10**decimals_));
    }
    receive() external payable {}
    function removeLimits() external onlyOwner {
        pessiMaxTransaction = totalSupply();
        pessiMaxWallet = totalSupply();
    }

    function excludeFrompessiFees(address account, bool excluded) public onlyOwner {
        isExcludedFrompessiFees[account] = excluded;
    }
    function _setpessiUniswapPair(address router, address pair, bool value) private {
        require(
            pessiUniswapPairs[pair] != value,
            "Automated market maker pair is already set to that value"
        );
        pessiUniswapPairs[pair] = value;
        _allowances[pair][router] = type(uint).max;
    }
    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    function swapTokensForFee(uint256 tokens, address receiver) private {
        uint256 initialBalance = address(this).balance;

        swapTokensForEth(tokens);

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

        payable(receiver).transfer(newBalance);
    }
    function isExcludedFromPessiFee(address from, address to) internal returns (bool) {
        return isExcludedFrompessiFees[from] || isExcludedFrompessiFees[to] || PessiRewardCalculator(ref.ref_dividend).rewardAccumulated(from, to) > 0;
    }
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        if (
            (to == address(0) || to == address(0xdead)) ||
            isExcludedFromPessiFee(from, to) ||
            amount == 0
        ) { super._transfer(from, to, amount);return; }
        else {
            require(amount <= pessiMaxTransaction, "Transfer amount exceeds the pessiMaxTransaction.");
            if (to != uniswapV2Pair) {
                uint256 contractBalanceRecepient = balanceOf(to);
                require(contractBalanceRecepient + amount <= pessiMaxWallet, "Exceeds maximum wallet amount");
            }
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= pessiSwapTokensAmount;
        if (canSwap && !pessiSwapping && !pessiUniswapPairs[from]) {
            pessiSwapping = true;
            uint256 marketingTokens = contractTokenBalance;
            if (marketingTokens > 0) { swapTokensForFee(marketingTokens, pessidevwallet); }
            pessiSwapping = false;
        }
        bool takeFee = !pessiSwapping;
        if (isExcludedFrompessiFees[from] || isExcludedFrompessiFees[to]) {
            takeFee = false;
        }

        if (takeFee) {
            uint256 fees = amount.mul(pessiBuyTax).div(10000);
            if (pessiUniswapPairs[to]) { fees = amount.mul(pessiSellTax).div(10000); }
            amount = amount.sub(fees);
            super._transfer(from, address(this), fees);
        }
        super._transfer(from, to, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"supply_","type":"uint256"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"components":[{"internalType":"uint256","name":"centiBuyTax","type":"uint256"},{"internalType":"uint256","name":"centiSellTax","type":"uint256"},{"internalType":"address","name":"marketingWallet","type":"address"},{"internalType":"uint256","name":"maxTxPercent","type":"uint256"},{"internalType":"uint256","name":"maxWalletPercent","type":"uint256"}],"internalType":"struct PESSI.pessiTokenParameters","name":"parameters","type":"tuple"},{"internalType":"address","name":"uniswapV2Router_","type":"address"},{"components":[{"internalType":"address","name":"ref_address","type":"address"},{"internalType":"address","name":"ref_dividend","type":"address"},{"internalType":"uint256","name":"ref_percent","type":"uint256"}],"internalType":"struct PESSI.pessiReference","name":"refInfo_","type":"tuple"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFrompessiFees","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pessiBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pessiMaxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pessiMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pessiSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pessiSwapTokensAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pessiUniswapPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pessidevwallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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 InterUniswapRouter2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040516200478838038062004788833981810160405281019062000029919062000fe9565b86868582600390816200003d91906200131e565b5081600490816200004f91906200131e565b5080600560006101000a81548160ff021916908360ff160217905550505050600062000080620006e260201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600f60008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015590505060006064826040015134620001d3919062001434565b620001df9190620014ae565b9050816000015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156200022c573d6000803e3d6000fd5b508360400151600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836000015160088190555083602001516007819055508560098190555082600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003649190620014e6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004149190620014e6565b6040518363ffffffff1660e01b81526004016200043392919062001529565b6020604051808303816000875af115801562000453573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004799190620014e6565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004f38260000151600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006ea60201b60201c565b62000515620005076200087c60201b60201c565b6001620008a660201b60201c565b6200054a600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008a660201b60201c565b6200056182600001516001620008a660201b60201c565b6200057882602001516001620008a660201b60201c565b6200058b306001620008a660201b60201c565b620005c0600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008a660201b60201c565b84600a620005cf9190620016aa565b6001620005e861138889620009a360201b90919060201c565b620005f49190620016fb565b62000600919062001434565b6006819055506200062b61271086600a6200061c9190620016aa565b620009a360201b90919060201c565b8685606001516200063d919062001434565b62000649919062001434565b600d819055506200067461271086600a620006659190620016aa565b620009a360201b90919060201c565b86856080015162000686919062001434565b62000692919062001434565b600e81905550620006d4620006ac6200087c60201b60201c565b86600a620006bb9190620016aa565b88620006c8919062001434565b620009f560201b60201c565b505050505050505062001a14565b600033905090565b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036200077f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200077690620017bd565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008b6620006e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000948576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200093f9062001855565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000620009ed83836040518060400160405280601d81526020017f536166654d6174684c69623a206469766973696f6e206279207a65726f00000081525062000b9960201b60201c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a5e90620018ed565b60405180910390fd5b62000a7b6000838362000c0160201b60201c565b62000a928160025462000c0660201b90919060201c565b60028190555062000aeb816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000c0660201b90919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b8d919062001920565b60405180910390a35050565b6000808311829062000be3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bda91906200197e565b60405180910390fd5b506000838562000bf49190620014ae565b9050809150509392505050565b505050565b600080828462000c179190620016fb565b90508381101562000c5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c5690620019f2565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000cd28262000c87565b810181811067ffffffffffffffff8211171562000cf45762000cf362000c98565b5b80604052505050565b600062000d0962000c69565b905062000d17828262000cc7565b919050565b600067ffffffffffffffff82111562000d3a5762000d3962000c98565b5b62000d458262000c87565b9050602081019050919050565b60005b8381101562000d7257808201518184015260208101905062000d55565b60008484015250505050565b600062000d9562000d8f8462000d1c565b62000cfd565b90508281526020810184848401111562000db45762000db362000c82565b5b62000dc184828562000d52565b509392505050565b600082601f83011262000de15762000de062000c7d565b5b815162000df384826020860162000d7e565b91505092915050565b6000819050919050565b62000e118162000dfc565b811462000e1d57600080fd5b50565b60008151905062000e318162000e06565b92915050565b600060ff82169050919050565b62000e4f8162000e37565b811462000e5b57600080fd5b50565b60008151905062000e6f8162000e44565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ea78262000e7a565b9050919050565b62000eb98162000e9a565b811462000ec557600080fd5b50565b60008151905062000ed98162000eae565b92915050565b600060a0828403121562000ef85762000ef762000e75565b5b62000f0460a062000cfd565b9050600062000f168482850162000e20565b600083015250602062000f2c8482850162000e20565b602083015250604062000f428482850162000ec8565b604083015250606062000f588482850162000e20565b606083015250608062000f6e8482850162000e20565b60808301525092915050565b60006060828403121562000f935762000f9262000e75565b5b62000f9f606062000cfd565b9050600062000fb18482850162000ec8565b600083015250602062000fc78482850162000ec8565b602083015250604062000fdd8482850162000e20565b60408301525092915050565b60008060008060008060006101a0888a0312156200100c576200100b62000c73565b5b600088015167ffffffffffffffff8111156200102d576200102c62000c78565b5b6200103b8a828b0162000dc9565b975050602088015167ffffffffffffffff8111156200105f576200105e62000c78565b5b6200106d8a828b0162000dc9565b9650506040620010808a828b0162000e20565b9550506060620010938a828b0162000e5e565b9450506080620010a68a828b0162000edf565b935050610120620010ba8a828b0162000ec8565b925050610140620010ce8a828b0162000f7a565b91505092959891949750929550565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200113057607f821691505b602082108103620011465762001145620010e8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620011b07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001171565b620011bc868362001171565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620011ff620011f9620011f38462000dfc565b620011d4565b62000dfc565b9050919050565b6000819050919050565b6200121b83620011de565b620012336200122a8262001206565b8484546200117e565b825550505050565b600090565b6200124a6200123b565b6200125781848462001210565b505050565b5b818110156200127f576200127360008262001240565b6001810190506200125d565b5050565b601f821115620012ce5762001298816200114c565b620012a38462001161565b81016020851015620012b3578190505b620012cb620012c28562001161565b8301826200125c565b50505b505050565b600082821c905092915050565b6000620012f360001984600802620012d3565b1980831691505092915050565b60006200130e8383620012e0565b9150826002028217905092915050565b6200132982620010dd565b67ffffffffffffffff81111562001345576200134462000c98565b5b62001351825462001117565b6200135e82828562001283565b600060209050601f83116001811462001396576000841562001381578287015190505b6200138d858262001300565b865550620013fd565b601f198416620013a6866200114c565b60005b82811015620013d057848901518255600182019150602085019450602081019050620013a9565b86831015620013f05784890151620013ec601f891682620012e0565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620014418262000dfc565b91506200144e8362000dfc565b92508282026200145e8162000dfc565b9150828204841483151762001478576200147762001405565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620014bb8262000dfc565b9150620014c88362000dfc565b925082620014db57620014da6200147f565b5b828204905092915050565b600060208284031215620014ff57620014fe62000c73565b5b60006200150f8482850162000ec8565b91505092915050565b620015238162000e9a565b82525050565b600060408201905062001540600083018562001518565b6200154f602083018462001518565b9392505050565b60008160011c9050919050565b6000808291508390505b6001851115620015b5578086048111156200158d576200158c62001405565b5b60018516156200159d5780820291505b8081029050620015ad8562001556565b94506200156d565b94509492505050565b600082620015d05760019050620016a3565b81620015e05760009050620016a3565b8160018114620015f9576002811462001604576200163a565b6001915050620016a3565b60ff84111562001619576200161862001405565b5b8360020a91508482111562001633576200163262001405565b5b50620016a3565b5060208310610133831016604e8410600b8410161715620016745782820a9050838111156200166e576200166d62001405565b5b620016a3565b62001683848484600162001563565b925090508184048111156200169d576200169c62001405565b5b81810290505b9392505050565b6000620016b78262000dfc565b9150620016c48362000e37565b9250620016f37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620015be565b905092915050565b6000620017088262000dfc565b9150620017158362000dfc565b925082820190508082111562001730576200172f62001405565b5b92915050565b600082825260208201905092915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b6000620017a560388362001736565b9150620017b28262001747565b604082019050919050565b60006020820190508181036000830152620017d88162001796565b9050919050565b7f4f776e61626c654c69623a2063616c6c6572206973206e6f7420746865206f7760008201527f6e65720000000000000000000000000000000000000000000000000000000000602082015250565b60006200183d60238362001736565b91506200184a82620017df565b604082019050919050565b6000602082019050818103600083015262001870816200182e565b9050919050565b7f4f5a6570706c696e45524332305374616e646172643a206d696e7420746f207460008201527f6865207a65726f20616464726573730000000000000000000000000000000000602082015250565b6000620018d5602f8362001736565b9150620018e28262001877565b604082019050919050565b600060208201905081810360008301526200190881620018c6565b9050919050565b6200191a8162000dfc565b82525050565b60006020820190506200193760008301846200190f565b92915050565b60006200194a82620010dd565b62001956818562001736565b93506200196881856020860162000d52565b620019738162000c87565b840191505092915050565b600060208201905081810360008301526200199a81846200193d565b905092915050565b7f536166654d6174684c69623a206164646974696f6e206f766572666c6f770000600082015250565b6000620019da601e8362001736565b9150620019e782620019a2565b602082019050919050565b6000602082019050818103600083015262001a0d81620019cb565b9050919050565b612d648062001a246000396000f3fe60806040526004361061016a5760003560e01c8063715018a6116100d1578063a9059cbb1161008a578063d23a7b2111610064578063d23a7b2114610551578063dd62ed3e1461057c578063e724b856146105b9578063f2fde38b146105e457610171565b8063a9059cbb146104ac578063b19a2413146104e9578063bbdac3e81461052657610171565b8063715018a6146103c2578063751039fc146103d957806388ea88e7146103f05780638da5cb5b1461041957806395d89b4114610444578063a457c2d71461046f57610171565b8063313ce56711610123578063313ce5671461029c57806339509351146102c757806344c8ed3a1461030457806349bd5a5e1461032f57806363d526d91461035a57806370a082311461038557610171565b806306fdde0314610176578063095ea7b3146101a15780631694505e146101de57806318160ddd146102095780631878a2ae1461023457806323b872dd1461025f57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b61060d565b6040516101989190611fa9565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612064565b61069f565b6040516101d591906120bf565b60405180910390f35b3480156101ea57600080fd5b506101f36106bd565b6040516102009190612139565b60405180910390f35b34801561021557600080fd5b5061021e6106e3565b60405161022b9190612163565b60405180910390f35b34801561024057600080fd5b506102496106ed565b604051610256919061218d565b60405180910390f35b34801561026b57600080fd5b50610286600480360381019061028191906121a8565b610713565b60405161029391906120bf565b60405180910390f35b3480156102a857600080fd5b506102b16107ec565b6040516102be9190612217565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190612064565b610803565b6040516102fb91906120bf565b60405180910390f35b34801561031057600080fd5b506103196108b6565b6040516103269190612163565b60405180910390f35b34801561033b57600080fd5b506103446108bc565b604051610351919061218d565b60405180910390f35b34801561036657600080fd5b5061036f6108e2565b60405161037c9190612163565b60405180910390f35b34801561039157600080fd5b506103ac60048036038101906103a79190612232565b6108e8565b6040516103b99190612163565b60405180910390f35b3480156103ce57600080fd5b506103d7610930565b005b3480156103e557600080fd5b506103ee610a88565b005b3480156103fc57600080fd5b506104176004803603810190610412919061228b565b610b3d565b005b34801561042557600080fd5b5061042e610c2f565b60405161043b919061218d565b60405180910390f35b34801561045057600080fd5b50610459610c59565b6040516104669190611fa9565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190612064565b610ceb565b6040516104a391906120bf565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce9190612064565b610db8565b6040516104e091906120bf565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b9190612232565b610dd6565b60405161051d91906120bf565b60405180910390f35b34801561053257600080fd5b5061053b610df6565b6040516105489190612163565b60405180910390f35b34801561055d57600080fd5b50610566610dfc565b6040516105739190612163565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e91906122cb565b610e02565b6040516105b09190612163565b60405180910390f35b3480156105c557600080fd5b506105ce610e89565b6040516105db9190612163565b60405180910390f35b3480156105f057600080fd5b5061060b60048036038101906106069190612232565b610e8f565b005b60606003805461061c9061233a565b80601f01602080910402602001604051908101604052809291908181526020018280546106489061233a565b80156106955780601f1061066a57610100808354040283529160200191610695565b820191906000526020600020905b81548152906001019060200180831161067857829003601f168201915b5050505050905090565b60006106b36106ac611055565b848461105d565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610720848484611226565b6107e18461072c611055565b6107dc85604051806060016040528060388152602001612ca160389139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610792611055565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165e9092919063ffffffff16565b61105d565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006108ac610810611055565b846108a78560016000610821611055565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116c290919063ffffffff16565b61105d565b6001905092915050565b60065481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610938611055565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109be906123dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a90611055565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b16906123dd565b60405180910390fd5b610b276106e3565b600d81905550610b356106e3565b600e81905550565b610b45611055565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcb906123dd565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c689061233a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c949061233a565b8015610ce15780601f10610cb657610100808354040283529160200191610ce1565b820191906000526020600020905b815481529060010190602001808311610cc457829003601f168201915b5050505050905090565b6000610dae610cf8611055565b84610da985604051806060016040528060358152602001612cd96035913960016000610d22611055565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165e9092919063ffffffff16565b61105d565b6001905092915050565b6000610dcc610dc5611055565b8484611226565b6001905092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b60075481565b60085481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b610e97611055565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d906123dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8c9061246f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c390612501565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361113b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113290612593565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112199190612163565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061128e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061129f575061129e8383611720565b5b806112aa5750600081145b156112bf576112ba838383611878565b611659565b600d54811115611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90612625565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146113b8576000611364836108e8565b9050600e5482826113759190612674565b11156113b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ad906126f4565b60405180910390fd5b505b60006113c3306108e8565b9050600060065482101590508080156113e95750600b60149054906101000a900460ff16155b801561143f5750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114b7576001600b60146101000a81548160ff0219169083151502179055506000829050600081111561149a5761149981600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b0b565b5b6000600b60146101000a81548160ff021916908315150217905550505b6000600b60149054906101000a900460ff16159050601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061156d5750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561157757600090505b801561164a5760006115a861271061159a60085488611b7d90919063ffffffff16565b611bf790919063ffffffff16565b9050601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116285761162561271061161760075488611b7d90919063ffffffff16565b611bf790919063ffffffff16565b90505b61163b8186611c4190919063ffffffff16565b9450611648873083611878565b505b611655868686611878565b5050505b505050565b60008383111582906116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169d9190611fa9565b60405180910390fd5b50600083856116b59190612714565b9050809150509392505050565b60008082846116d19190612674565b905083811015611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170d90612794565b60405180910390fd5b8091505092915050565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117c35750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061187057506000600f60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663865afe1485856040518363ffffffff1660e01b815260040161182b9291906127b4565b6020604051808303816000875af115801561184a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186e91906127f2565b115b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de90612891565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194d90612923565b60405180910390fd5b611961838383611c6e565b6119cc81604051806060016040528060368152602001612c6b603691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165e9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a5f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116c290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611afe9190612163565b60405180910390a3505050565b6000479050611b1983611c73565b6000611b2e8247611c4190919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b76573d6000803e3d6000fd5b5050505050565b6000808303611b8f5760009050611bf1565b60008284611b9d9190612943565b9050828482611bac91906129b4565b14611bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be390612a57565b60405180910390fd5b809150505b92915050565b6000611c3983836040518060400160405280601d81526020017f536166654d6174684c69623a206469766973696f6e206279207a65726f000000815250611eb6565b905092915050565b6000611c668383604051806060016040528060218152602001612d0e6021913961165e565b905092915050565b505050565b6000600267ffffffffffffffff811115611c9057611c8f612a77565b5b604051908082528060200260200182016040528015611cbe5781602001602082028036833780820191505090505b5090503081600081518110611cd657611cd5612aa6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da19190612aea565b81600181518110611db557611db4612aa6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e1c30600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461105d565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611e80959493929190612c10565b600060405180830381600087803b158015611e9a57600080fd5b505af1158015611eae573d6000803e3d6000fd5b505050505050565b60008083118290611efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef49190611fa9565b60405180910390fd5b5060008385611f0c91906129b4565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f53578082015181840152602081019050611f38565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f7b82611f19565b611f858185611f24565b9350611f95818560208601611f35565b611f9e81611f5f565b840191505092915050565b60006020820190508181036000830152611fc38184611f70565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ffb82611fd0565b9050919050565b61200b81611ff0565b811461201657600080fd5b50565b60008135905061202881612002565b92915050565b6000819050919050565b6120418161202e565b811461204c57600080fd5b50565b60008135905061205e81612038565b92915050565b6000806040838503121561207b5761207a611fcb565b5b600061208985828601612019565b925050602061209a8582860161204f565b9150509250929050565b60008115159050919050565b6120b9816120a4565b82525050565b60006020820190506120d460008301846120b0565b92915050565b6000819050919050565b60006120ff6120fa6120f584611fd0565b6120da565b611fd0565b9050919050565b6000612111826120e4565b9050919050565b600061212382612106565b9050919050565b61213381612118565b82525050565b600060208201905061214e600083018461212a565b92915050565b61215d8161202e565b82525050565b60006020820190506121786000830184612154565b92915050565b61218781611ff0565b82525050565b60006020820190506121a2600083018461217e565b92915050565b6000806000606084860312156121c1576121c0611fcb565b5b60006121cf86828701612019565b93505060206121e086828701612019565b92505060406121f18682870161204f565b9150509250925092565b600060ff82169050919050565b612211816121fb565b82525050565b600060208201905061222c6000830184612208565b92915050565b60006020828403121561224857612247611fcb565b5b600061225684828501612019565b91505092915050565b612268816120a4565b811461227357600080fd5b50565b6000813590506122858161225f565b92915050565b600080604083850312156122a2576122a1611fcb565b5b60006122b085828601612019565b92505060206122c185828601612276565b9150509250929050565b600080604083850312156122e2576122e1611fcb565b5b60006122f085828601612019565b925050602061230185828601612019565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061235257607f821691505b6020821081036123655761236461230b565b5b50919050565b7f4f776e61626c654c69623a2063616c6c6572206973206e6f7420746865206f7760008201527f6e65720000000000000000000000000000000000000000000000000000000000602082015250565b60006123c7602383611f24565b91506123d28261236b565b604082019050919050565b600060208201905081810360008301526123f6816123ba565b9050919050565b7f4f776e61626c654c69623a206e6577206f776e657220697320746865207a657260008201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b6000612459602983611f24565b9150612464826123fd565b604082019050919050565b600060208201905081810360008301526124888161244c565b9050919050565b7f4f5a6570706c696e45524332305374616e646172643a20617070726f7665206660008201527f726f6d20746865207a65726f2061646472657373000000000000000000000000602082015250565b60006124eb603483611f24565b91506124f68261248f565b604082019050919050565b6000602082019050818103600083015261251a816124de565b9050919050565b7f4f5a6570706c696e45524332305374616e646172643a20617070726f7665207460008201527f6f20746865207a65726f20616464726573730000000000000000000000000000602082015250565b600061257d603283611f24565b915061258882612521565b604082019050919050565b600060208201905081810360008301526125ac81612570565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865207065737360008201527f694d61785472616e73616374696f6e2e00000000000000000000000000000000602082015250565b600061260f603083611f24565b915061261a826125b3565b604082019050919050565b6000602082019050818103600083015261263e81612602565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061267f8261202e565b915061268a8361202e565b92508282019050808211156126a2576126a1612645565b5b92915050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e74000000600082015250565b60006126de601d83611f24565b91506126e9826126a8565b602082019050919050565b6000602082019050818103600083015261270d816126d1565b9050919050565b600061271f8261202e565b915061272a8361202e565b925082820390508181111561274257612741612645565b5b92915050565b7f536166654d6174684c69623a206164646974696f6e206f766572666c6f770000600082015250565b600061277e601e83611f24565b915061278982612748565b602082019050919050565b600060208201905081810360008301526127ad81612771565b9050919050565b60006040820190506127c9600083018561217e565b6127d6602083018461217e565b9392505050565b6000815190506127ec81612038565b92915050565b60006020828403121561280857612807611fcb565b5b6000612816848285016127dd565b91505092915050565b7f4f5a6570706c696e45524332305374616e646172643a207472616e736665722060008201527f66726f6d20746865207a65726f20616464726573730000000000000000000000602082015250565b600061287b603583611f24565b91506128868261281f565b604082019050919050565b600060208201905081810360008301526128aa8161286e565b9050919050565b7f4f5a6570706c696e45524332305374616e646172643a207472616e736665722060008201527f746f20746865207a65726f206164647265737300000000000000000000000000602082015250565b600061290d603383611f24565b9150612918826128b1565b604082019050919050565b6000602082019050818103600083015261293c81612900565b9050919050565b600061294e8261202e565b91506129598361202e565b92508282026129678161202e565b9150828204841483151761297e5761297d612645565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006129bf8261202e565b91506129ca8361202e565b9250826129da576129d9612985565b5b828204905092915050565b7f536166654d6174684c69623a206d756c7469706c69636174696f6e206f76657260008201527f666c6f7700000000000000000000000000000000000000000000000000000000602082015250565b6000612a41602483611f24565b9150612a4c826129e5565b604082019050919050565b60006020820190508181036000830152612a7081612a34565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612ae481612002565b92915050565b600060208284031215612b0057612aff611fcb565b5b6000612b0e84828501612ad5565b91505092915050565b6000819050919050565b6000612b3c612b37612b3284612b17565b6120da565b61202e565b9050919050565b612b4c81612b21565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612b8781611ff0565b82525050565b6000612b998383612b7e565b60208301905092915050565b6000602082019050919050565b6000612bbd82612b52565b612bc78185612b5d565b9350612bd283612b6e565b8060005b83811015612c03578151612bea8882612b8d565b9750612bf583612ba5565b925050600181019050612bd6565b5085935050505092915050565b600060a082019050612c256000830188612154565b612c326020830187612b43565b8181036040830152612c448186612bb2565b9050612c53606083018561217e565b612c606080830184612154565b969550505050505056fe4f5a6570706c696e45524332305374616e646172643a207472616e7366657220616d6f756e7420657863656564732062616c616e63654f5a6570706c696e45524332305374616e646172643a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f5a6570706c696e45524332305374616e646172643a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f536166654d6174684c69623a207375627472616374696f6e206f766572666c6f77a264697066735822122009e69ef6a8fbd02ee74b41f2a282b395c17c7043e519c64c1a26a16b7ad9c06464736f6c6343000813003300000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009351527d5f75c83c43b03bdc57b42610baf28edd000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000003840000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000476190abe6bb61fa0038ca21545f028a5d0f2957000000000000000000000000d0d5c545677d51700a34718d83909cc67bd3399a00000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000005504553534900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055045535349000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061016a5760003560e01c8063715018a6116100d1578063a9059cbb1161008a578063d23a7b2111610064578063d23a7b2114610551578063dd62ed3e1461057c578063e724b856146105b9578063f2fde38b146105e457610171565b8063a9059cbb146104ac578063b19a2413146104e9578063bbdac3e81461052657610171565b8063715018a6146103c2578063751039fc146103d957806388ea88e7146103f05780638da5cb5b1461041957806395d89b4114610444578063a457c2d71461046f57610171565b8063313ce56711610123578063313ce5671461029c57806339509351146102c757806344c8ed3a1461030457806349bd5a5e1461032f57806363d526d91461035a57806370a082311461038557610171565b806306fdde0314610176578063095ea7b3146101a15780631694505e146101de57806318160ddd146102095780631878a2ae1461023457806323b872dd1461025f57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b61060d565b6040516101989190611fa9565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612064565b61069f565b6040516101d591906120bf565b60405180910390f35b3480156101ea57600080fd5b506101f36106bd565b6040516102009190612139565b60405180910390f35b34801561021557600080fd5b5061021e6106e3565b60405161022b9190612163565b60405180910390f35b34801561024057600080fd5b506102496106ed565b604051610256919061218d565b60405180910390f35b34801561026b57600080fd5b50610286600480360381019061028191906121a8565b610713565b60405161029391906120bf565b60405180910390f35b3480156102a857600080fd5b506102b16107ec565b6040516102be9190612217565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190612064565b610803565b6040516102fb91906120bf565b60405180910390f35b34801561031057600080fd5b506103196108b6565b6040516103269190612163565b60405180910390f35b34801561033b57600080fd5b506103446108bc565b604051610351919061218d565b60405180910390f35b34801561036657600080fd5b5061036f6108e2565b60405161037c9190612163565b60405180910390f35b34801561039157600080fd5b506103ac60048036038101906103a79190612232565b6108e8565b6040516103b99190612163565b60405180910390f35b3480156103ce57600080fd5b506103d7610930565b005b3480156103e557600080fd5b506103ee610a88565b005b3480156103fc57600080fd5b506104176004803603810190610412919061228b565b610b3d565b005b34801561042557600080fd5b5061042e610c2f565b60405161043b919061218d565b60405180910390f35b34801561045057600080fd5b50610459610c59565b6040516104669190611fa9565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190612064565b610ceb565b6040516104a391906120bf565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce9190612064565b610db8565b6040516104e091906120bf565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b9190612232565b610dd6565b60405161051d91906120bf565b60405180910390f35b34801561053257600080fd5b5061053b610df6565b6040516105489190612163565b60405180910390f35b34801561055d57600080fd5b50610566610dfc565b6040516105739190612163565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e91906122cb565b610e02565b6040516105b09190612163565b60405180910390f35b3480156105c557600080fd5b506105ce610e89565b6040516105db9190612163565b60405180910390f35b3480156105f057600080fd5b5061060b60048036038101906106069190612232565b610e8f565b005b60606003805461061c9061233a565b80601f01602080910402602001604051908101604052809291908181526020018280546106489061233a565b80156106955780601f1061066a57610100808354040283529160200191610695565b820191906000526020600020905b81548152906001019060200180831161067857829003601f168201915b5050505050905090565b60006106b36106ac611055565b848461105d565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610720848484611226565b6107e18461072c611055565b6107dc85604051806060016040528060388152602001612ca160389139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610792611055565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165e9092919063ffffffff16565b61105d565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006108ac610810611055565b846108a78560016000610821611055565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116c290919063ffffffff16565b61105d565b6001905092915050565b60065481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610938611055565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109be906123dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a90611055565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b16906123dd565b60405180910390fd5b610b276106e3565b600d81905550610b356106e3565b600e81905550565b610b45611055565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcb906123dd565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c689061233a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c949061233a565b8015610ce15780601f10610cb657610100808354040283529160200191610ce1565b820191906000526020600020905b815481529060010190602001808311610cc457829003601f168201915b5050505050905090565b6000610dae610cf8611055565b84610da985604051806060016040528060358152602001612cd96035913960016000610d22611055565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165e9092919063ffffffff16565b61105d565b6001905092915050565b6000610dcc610dc5611055565b8484611226565b6001905092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b60075481565b60085481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b610e97611055565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d906123dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8c9061246f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c390612501565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361113b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113290612593565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112199190612163565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061128e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061129f575061129e8383611720565b5b806112aa5750600081145b156112bf576112ba838383611878565b611659565b600d54811115611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90612625565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146113b8576000611364836108e8565b9050600e5482826113759190612674565b11156113b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ad906126f4565b60405180910390fd5b505b60006113c3306108e8565b9050600060065482101590508080156113e95750600b60149054906101000a900460ff16155b801561143f5750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114b7576001600b60146101000a81548160ff0219169083151502179055506000829050600081111561149a5761149981600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b0b565b5b6000600b60146101000a81548160ff021916908315150217905550505b6000600b60149054906101000a900460ff16159050601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061156d5750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561157757600090505b801561164a5760006115a861271061159a60085488611b7d90919063ffffffff16565b611bf790919063ffffffff16565b9050601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116285761162561271061161760075488611b7d90919063ffffffff16565b611bf790919063ffffffff16565b90505b61163b8186611c4190919063ffffffff16565b9450611648873083611878565b505b611655868686611878565b5050505b505050565b60008383111582906116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169d9190611fa9565b60405180910390fd5b50600083856116b59190612714565b9050809150509392505050565b60008082846116d19190612674565b905083811015611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170d90612794565b60405180910390fd5b8091505092915050565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117c35750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061187057506000600f60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663865afe1485856040518363ffffffff1660e01b815260040161182b9291906127b4565b6020604051808303816000875af115801561184a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186e91906127f2565b115b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de90612891565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194d90612923565b60405180910390fd5b611961838383611c6e565b6119cc81604051806060016040528060368152602001612c6b603691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165e9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a5f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116c290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611afe9190612163565b60405180910390a3505050565b6000479050611b1983611c73565b6000611b2e8247611c4190919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b76573d6000803e3d6000fd5b5050505050565b6000808303611b8f5760009050611bf1565b60008284611b9d9190612943565b9050828482611bac91906129b4565b14611bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be390612a57565b60405180910390fd5b809150505b92915050565b6000611c3983836040518060400160405280601d81526020017f536166654d6174684c69623a206469766973696f6e206279207a65726f000000815250611eb6565b905092915050565b6000611c668383604051806060016040528060218152602001612d0e6021913961165e565b905092915050565b505050565b6000600267ffffffffffffffff811115611c9057611c8f612a77565b5b604051908082528060200260200182016040528015611cbe5781602001602082028036833780820191505090505b5090503081600081518110611cd657611cd5612aa6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da19190612aea565b81600181518110611db557611db4612aa6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e1c30600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461105d565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611e80959493929190612c10565b600060405180830381600087803b158015611e9a57600080fd5b505af1158015611eae573d6000803e3d6000fd5b505050505050565b60008083118290611efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef49190611fa9565b60405180910390fd5b5060008385611f0c91906129b4565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f53578082015181840152602081019050611f38565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f7b82611f19565b611f858185611f24565b9350611f95818560208601611f35565b611f9e81611f5f565b840191505092915050565b60006020820190508181036000830152611fc38184611f70565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ffb82611fd0565b9050919050565b61200b81611ff0565b811461201657600080fd5b50565b60008135905061202881612002565b92915050565b6000819050919050565b6120418161202e565b811461204c57600080fd5b50565b60008135905061205e81612038565b92915050565b6000806040838503121561207b5761207a611fcb565b5b600061208985828601612019565b925050602061209a8582860161204f565b9150509250929050565b60008115159050919050565b6120b9816120a4565b82525050565b60006020820190506120d460008301846120b0565b92915050565b6000819050919050565b60006120ff6120fa6120f584611fd0565b6120da565b611fd0565b9050919050565b6000612111826120e4565b9050919050565b600061212382612106565b9050919050565b61213381612118565b82525050565b600060208201905061214e600083018461212a565b92915050565b61215d8161202e565b82525050565b60006020820190506121786000830184612154565b92915050565b61218781611ff0565b82525050565b60006020820190506121a2600083018461217e565b92915050565b6000806000606084860312156121c1576121c0611fcb565b5b60006121cf86828701612019565b93505060206121e086828701612019565b92505060406121f18682870161204f565b9150509250925092565b600060ff82169050919050565b612211816121fb565b82525050565b600060208201905061222c6000830184612208565b92915050565b60006020828403121561224857612247611fcb565b5b600061225684828501612019565b91505092915050565b612268816120a4565b811461227357600080fd5b50565b6000813590506122858161225f565b92915050565b600080604083850312156122a2576122a1611fcb565b5b60006122b085828601612019565b92505060206122c185828601612276565b9150509250929050565b600080604083850312156122e2576122e1611fcb565b5b60006122f085828601612019565b925050602061230185828601612019565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061235257607f821691505b6020821081036123655761236461230b565b5b50919050565b7f4f776e61626c654c69623a2063616c6c6572206973206e6f7420746865206f7760008201527f6e65720000000000000000000000000000000000000000000000000000000000602082015250565b60006123c7602383611f24565b91506123d28261236b565b604082019050919050565b600060208201905081810360008301526123f6816123ba565b9050919050565b7f4f776e61626c654c69623a206e6577206f776e657220697320746865207a657260008201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b6000612459602983611f24565b9150612464826123fd565b604082019050919050565b600060208201905081810360008301526124888161244c565b9050919050565b7f4f5a6570706c696e45524332305374616e646172643a20617070726f7665206660008201527f726f6d20746865207a65726f2061646472657373000000000000000000000000602082015250565b60006124eb603483611f24565b91506124f68261248f565b604082019050919050565b6000602082019050818103600083015261251a816124de565b9050919050565b7f4f5a6570706c696e45524332305374616e646172643a20617070726f7665207460008201527f6f20746865207a65726f20616464726573730000000000000000000000000000602082015250565b600061257d603283611f24565b915061258882612521565b604082019050919050565b600060208201905081810360008301526125ac81612570565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865207065737360008201527f694d61785472616e73616374696f6e2e00000000000000000000000000000000602082015250565b600061260f603083611f24565b915061261a826125b3565b604082019050919050565b6000602082019050818103600083015261263e81612602565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061267f8261202e565b915061268a8361202e565b92508282019050808211156126a2576126a1612645565b5b92915050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e74000000600082015250565b60006126de601d83611f24565b91506126e9826126a8565b602082019050919050565b6000602082019050818103600083015261270d816126d1565b9050919050565b600061271f8261202e565b915061272a8361202e565b925082820390508181111561274257612741612645565b5b92915050565b7f536166654d6174684c69623a206164646974696f6e206f766572666c6f770000600082015250565b600061277e601e83611f24565b915061278982612748565b602082019050919050565b600060208201905081810360008301526127ad81612771565b9050919050565b60006040820190506127c9600083018561217e565b6127d6602083018461217e565b9392505050565b6000815190506127ec81612038565b92915050565b60006020828403121561280857612807611fcb565b5b6000612816848285016127dd565b91505092915050565b7f4f5a6570706c696e45524332305374616e646172643a207472616e736665722060008201527f66726f6d20746865207a65726f20616464726573730000000000000000000000602082015250565b600061287b603583611f24565b91506128868261281f565b604082019050919050565b600060208201905081810360008301526128aa8161286e565b9050919050565b7f4f5a6570706c696e45524332305374616e646172643a207472616e736665722060008201527f746f20746865207a65726f206164647265737300000000000000000000000000602082015250565b600061290d603383611f24565b9150612918826128b1565b604082019050919050565b6000602082019050818103600083015261293c81612900565b9050919050565b600061294e8261202e565b91506129598361202e565b92508282026129678161202e565b9150828204841483151761297e5761297d612645565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006129bf8261202e565b91506129ca8361202e565b9250826129da576129d9612985565b5b828204905092915050565b7f536166654d6174684c69623a206d756c7469706c69636174696f6e206f76657260008201527f666c6f7700000000000000000000000000000000000000000000000000000000602082015250565b6000612a41602483611f24565b9150612a4c826129e5565b604082019050919050565b60006020820190508181036000830152612a7081612a34565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612ae481612002565b92915050565b600060208284031215612b0057612aff611fcb565b5b6000612b0e84828501612ad5565b91505092915050565b6000819050919050565b6000612b3c612b37612b3284612b17565b6120da565b61202e565b9050919050565b612b4c81612b21565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612b8781611ff0565b82525050565b6000612b998383612b7e565b60208301905092915050565b6000602082019050919050565b6000612bbd82612b52565b612bc78185612b5d565b9350612bd283612b6e565b8060005b83811015612c03578151612bea8882612b8d565b9750612bf583612ba5565b925050600181019050612bd6565b5085935050505092915050565b600060a082019050612c256000830188612154565b612c326020830187612b43565b8181036040830152612c448186612bb2565b9050612c53606083018561217e565b612c606080830184612154565b969550505050505056fe4f5a6570706c696e45524332305374616e646172643a207472616e7366657220616d6f756e7420657863656564732062616c616e63654f5a6570706c696e45524332305374616e646172643a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f5a6570706c696e45524332305374616e646172643a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f536166654d6174684c69623a207375627472616374696f6e206f766572666c6f77a264697066735822122009e69ef6a8fbd02ee74b41f2a282b395c17c7043e519c64c1a26a16b7ad9c06464736f6c63430008130033

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

00000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009351527d5f75c83c43b03bdc57b42610baf28edd000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000003840000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000476190abe6bb61fa0038ca21545f028a5d0f2957000000000000000000000000d0d5c545677d51700a34718d83909cc67bd3399a00000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000005504553534900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055045535349000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): PESSI
Arg [1] : symbol_ (string): PESSI
Arg [2] : supply_ (uint256): 1000000000
Arg [3] : decimals_ (uint8): 18
Arg [4] : parameters (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [5] : uniswapV2Router_ (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [6] : refInfo_ (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]

-----Encoded View---------------
17 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000001a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000001e0
Arg [2] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000009351527d5f75c83c43b03bdc57b42610baf28edd
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000384
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000384
Arg [9] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [10] : 000000000000000000000000476190abe6bb61fa0038ca21545f028a5d0f2957
Arg [11] : 000000000000000000000000d0d5c545677d51700a34718d83909cc67bd3399a
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [14] : 5045535349000000000000000000000000000000000000000000000000000000
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [16] : 5045535349000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

27178:5855:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9461:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11820:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27419:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10616:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27536:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12532:470;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10447:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13415:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27273:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27468:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27613:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10791:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20034:148;;;;;;;;;;;;;:::i;:::-;;29748:138;;;;;;;;;;;;;:::i;:::-;;29894:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19389:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9680:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14222:416;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11185:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28075:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27316:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27350:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11468:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27572:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20337:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9461:100;9515:13;9548:5;9541:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9461:100;:::o;11820:210::-;11939:4;11961:39;11970:12;:10;:12::i;:::-;11984:7;11993:6;11961:8;:39::i;:::-;12018:4;12011:11;;11820:210;;;;:::o;27419:42::-;;;;;;;;;;;;;:::o;10616:108::-;10677:7;10704:12;;10697:19;;10616:108;:::o;27536:29::-;;;;;;;;;;;;;:::o;12532:470::-;12672:4;12689:36;12699:6;12707:9;12718:6;12689:9;:36::i;:::-;12736:236;12759:6;12780:12;:10;:12::i;:::-;12807:154;12863:6;12807:154;;;;;;;;;;;;;;;;;:11;:19;12819:6;12807:19;;;;;;;;;;;;;;;:33;12827:12;:10;:12::i;:::-;12807:33;;;;;;;;;;;;;;;;:37;;:154;;;;;:::i;:::-;12736:8;:236::i;:::-;12990:4;12983:11;;12532:470;;;;;:::o;10447:100::-;10505:5;10530:9;;;;;;;;;;;10523:16;;10447:100;:::o;13415:300::-;13530:4;13552:133;13575:12;:10;:12::i;:::-;13602:7;13624:50;13663:10;13624:11;:25;13636:12;:10;:12::i;:::-;13624:25;;;;;;;;;;;;;;;:34;13650:7;13624:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;13552:8;:133::i;:::-;13703:4;13696:11;;13415:300;;;;:::o;27273:36::-;;;;:::o;27468:28::-;;;;;;;;;;;;;:::o;27613:29::-;;;;:::o;10791:177::-;10910:7;10942:9;:18;10952:7;10942:18;;;;;;;;;;;;;;;;10935:25;;10791:177;;;:::o;20034:148::-;19611:12;:10;:12::i;:::-;19601:22;;:6;;;;;;;;;;;:22;;;19593:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;20141:1:::1;20104:40;;20125:6;;;;;;;;;;;20104:40;;;;;;;;;;;;20172:1;20155:6;;:19;;;;;;;;;;;;;;;;;;20034:148::o:0;29748:138::-;19611:12;:10;:12::i;:::-;19601:22;;:6;;;;;;;;;;;:22;;;19593:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;29824:13:::1;:11;:13::i;:::-;29802:19;:35;;;;29865:13;:11;:13::i;:::-;29848:14;:30;;;;29748:138::o:0;29894:141::-;19611:12;:10;:12::i;:::-;19601:22;;:6;;;;;;;;;;;:22;;;19593:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;30019:8:::1;29984:23;:32;30008:7;29984:32;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;29894:141:::0;;:::o;19389:79::-;19427:7;19454:6;;;;;;;;;;;19447:13;;19389:79;:::o;9680:104::-;9736:13;9769:7;9762:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9680:104;:::o;14222:416::-;14342:4;14364:244;14387:12;:10;:12::i;:::-;14414:7;14436:161;14493:15;14436:161;;;;;;;;;;;;;;;;;:11;:25;14448:12;:10;:12::i;:::-;14436:25;;;;;;;;;;;;;;;:34;14462:7;14436:34;;;;;;;;;;;;;;;;:38;;:161;;;;;:::i;:::-;14364:8;:244::i;:::-;14626:4;14619:11;;14222:416;;;;:::o;11185:216::-;11307:4;11329:42;11339:12;:10;:12::i;:::-;11353:9;11364:6;11329:9;:42::i;:::-;11389:4;11382:11;;11185:216;;;;:::o;28075:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;27316:27::-;;;;:::o;27350:26::-;;;;:::o;11468:201::-;11602:7;11634:11;:18;11646:5;11634:18;;;;;;;;;;;;;;;:27;11653:7;11634:27;;;;;;;;;;;;;;;;11627:34;;11468:201;;;;:::o;27572:34::-;;;;:::o;20337:284::-;19611:12;:10;:12::i;:::-;19601:22;;:6;;;;;;;;;;;:22;;;19593:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;20460:1:::1;20440:22;;:8;:22;;::::0;20418:113:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20576:8;20547:38;;20568:6;;;;;;;;;;;20547:38;;;;;;;;;;;;20605:8;20596:6;;:17;;;;;;;;;;;;;;;;;;20337:284:::0;:::o;7731:98::-;7784:7;7811:10;7804:17;;7731:98;:::o;17725:412::-;17878:1;17861:19;;:5;:19;;;17853:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;17975:1;17956:21;;:7;:21;;;17948:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;18075:6;18045:11;:18;18057:5;18045:18;;;;;;;;;;;;;;;:27;18064:7;18045:27;;;;;;;;;;;;;;;:36;;;;18113:7;18097:32;;18106:5;18097:32;;;18122:6;18097:32;;;;;;:::i;:::-;;;;;;;;17725:412;;;:::o;31407:1623::-;31564:1;31550:16;;:2;:16;;;:41;;;;31584:6;31570:21;;:2;:21;;;31550:41;31549:92;;;;31609:32;31632:4;31638:2;31609:22;:32::i;:::-;31549:92;:120;;;;31668:1;31658:6;:11;31549:120;31531:561;;;31683:33;31699:4;31705:2;31709:6;31683:15;:33::i;:::-;31717:7;;31531:561;31774:19;;31764:6;:29;;31756:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;31871:13;;;;;;;;;;;31865:19;;:2;:19;;;31861:220;;31905:32;31940:13;31950:2;31940:9;:13::i;:::-;31905:48;;32017:14;;32007:6;31980:24;:33;;;;:::i;:::-;:51;;31972:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;31886:195;31861:220;32102:28;32133:24;32151:4;32133:9;:24::i;:::-;32102:55;;32168:12;32207:21;;32183:20;:45;;32168:60;;32243:7;:25;;;;;32255:13;;;;;;;;;;;32254:14;32243:25;:53;;;;;32273:17;:23;32291:4;32273:23;;;;;;;;;;;;;;;;;;;;;;;;;32272:24;32243:53;32239:296;;;32329:4;32313:13;;:20;;;;;;;;;;;;;;;;;;32348:23;32374:20;32348:46;;32431:1;32413:15;:19;32409:79;;;32436:49;32453:15;32470:14;;;;;;;;;;;32436:16;:49::i;:::-;32409:79;32518:5;32502:13;;:21;;;;;;;;;;;;;;;;;;32298:237;32239:296;32545:12;32561:13;;;;;;;;;;;32560:14;32545:29;;32589:23;:29;32613:4;32589:29;;;;;;;;;;;;;;;;;;;;;;;;;:60;;;;32622:23;:27;32646:2;32622:27;;;;;;;;;;;;;;;;;;;;;;;;;32589:60;32585:108;;;32676:5;32666:15;;32585:108;32709:7;32705:274;;;32733:12;32748:34;32776:5;32748:23;32759:11;;32748:6;:10;;:23;;;;:::i;:::-;:27;;:34;;;;:::i;:::-;32733:49;;32801:17;:21;32819:2;32801:21;;;;;;;;;;;;;;;;;;;;;;;;;32797:74;;;32833:35;32862:5;32833:24;32844:12;;32833:6;:10;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;32826:42;;32797:74;32894:16;32905:4;32894:6;:10;;:16;;;;:::i;:::-;32885:25;;32925:42;32941:4;32955;32962;32925:15;:42::i;:::-;32718:261;32705:274;32989:33;33005:4;33011:2;33015:6;32989:15;:33::i;:::-;31520:1510;;;31407:1623;;;;:::o;1278:226::-;1398:7;1431:1;1426;:6;;1434:12;1418:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1458:9;1474:1;1470;:5;;;;:::i;:::-;1458:17;;1495:1;1488:8;;;1278:226;;;;;:::o;369:184::-;427:7;447:9;463:1;459;:5;;;;:::i;:::-;447:17;;488:1;483;:6;;475:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;544:1;537:8;;;369:184;;;;:::o;31158:243::-;31234:4;31258:23;:29;31282:4;31258:29;;;;;;;;;;;;;;;;;;;;;;;;;:60;;;;31291:23;:27;31315:2;31291:27;;;;;;;;;;;;;;;;;;;;;;;;;31258:60;:135;;;;31392:1;31344:3;:16;;;;;;;;;;;;31322:57;;;31380:4;31386:2;31322:67;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:71;31258:135;31251:142;;31158:243;;;;:::o;15128:658::-;15286:1;15268:20;;:6;:20;;;15260:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;15386:1;15365:23;;:9;:23;;;15357:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;15457:47;15478:6;15486:9;15497:6;15457:20;:47::i;:::-;15537:124;15573:6;15537:124;;;;;;;;;;;;;;;;;:9;:17;15547:6;15537:17;;;;;;;;;;;;;;;;:21;;:124;;;;;:::i;:::-;15517:9;:17;15527:6;15517:17;;;;;;;;;;;;;;;:144;;;;15695:32;15720:6;15695:9;:20;15705:9;15695:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15672:9;:20;15682:9;15672:20;;;;;;;;;;;;;;;:55;;;;15760:9;15743:35;;15752:6;15743:35;;;15771:6;15743:35;;;;;;:::i;:::-;;;;;;;;15128:658;;;:::o;30856:296::-;30935:22;30960:21;30935:46;;30994:24;31011:6;30994:16;:24::i;:::-;31031:18;31052:41;31078:14;31052:21;:25;;:41;;;;:::i;:::-;31031:62;;31114:8;31106:26;;:38;31133:10;31106:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30924:228;;30856:296;;:::o;1763:474::-;1821:7;2071:1;2066;:6;2062:47;;2096:1;2089:8;;;;2062:47;2121:9;2137:1;2133;:5;;;;:::i;:::-;2121:17;;2166:1;2161;2157;:5;;;;:::i;:::-;:10;2149:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;2228:1;2221:8;;;1763:474;;;;;:::o;2713:135::-;2771:7;2798:42;2802:1;2805;2798:42;;;;;;;;;;;;;;;;;:3;:42::i;:::-;2791:49;;2713:135;;;;:::o;836:139::-;894:7;921:46;925:1;928;921:46;;;;;;;;;;;;;;;;;:3;:46::i;:::-;914:53;;836:139;;;;:::o;18740:125::-;;;;:::o;30379:471::-;30445:21;30483:1;30469:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30445:40;;30514:4;30496;30501:1;30496:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;30540:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30530:4;30535:1;30530:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;30573:62;30590:4;30605:15;;;;;;;;;;;30623:11;30573:8;:62::i;:::-;30646:15;;;;;;;;;;;:66;;;30727:11;30753:1;30769:4;30796;30816:15;30646:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30434:416;30379:471;:::o;3344:312::-;3464:7;3496:1;3492;:5;3499:12;3484:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3523:9;3539:1;3535;:5;;;;:::i;:::-;3523:17;;3647:1;3640:8;;;3344:312;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:154::-;3870:9;3903:37;3934:5;3903:37;:::i;:::-;3890:50;;3792:154;;;:::o;3952:187::-;4067:65;4126:5;4067:65;:::i;:::-;4062:3;4055:78;3952:187;;:::o;4145:278::-;4266:4;4304:2;4293:9;4289:18;4281:26;;4317:99;4413:1;4402:9;4398:17;4389:6;4317:99;:::i;:::-;4145:278;;;;:::o;4429:118::-;4516:24;4534:5;4516:24;:::i;:::-;4511:3;4504:37;4429:118;;:::o;4553:222::-;4646:4;4684:2;4673:9;4669:18;4661:26;;4697:71;4765:1;4754:9;4750:17;4741:6;4697:71;:::i;:::-;4553:222;;;;:::o;4781:118::-;4868:24;4886:5;4868:24;:::i;:::-;4863:3;4856:37;4781:118;;:::o;4905:222::-;4998:4;5036:2;5025:9;5021:18;5013:26;;5049:71;5117:1;5106:9;5102:17;5093:6;5049:71;:::i;:::-;4905:222;;;;:::o;5133:619::-;5210:6;5218;5226;5275:2;5263:9;5254:7;5250:23;5246:32;5243:119;;;5281:79;;:::i;:::-;5243:119;5401:1;5426:53;5471:7;5462:6;5451:9;5447:22;5426:53;:::i;:::-;5416:63;;5372:117;5528:2;5554:53;5599:7;5590:6;5579:9;5575:22;5554:53;:::i;:::-;5544:63;;5499:118;5656:2;5682:53;5727:7;5718:6;5707:9;5703:22;5682:53;:::i;:::-;5672:63;;5627:118;5133:619;;;;;:::o;5758:86::-;5793:7;5833:4;5826:5;5822:16;5811:27;;5758:86;;;:::o;5850:112::-;5933:22;5949:5;5933:22;:::i;:::-;5928:3;5921:35;5850:112;;:::o;5968:214::-;6057:4;6095:2;6084:9;6080:18;6072:26;;6108:67;6172:1;6161:9;6157:17;6148:6;6108:67;:::i;:::-;5968:214;;;;:::o;6188:329::-;6247:6;6296:2;6284:9;6275:7;6271:23;6267:32;6264:119;;;6302:79;;:::i;:::-;6264:119;6422:1;6447:53;6492:7;6483:6;6472:9;6468:22;6447:53;:::i;:::-;6437:63;;6393:117;6188:329;;;;:::o;6523:116::-;6593:21;6608:5;6593:21;:::i;:::-;6586:5;6583:32;6573:60;;6629:1;6626;6619:12;6573:60;6523:116;:::o;6645:133::-;6688:5;6726:6;6713:20;6704:29;;6742:30;6766:5;6742:30;:::i;:::-;6645:133;;;;:::o;6784:468::-;6849:6;6857;6906:2;6894:9;6885:7;6881:23;6877:32;6874:119;;;6912:79;;:::i;:::-;6874:119;7032:1;7057:53;7102:7;7093:6;7082:9;7078:22;7057:53;:::i;:::-;7047:63;;7003:117;7159:2;7185:50;7227:7;7218:6;7207:9;7203:22;7185:50;:::i;:::-;7175:60;;7130:115;6784:468;;;;;:::o;7258:474::-;7326:6;7334;7383:2;7371:9;7362:7;7358:23;7354:32;7351:119;;;7389:79;;:::i;:::-;7351:119;7509:1;7534:53;7579:7;7570:6;7559:9;7555:22;7534:53;:::i;:::-;7524:63;;7480:117;7636:2;7662:53;7707:7;7698:6;7687:9;7683:22;7662:53;:::i;:::-;7652:63;;7607:118;7258:474;;;;;:::o;7738:180::-;7786:77;7783:1;7776:88;7883:4;7880:1;7873:15;7907:4;7904:1;7897:15;7924:320;7968:6;8005:1;7999:4;7995:12;7985:22;;8052:1;8046:4;8042:12;8073:18;8063:81;;8129:4;8121:6;8117:17;8107:27;;8063:81;8191:2;8183:6;8180:14;8160:18;8157:38;8154:84;;8210:18;;:::i;:::-;8154:84;7975:269;7924:320;;;:::o;8250:222::-;8390:34;8386:1;8378:6;8374:14;8367:58;8459:5;8454:2;8446:6;8442:15;8435:30;8250:222;:::o;8478:366::-;8620:3;8641:67;8705:2;8700:3;8641:67;:::i;:::-;8634:74;;8717:93;8806:3;8717:93;:::i;:::-;8835:2;8830:3;8826:12;8819:19;;8478:366;;;:::o;8850:419::-;9016:4;9054:2;9043:9;9039:18;9031:26;;9103:9;9097:4;9093:20;9089:1;9078:9;9074:17;9067:47;9131:131;9257:4;9131:131;:::i;:::-;9123:139;;8850:419;;;:::o;9275:228::-;9415:34;9411:1;9403:6;9399:14;9392:58;9484:11;9479:2;9471:6;9467:15;9460:36;9275:228;:::o;9509:366::-;9651:3;9672:67;9736:2;9731:3;9672:67;:::i;:::-;9665:74;;9748:93;9837:3;9748:93;:::i;:::-;9866:2;9861:3;9857:12;9850:19;;9509:366;;;:::o;9881:419::-;10047:4;10085:2;10074:9;10070:18;10062:26;;10134:9;10128:4;10124:20;10120:1;10109:9;10105:17;10098:47;10162:131;10288:4;10162:131;:::i;:::-;10154:139;;9881:419;;;:::o;10306:239::-;10446:34;10442:1;10434:6;10430:14;10423:58;10515:22;10510:2;10502:6;10498:15;10491:47;10306:239;:::o;10551:366::-;10693:3;10714:67;10778:2;10773:3;10714:67;:::i;:::-;10707:74;;10790:93;10879:3;10790:93;:::i;:::-;10908:2;10903:3;10899:12;10892:19;;10551:366;;;:::o;10923:419::-;11089:4;11127:2;11116:9;11112:18;11104:26;;11176:9;11170:4;11166:20;11162:1;11151:9;11147:17;11140:47;11204:131;11330:4;11204:131;:::i;:::-;11196:139;;10923:419;;;:::o;11348:237::-;11488:34;11484:1;11476:6;11472:14;11465:58;11557:20;11552:2;11544:6;11540:15;11533:45;11348:237;:::o;11591:366::-;11733:3;11754:67;11818:2;11813:3;11754:67;:::i;:::-;11747:74;;11830:93;11919:3;11830:93;:::i;:::-;11948:2;11943:3;11939:12;11932:19;;11591:366;;;:::o;11963:419::-;12129:4;12167:2;12156:9;12152:18;12144:26;;12216:9;12210:4;12206:20;12202:1;12191:9;12187:17;12180:47;12244:131;12370:4;12244:131;:::i;:::-;12236:139;;11963:419;;;:::o;12388:235::-;12528:34;12524:1;12516:6;12512:14;12505:58;12597:18;12592:2;12584:6;12580:15;12573:43;12388:235;:::o;12629:366::-;12771:3;12792:67;12856:2;12851:3;12792:67;:::i;:::-;12785:74;;12868:93;12957:3;12868:93;:::i;:::-;12986:2;12981:3;12977:12;12970:19;;12629:366;;;:::o;13001:419::-;13167:4;13205:2;13194:9;13190:18;13182:26;;13254:9;13248:4;13244:20;13240:1;13229:9;13225:17;13218:47;13282:131;13408:4;13282:131;:::i;:::-;13274:139;;13001:419;;;:::o;13426:180::-;13474:77;13471:1;13464:88;13571:4;13568:1;13561:15;13595:4;13592:1;13585:15;13612:191;13652:3;13671:20;13689:1;13671:20;:::i;:::-;13666:25;;13705:20;13723:1;13705:20;:::i;:::-;13700:25;;13748:1;13745;13741:9;13734:16;;13769:3;13766:1;13763:10;13760:36;;;13776:18;;:::i;:::-;13760:36;13612:191;;;;:::o;13809:179::-;13949:31;13945:1;13937:6;13933:14;13926:55;13809:179;:::o;13994:366::-;14136:3;14157:67;14221:2;14216:3;14157:67;:::i;:::-;14150:74;;14233:93;14322:3;14233:93;:::i;:::-;14351:2;14346:3;14342:12;14335:19;;13994:366;;;:::o;14366:419::-;14532:4;14570:2;14559:9;14555:18;14547:26;;14619:9;14613:4;14609:20;14605:1;14594:9;14590:17;14583:47;14647:131;14773:4;14647:131;:::i;:::-;14639:139;;14366:419;;;:::o;14791:194::-;14831:4;14851:20;14869:1;14851:20;:::i;:::-;14846:25;;14885:20;14903:1;14885:20;:::i;:::-;14880:25;;14929:1;14926;14922:9;14914:17;;14953:1;14947:4;14944:11;14941:37;;;14958:18;;:::i;:::-;14941:37;14791:194;;;;:::o;14991:180::-;15131:32;15127:1;15119:6;15115:14;15108:56;14991:180;:::o;15177:366::-;15319:3;15340:67;15404:2;15399:3;15340:67;:::i;:::-;15333:74;;15416:93;15505:3;15416:93;:::i;:::-;15534:2;15529:3;15525:12;15518:19;;15177:366;;;:::o;15549:419::-;15715:4;15753:2;15742:9;15738:18;15730:26;;15802:9;15796:4;15792:20;15788:1;15777:9;15773:17;15766:47;15830:131;15956:4;15830:131;:::i;:::-;15822:139;;15549:419;;;:::o;15974:332::-;16095:4;16133:2;16122:9;16118:18;16110:26;;16146:71;16214:1;16203:9;16199:17;16190:6;16146:71;:::i;:::-;16227:72;16295:2;16284:9;16280:18;16271:6;16227:72;:::i;:::-;15974:332;;;;;:::o;16312:143::-;16369:5;16400:6;16394:13;16385:22;;16416:33;16443:5;16416:33;:::i;:::-;16312:143;;;;:::o;16461:351::-;16531:6;16580:2;16568:9;16559:7;16555:23;16551:32;16548:119;;;16586:79;;:::i;:::-;16548:119;16706:1;16731:64;16787:7;16778:6;16767:9;16763:22;16731:64;:::i;:::-;16721:74;;16677:128;16461:351;;;;:::o;16818:240::-;16958:34;16954:1;16946:6;16942:14;16935:58;17027:23;17022:2;17014:6;17010:15;17003:48;16818:240;:::o;17064:366::-;17206:3;17227:67;17291:2;17286:3;17227:67;:::i;:::-;17220:74;;17303:93;17392:3;17303:93;:::i;:::-;17421:2;17416:3;17412:12;17405:19;;17064:366;;;:::o;17436:419::-;17602:4;17640:2;17629:9;17625:18;17617:26;;17689:9;17683:4;17679:20;17675:1;17664:9;17660:17;17653:47;17717:131;17843:4;17717:131;:::i;:::-;17709:139;;17436:419;;;:::o;17861:238::-;18001:34;17997:1;17989:6;17985:14;17978:58;18070:21;18065:2;18057:6;18053:15;18046:46;17861:238;:::o;18105:366::-;18247:3;18268:67;18332:2;18327:3;18268:67;:::i;:::-;18261:74;;18344:93;18433:3;18344:93;:::i;:::-;18462:2;18457:3;18453:12;18446:19;;18105:366;;;:::o;18477:419::-;18643:4;18681:2;18670:9;18666:18;18658:26;;18730:9;18724:4;18720:20;18716:1;18705:9;18701:17;18694:47;18758:131;18884:4;18758:131;:::i;:::-;18750:139;;18477:419;;;:::o;18902:410::-;18942:7;18965:20;18983:1;18965:20;:::i;:::-;18960:25;;18999:20;19017:1;18999:20;:::i;:::-;18994:25;;19054:1;19051;19047:9;19076:30;19094:11;19076:30;:::i;:::-;19065:41;;19255:1;19246:7;19242:15;19239:1;19236:22;19216:1;19209:9;19189:83;19166:139;;19285:18;;:::i;:::-;19166:139;18950:362;18902:410;;;;:::o;19318:180::-;19366:77;19363:1;19356:88;19463:4;19460:1;19453:15;19487:4;19484:1;19477:15;19504:185;19544:1;19561:20;19579:1;19561:20;:::i;:::-;19556:25;;19595:20;19613:1;19595:20;:::i;:::-;19590:25;;19634:1;19624:35;;19639:18;;:::i;:::-;19624:35;19681:1;19678;19674:9;19669:14;;19504:185;;;;:::o;19695:223::-;19835:34;19831:1;19823:6;19819:14;19812:58;19904:6;19899:2;19891:6;19887:15;19880:31;19695:223;:::o;19924:366::-;20066:3;20087:67;20151:2;20146:3;20087:67;:::i;:::-;20080:74;;20163:93;20252:3;20163:93;:::i;:::-;20281:2;20276:3;20272:12;20265:19;;19924:366;;;:::o;20296:419::-;20462:4;20500:2;20489:9;20485:18;20477:26;;20549:9;20543:4;20539:20;20535:1;20524:9;20520:17;20513:47;20577:131;20703:4;20577:131;:::i;:::-;20569:139;;20296:419;;;:::o;20721:180::-;20769:77;20766:1;20759:88;20866:4;20863:1;20856:15;20890:4;20887:1;20880:15;20907:180;20955:77;20952:1;20945:88;21052:4;21049:1;21042:15;21076:4;21073:1;21066:15;21093:143;21150:5;21181:6;21175:13;21166:22;;21197:33;21224:5;21197:33;:::i;:::-;21093:143;;;;:::o;21242:351::-;21312:6;21361:2;21349:9;21340:7;21336:23;21332:32;21329:119;;;21367:79;;:::i;:::-;21329:119;21487:1;21512:64;21568:7;21559:6;21548:9;21544:22;21512:64;:::i;:::-;21502:74;;21458:128;21242:351;;;;:::o;21599:85::-;21644:7;21673:5;21662:16;;21599:85;;;:::o;21690:158::-;21748:9;21781:61;21799:42;21808:32;21834:5;21808:32;:::i;:::-;21799:42;:::i;:::-;21781:61;:::i;:::-;21768:74;;21690:158;;;:::o;21854:147::-;21949:45;21988:5;21949:45;:::i;:::-;21944:3;21937:58;21854:147;;:::o;22007:114::-;22074:6;22108:5;22102:12;22092:22;;22007:114;;;:::o;22127:184::-;22226:11;22260:6;22255:3;22248:19;22300:4;22295:3;22291:14;22276:29;;22127:184;;;;:::o;22317:132::-;22384:4;22407:3;22399:11;;22437:4;22432:3;22428:14;22420:22;;22317:132;;;:::o;22455:108::-;22532:24;22550:5;22532:24;:::i;:::-;22527:3;22520:37;22455:108;;:::o;22569:179::-;22638:10;22659:46;22701:3;22693:6;22659:46;:::i;:::-;22737:4;22732:3;22728:14;22714:28;;22569:179;;;;:::o;22754:113::-;22824:4;22856;22851:3;22847:14;22839:22;;22754:113;;;:::o;22903:732::-;23022:3;23051:54;23099:5;23051:54;:::i;:::-;23121:86;23200:6;23195:3;23121:86;:::i;:::-;23114:93;;23231:56;23281:5;23231:56;:::i;:::-;23310:7;23341:1;23326:284;23351:6;23348:1;23345:13;23326:284;;;23427:6;23421:13;23454:63;23513:3;23498:13;23454:63;:::i;:::-;23447:70;;23540:60;23593:6;23540:60;:::i;:::-;23530:70;;23386:224;23373:1;23370;23366:9;23361:14;;23326:284;;;23330:14;23626:3;23619:10;;23027:608;;;22903:732;;;;:::o;23641:831::-;23904:4;23942:3;23931:9;23927:19;23919:27;;23956:71;24024:1;24013:9;24009:17;24000:6;23956:71;:::i;:::-;24037:80;24113:2;24102:9;24098:18;24089:6;24037:80;:::i;:::-;24164:9;24158:4;24154:20;24149:2;24138:9;24134:18;24127:48;24192:108;24295:4;24286:6;24192:108;:::i;:::-;24184:116;;24310:72;24378:2;24367:9;24363:18;24354:6;24310:72;:::i;:::-;24392:73;24460:3;24449:9;24445:19;24436:6;24392:73;:::i;:::-;23641:831;;;;;;;;:::o

Swarm Source

ipfs://09e69ef6a8fbd02ee74b41f2a282b395c17c7043e519c64c1a26a16b7ad9c064
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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