ETH Price: $3,966.97 (-0.45%)
Gas: 0.04 GWei

Token

Linda (LINDA)

Overview

Max Total Supply

100,000,000,000 LINDA

Holders

13,143

Market

Price

$0.00 @ 0.000000 ETH (+2.26%)

Onchain Market Cap

$936,000.00

Circulating Supply Market Cap

$873,601.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,236,574.728093627583549818 LINDA

Value
$11.57 ( ~0.00291658041931531 ETH) [0.0012%]
0xeb4576fe753dab07635c0bb6c8f0a355e1db5d31
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Linda is a community-led dog memecoin at its core and the main token currency used in LINDA dapps. Linda aims to foster a place for growth and discovery, uniting dog lovers and crypto communities, and to help promote the Linea Ecosystem.

Contract Source Code Verified (Exact Match)

Contract Name:
Linda

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at lineascan.build/ on 2023-12-08
*/

pragma solidity ^0.8.9;


// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)
/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

    /**
     * @dev 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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount) external returns (bool);
}

// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)
/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

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

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

// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)
/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

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

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - 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 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 {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been 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 _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

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

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

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

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

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

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

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

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

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

interface ISyncSwapFactory {
    function createPool(bytes calldata data) external returns (address pool);
}

/**
 ___        __    _____  ___   ________       __      
|"  |      |" \  (\"   \|"  \ |"      "\     /""\     
||  |      ||  | |.\\   \    |(.  ___  :)   /    \    
|:  |      |:  | |: \.   \\  ||: \   ) ||  /' /\  \   
 \  |___   |.  | |.  \    \. |(| (___\ || //  __'  \  
( \_|:  \  /\  |\|    \    \ ||:       :)/   /  \\  \ 
 \_______)(__\_|_)\___|\____\)(________/(___/    \___)


Website:  https://lindathedog.com
Telegram: https://t.me/LindaOnLinea
Twitter:  https://twitter.com/LindaOnLinea  
*/
contract Linda is ERC20, Ownable {

    address private immutable factory;
    address private immutable vault;
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address private constant ZERO = 0x0000000000000000000000000000000000000000;

    bool public isLimited;
    bool private isPoolSetup;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private automatedMarketMakerPairs;
    mapping(address => bool) public canAddLiquidityBeforeLaunch;

    address public lindaPool;
    address public liquidityWallet;
    address public developmentWallet;

    uint256 public launchedAt;
    uint256 public launchedAtTimestamp;
    uint256 public distributeThreshold;
    uint256 public maxWallet;
    
    uint256 public buyTotalFees;
    uint256 private buyBurningFee;
    uint256 private buyDevelopmentFee;
    uint256 private buyLiquidityFee;

    uint256 public constant feeDenominator = 10000;

    uint256 public sellTotalFees;
    uint256 private sellBurningFee;
    uint256 private sellDevelopmentFee;
    uint256 private sellLiquidityFee;

    uint256 private tokensForBurning;
    uint256 private tokensForDevelopment;
    uint256 private tokensForLiquidity;

    event DistributeTokens(uint256 burn, uint256 liquidity, uint256 dev);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event DevelopmentWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event LiquidityWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event MaxWalletUpdated(bool isLimited, uint256 maxAmount);

    constructor(
        address _factory,
        address _vault,
        address _multiSig
    ) ERC20("Linda", "LINDA") {
        uint256 _totalSupply = 100_000_000_000 * 1e18;
        distributeThreshold = (_totalSupply * 1) / 1000;
        canAddLiquidityBeforeLaunch[_msgSender()] = true;
        canAddLiquidityBeforeLaunch[address(this)] = true;

        factory = _factory;
        vault = _vault;
        developmentWallet = _multiSig;
        liquidityWallet = _multiSig;

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(_multiSig, true);
        excludeFromFees(DEAD, true);
        _mint(_msgSender(), _totalSupply);        
    }

    receive() external payable {}

    function lindaOnLinea(bytes calldata _data) external onlyOwner {
        require(!isPoolSetup, "Pool already set");
        lindaPool = ISyncSwapFactory(factory).createPool(_data);
        _setAutomatedMarketMakerPair(vault, true);
        isPoolSetup = true;
    }

    function setThreshold(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(newAmount >= (totalSupply() * 1) / 100000, "Threshold floor cannot be lower than 0.001% total supply");
        require(newAmount <= (totalSupply() * 3) / 1000, "Threshold ceiling cannot be higher than 0.300% total supply");
        distributeThreshold = newAmount;
        return true;
    }

    function setMaxWallet(bool _limited, uint256 _maxWalletAmount) external onlyOwner {
        require(_maxWalletAmount >= (totalSupply() * 5) / 1000, "Invalid amount: cannot set max lower than 0.5% of total supply");
        isLimited = _limited;
        maxWallet = _maxWalletAmount;
        emit MaxWalletUpdated(_limited, _maxWalletAmount);
    }

    function setDevelopmentWallet(address _developmentWallet) external onlyOwner {
        require(_developmentWallet != address(0), "Invalid Address: must be non-zero address");
        address oldWallet = developmentWallet;
        developmentWallet = _developmentWallet;
        emit DevelopmentWalletUpdated(developmentWallet, oldWallet);
    }

    function setLiquidityWallet(address _liquidityWallet) external onlyOwner {
        require(_liquidityWallet != address(0), "Invalid Address: must be non-zero address");
        address oldWallet = liquidityWallet;
        liquidityWallet = _liquidityWallet;
        emit LiquidityWalletUpdated(liquidityWallet, oldWallet);
    }

    function launch() external onlyOwner {
        require(launchedAt == 0, "Already launched");
        launchedAt = block.number;
        launchedAtTimestamp = block.timestamp;
    }

    function setBuyFees(
        uint256 _liquidityFee,
        uint256 _devFee,
        uint256 _burnFee
    ) external onlyOwner {
        require(_liquidityFee + _devFee + _burnFee <= 300, "Fees are capped at 3%");
        buyLiquidityFee = _liquidityFee;
        buyDevelopmentFee = _devFee;
        buyBurningFee = _burnFee;
        buyTotalFees = _liquidityFee + _devFee + _burnFee;
    }

    function setSellFees(
        uint256 _liquidityFee,
        uint256 _devFee,
        uint256 _burnFee
    ) external onlyOwner {
        require(_liquidityFee + _devFee + _burnFee <= 300, "Fees are capped at 3%");
        sellLiquidityFee = _liquidityFee;
        sellDevelopmentFee = _devFee;
        sellBurningFee = _burnFee;
        sellTotalFees = _liquidityFee + _devFee + _burnFee;
    }

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        return _lindaTransfer(_msgSender(), to, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(sender, spender, amount);
        return _lindaTransfer(sender, recipient, amount);
    }

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

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function getCirculatingSupply() public view returns (uint256) {
        return totalSupply() - balanceOf(DEAD) - balanceOf(ZERO) - getPendingBurn();
    }

    function getPendingBurn() public view returns (uint256) {
        return tokensForBurning;
    }

    function _lindaTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (!canAddLiquidityBeforeLaunch[sender]) {
            require(launched(), "Trading is not open yet");
        }

        if (amount == 0) {
            _transfer(sender, recipient, 0);
            return true;
        }

        if (isLimited && automatedMarketMakerPairs[sender]) {
            require(balanceOf(recipient) + amount <= maxWallet, "Limit enabled: exceeds max wallet amount");
        }

        if (balanceOf(address(this)) >= distributeThreshold && !automatedMarketMakerPairs[sender] && launched()) {
            distributeTokens();
        }
        
        bool shouldTakeFee = (!_isExcludedFromFees[sender] && !_isExcludedFromFees[recipient]) && launched();
        uint256 fees = 0;

        if (shouldTakeFee) {
            if (automatedMarketMakerPairs[sender] && buyTotalFees > 0) {
                fees = (amount * buyTotalFees) / feeDenominator;
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForBurning += (fees * buyBurningFee) / buyTotalFees;
                tokensForDevelopment += (fees * buyDevelopmentFee) / buyTotalFees;
            } else if (automatedMarketMakerPairs[recipient] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / feeDenominator;
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForBurning += (fees * sellBurningFee) / sellTotalFees;
                tokensForDevelopment += (fees * sellDevelopmentFee) / sellTotalFees;
            } else {
                uint256 discountedTransferFee = buyTotalFees < sellTotalFees ? buyTotalFees / 2 : sellTotalFees / 2;
                fees = (amount * discountedTransferFee) / feeDenominator;
                tokensForBurning += (fees / 2);
                tokensForDevelopment += (fees / 2);
            }

            _transfer(sender, address(this), fees);
            amount -= fees;
        }

        _transfer(sender, recipient, amount);

        return true;
    }

    function distributeTokens() internal {
        _transfer(address(this), DEAD, tokensForBurning);
        _transfer(address(this), liquidityWallet, tokensForLiquidity);
        _transfer(address(this), developmentWallet, tokensForDevelopment);

        emit DistributeTokens(tokensForBurning, tokensForLiquidity, tokensForDevelopment);

        tokensForBurning = 0;
        tokensForLiquidity = 0;
        tokensForDevelopment = 0;

        if (address(this).balance > 0) {
            bool success;
            (success, ) = payable(liquidityWallet).call{value: address(this).balance}("");
        }
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"_multiSig","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"DevelopmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dev","type":"uint256"}],"name":"DistributeTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"LiquidityWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isLimited","type":"bool"},{"indexed":false,"internalType":"uint256","name":"maxAmount","type":"uint256"}],"name":"MaxWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"canAddLiquidityBeforeLaunch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPendingBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLimited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"lindaOnLinea","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lindaPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_developmentWallet","type":"address"}],"name":"setDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityWallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_limited","type":"bool"},{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setThreshold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","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"},{"stateMutability":"payable","type":"receive"}]

60c06040523480156200001157600080fd5b50604051620022f3380380620022f3833981016040819052620000349162000447565b604051806040016040528060058152602001644c696e646160d81b815250604051806040016040528060058152602001644c494e444160d81b81525081600390805190602001906200008892919062000384565b5080516200009e90600490602084019062000384565b505050620000bb620000b5620001a060201b60201c565b620001a4565b6c01431e0fae6d7217caa00000006103e8620000d9826001620004a7565b620000e59190620004c9565b600e55336000908152600860205260408082208054600160ff19918216811790925530845291909220805490911690911790556001600160a01b0384811660805283811660a052600b80548483166001600160a01b03199182168117909255600a805490911690911790556005546200016191166001620001f6565b6200016e306001620001f6565b6200017b826001620001f6565b6200018a61dead6001620001f6565b6200019633826200025f565b5050505062000544565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200020062000326565b6001600160a01b038216600081815260066020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620002bb5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b8060026000828254620002cf9190620004ec565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620003825760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620002b2565b565b828054620003929062000507565b90600052602060002090601f016020900481019282620003b6576000855562000401565b82601f10620003d157805160ff191683800117855562000401565b8280016001018555821562000401579182015b8281111562000401578251825591602001919060010190620003e4565b506200040f92915062000413565b5090565b5b808211156200040f576000815560010162000414565b80516001600160a01b03811681146200044257600080fd5b919050565b6000806000606084860312156200045d57600080fd5b62000468846200042a565b925062000478602085016200042a565b915062000488604085016200042a565b90509250925092565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620004c457620004c462000491565b500290565b600082620004e757634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111562000502576200050262000491565b500190565b600181811c908216806200051c57607f821691505b602082108114156200053e57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051611d896200056a6000396000610c6c01526000610bbe0152611d896000f3fe6080604052600436106102295760003560e01c806372ac248611610123578063c0246668116100ab578063db5671fb1161006f578063db5671fb1461065a578063dd62ed3e1461067b578063e5bff07b1461069b578063f2fde38b146106b0578063f8b45b05146106d057600080fd5b8063c0246668146105ce578063c04a5414146105ee578063c6d2577d1461060e578063d469801614610624578063d85ba0631461064457600080fd5b8063960bfe04116100f2578063960bfe0414610538578063a457c2d714610558578063a9059cbb14610578578063b8ebf05d14610598578063bf56b371146105b857600080fd5b806372ac2486146104a15780638072250b146104c15780638da5cb5b146104f157806395d89b411461052357600080fd5b8063296f0a0c116101b15780634fbee193116101755780634fbee193146103e7578063530aa7ff146104205780636a486a8e1461044057806370a0823114610456578063715018a61461048c57600080fd5b8063296f0a0c146103565780632b112e4914610376578063313ce5671461038b57806339509351146103a75780633bbdd8fb146103c757600080fd5b80630f683e90116101f85780630f683e90146102c7578063180b0d7e146102e757806318160ddd1461030b57806320572c341461032057806323b872dd1461033657600080fd5b806301339c211461023557806306fdde031461024c578063095ea7b3146102775780630d075d9c146102a757600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a6106e6565b005b34801561025857600080fd5b50610261610740565b60405161026e91906119b8565b60405180910390f35b34801561028357600080fd5b50610297610292366004611a22565b6107d2565b604051901515815260200161026e565b3480156102b357600080fd5b5061024a6102c2366004611a4e565b6107ea565b3480156102d357600080fd5b5061024a6102e2366004611a4e565b61087c565b3480156102f357600080fd5b506102fd61271081565b60405190815260200161026e565b34801561031757600080fd5b506002546102fd565b34801561032c57600080fd5b506102fd600e5481565b34801561034257600080fd5b50610297610351366004611a7a565b61090e565b34801561036257600080fd5b5061024a610371366004611abb565b610932565b34801561038257600080fd5b506102fd6109b1565b34801561039757600080fd5b506040516012815260200161026e565b3480156103b357600080fd5b506102976103c2366004611a22565b610a33565b3480156103d357600080fd5b5061024a6103e2366004611ae8565b610a55565b3480156103f357600080fd5b50610297610402366004611abb565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561042c57600080fd5b5061024a61043b366004611b04565b610b52565b34801561044c57600080fd5b506102fd60145481565b34801561046257600080fd5b506102fd610471366004611abb565b6001600160a01b031660009081526020819052604090205490565b34801561049857600080fd5b5061024a610ca9565b3480156104ad57600080fd5b5061024a6104bc366004611abb565b610cbd565b3480156104cd57600080fd5b506102976104dc366004611abb565b60086020526000908152604090205460ff1681565b3480156104fd57600080fd5b506005546001600160a01b03165b6040516001600160a01b03909116815260200161026e565b34801561052f57600080fd5b50610261610d3c565b34801561054457600080fd5b50610297610553366004611b76565b610d4b565b34801561056457600080fd5b50610297610573366004611a22565b610e90565b34801561058457600080fd5b50610297610593366004611a22565b610f16565b3480156105a457600080fd5b5060095461050b906001600160a01b031681565b3480156105c457600080fd5b506102fd600c5481565b3480156105da57600080fd5b5061024a6105e9366004611b8f565b610f23565b3480156105fa57600080fd5b50600b5461050b906001600160a01b031681565b34801561061a57600080fd5b506102fd600d5481565b34801561063057600080fd5b50600a5461050b906001600160a01b031681565b34801561065057600080fd5b506102fd60105481565b34801561066657600080fd5b5060055461029790600160a01b900460ff1681565b34801561068757600080fd5b506102fd610696366004611bc4565b610f8a565b3480156106a757600080fd5b506018546102fd565b3480156106bc57600080fd5b5061024a6106cb366004611abb565b610fb5565b3480156106dc57600080fd5b506102fd600f5481565b6106ee61102e565b600c54156107365760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b60448201526064015b60405180910390fd5b43600c5542600d55565b60606003805461074f90611bfd565b80601f016020809104026020016040519081016040528092919081815260200182805461077b90611bfd565b80156107c85780601f1061079d576101008083540402835291602001916107c8565b820191906000526020600020905b8154815290600101906020018083116107ab57829003601f168201915b5050505050905090565b6000336107e0818585611088565b5060019392505050565b6107f261102e565b61012c816108008486611c4e565b61080a9190611c4e565b11156108505760405162461bcd60e51b815260206004820152601560248201527446656573206172652063617070656420617420332560581b604482015260640161072d565b6013839055601282905560118190558061086a8385611c4e565b6108749190611c4e565b601055505050565b61088461102e565b61012c816108928486611c4e565b61089c9190611c4e565b11156108e25760405162461bcd60e51b815260206004820152601560248201527446656573206172652063617070656420617420332560581b604482015260640161072d565b601783905560168290556015819055806108fc8385611c4e565b6109069190611c4e565b601455505050565b60003361091c8582856111ac565b610927858585611226565b9150505b9392505050565b61093a61102e565b6001600160a01b0381166109605760405162461bcd60e51b815260040161072d90611c66565b600a80546001600160a01b038381166001600160a01b03198316811790935560405191169182917f6080503d1da552ae8eb4b7b8a20245d9fabed014180510e7d1a05ea08fdb0f3e90600090a35050565b60006109bc60185490565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead9091527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354600254610a1a9190611caf565b610a249190611caf565b610a2e9190611caf565b905090565b6000336107e0818585610a468383610f8a565b610a509190611c4e565b611088565b610a5d61102e565b6103e8610a6960025490565b610a74906005611cc6565b610a7e9190611ce5565b811015610af35760405162461bcd60e51b815260206004820152603e60248201527f496e76616c696420616d6f756e743a2063616e6e6f7420736574206d6178206c60448201527f6f776572207468616e20302e3525206f6620746f74616c20737570706c790000606482015260840161072d565b6005805460ff60a01b1916600160a01b84151590810291909117909155600f82905560408051918252602082018390527f8942bd48f2bc74680510f7c4117e764ab841828a7b366f147b6dc0b0faadb4b6910160405180910390a15050565b610b5a61102e565b600554600160a81b900460ff1615610ba75760405162461bcd60e51b815260206004820152601060248201526f141bdbdb08185b1c9958591e481cd95d60821b604482015260640161072d565b6040516313b8683f60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906313b8683f90610bf59085908590600401611d07565b602060405180830381600087803b158015610c0f57600080fd5b505af1158015610c23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c479190611d36565b600980546001600160a01b0319166001600160a01b0392909216919091179055610c927f0000000000000000000000000000000000000000000000000000000000000000600161167c565b50506005805460ff60a81b1916600160a81b179055565b610cb161102e565b610cbb60006116d0565b565b610cc561102e565b6001600160a01b038116610ceb5760405162461bcd60e51b815260040161072d90611c66565b600b80546001600160a01b038381166001600160a01b03198316811790935560405191169182917f94cc1498503be9a145caf3e96f856665f29cf9b26c7179a93fbe1c1e5f56a0fd90600090a35050565b60606004805461074f90611bfd565b6000610d5561102e565b620186a0610d6260025490565b610d6d906001611cc6565b610d779190611ce5565b821015610dec5760405162461bcd60e51b815260206004820152603860248201527f5468726573686f6c6420666c6f6f722063616e6e6f74206265206c6f7765722060448201527f7468616e20302e3030312520746f74616c20737570706c790000000000000000606482015260840161072d565b6103e8610df860025490565b610e03906003611cc6565b610e0d9190611ce5565b821115610e825760405162461bcd60e51b815260206004820152603b60248201527f5468726573686f6c64206365696c696e672063616e6e6f74206265206869676860448201527f6572207468616e20302e3330302520746f74616c20737570706c790000000000606482015260840161072d565b50600e81905560015b919050565b60003381610e9e8286610f8a565b905083811015610efe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161072d565b610f0b8286868403611088565b506001949350505050565b600061092b338484611226565b610f2b61102e565b6001600160a01b038216600081815260066020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610fbd61102e565b6001600160a01b0381166110225760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161072d565b61102b816116d0565b50565b6005546001600160a01b03163314610cbb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161072d565b6001600160a01b0383166110ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161072d565b6001600160a01b03821661114b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161072d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006111b88484610f8a565b9050600019811461122057818110156112135760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161072d565b6112208484848403611088565b50505050565b6001600160a01b03831660009081526008602052604081205460ff1661129557600c546112955760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206973206e6f74206f70656e20796574000000000000000000604482015260640161072d565b816112ae576112a684846000611722565b50600161092b565b600554600160a01b900460ff1680156112df57506001600160a01b03841660009081526007602052604090205460ff165b1561137057600f5482611307856001600160a01b031660009081526020819052604090205490565b6113119190611c4e565b11156113705760405162461bcd60e51b815260206004820152602860248201527f4c696d697420656e61626c65643a2065786365656473206d61782077616c6c656044820152671d08185b5bdd5b9d60c21b606482015260840161072d565b600e5430600090815260208190526040902054101580156113aa57506001600160a01b03841660009081526007602052604090205460ff16155b80156113b75750600c5415155b156113c4576113c46118c6565b6001600160a01b03841660009081526006602052604081205460ff1615801561140657506001600160a01b03841660009081526006602052604090205460ff16155b80156114135750600c5415155b905060008115611665576001600160a01b03861660009081526007602052604090205460ff16801561144757506000601054115b15611500576127106010548561145d9190611cc6565b6114679190611ce5565b90506010546013548261147a9190611cc6565b6114849190611ce5565b601a60008282546114959190611c4e565b90915550506010546011546114aa9083611cc6565b6114b49190611ce5565b601860008282546114c59190611c4e565b90915550506010546012546114da9083611cc6565b6114e49190611ce5565b601960008282546114f59190611c4e565b9091555061164d9050565b6001600160a01b03851660009081526007602052604090205460ff16801561152a57506000601454115b156115bd57612710601454856115409190611cc6565b61154a9190611ce5565b90506014546017548261155d9190611cc6565b6115679190611ce5565b601a60008282546115789190611c4e565b909155505060145460155461158d9083611cc6565b6115979190611ce5565b601860008282546115a89190611c4e565b90915550506014546016546114da9083611cc6565b6000601454601054106115de5760026014546115d99190611ce5565b6115ed565b60026010546115ed9190611ce5565b90506127106115fc8287611cc6565b6116069190611ce5565b9150611613600283611ce5565b601860008282546116249190611c4e565b909155506116359050600283611ce5565b601960008282546116469190611c4e565b9091555050505b611658863083611722565b6116628185611caf565b93505b611670868686611722565b50600195945050505050565b6001600160a01b038216600081815260076020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166117865760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161072d565b6001600160a01b0382166117e85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161072d565b6001600160a01b038316600090815260208190526040902054818110156118605760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161072d565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611220565b6118d53061dead601854611722565b600a54601a546118f29130916001600160a01b0390911690611722565b600b5460195461190f9130916001600160a01b0390911690611722565b601854601a5460195460408051938452602084019290925282820152517f58a90fe8a224aa899ec174ae5ccfbaa68d574176f37c8e062d37b656824c1df49181900360600190a160006018819055601a8190556019554715610cbb57600a546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611220576040519150601f19603f3d011682016040523d82523d6000602084013e611220565b600060208083528351808285015260005b818110156119e5578581018301518582016040015282016119c9565b818111156119f7576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461102b57600080fd5b60008060408385031215611a3557600080fd5b8235611a4081611a0d565b946020939093013593505050565b600080600060608486031215611a6357600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611a8f57600080fd5b8335611a9a81611a0d565b92506020840135611aaa81611a0d565b929592945050506040919091013590565b600060208284031215611acd57600080fd5b813561092b81611a0d565b80358015158114610e8b57600080fd5b60008060408385031215611afb57600080fd5b611a4083611ad8565b60008060208385031215611b1757600080fd5b823567ffffffffffffffff80821115611b2f57600080fd5b818501915085601f830112611b4357600080fd5b813581811115611b5257600080fd5b866020828501011115611b6457600080fd5b60209290920196919550909350505050565b600060208284031215611b8857600080fd5b5035919050565b60008060408385031215611ba257600080fd5b8235611bad81611a0d565b9150611bbb60208401611ad8565b90509250929050565b60008060408385031215611bd757600080fd5b8235611be281611a0d565b91506020830135611bf281611a0d565b809150509250929050565b600181811c90821680611c1157607f821691505b60208210811415611c3257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611c6157611c61611c38565b500190565b60208082526029908201527f496e76616c696420416464726573733a206d757374206265206e6f6e2d7a65726040820152686f206164647265737360b81b606082015260800190565b600082821015611cc157611cc1611c38565b500390565b6000816000190483118215151615611ce057611ce0611c38565b500290565b600082611d0257634e487b7160e01b600052601260045260246000fd5b500490565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060208284031215611d4857600080fd5b815161092b81611a0d56fea2646970667358221220a16a2024efc9cf1ec1163e79d17290ce3e7539c395602abb3f91f75835940e0664736f6c6343000809003300000000000000000000000037bac764494c8db4e54bde72f6965bea9fa0ac2d0000000000000000000000007160570bb153edd0ea1775ec2b2ac9b65f1ab61b0000000000000000000000004c8b582a769c108099ab80b085ca5ff3b3bf436f

Deployed Bytecode

0x6080604052600436106102295760003560e01c806372ac248611610123578063c0246668116100ab578063db5671fb1161006f578063db5671fb1461065a578063dd62ed3e1461067b578063e5bff07b1461069b578063f2fde38b146106b0578063f8b45b05146106d057600080fd5b8063c0246668146105ce578063c04a5414146105ee578063c6d2577d1461060e578063d469801614610624578063d85ba0631461064457600080fd5b8063960bfe04116100f2578063960bfe0414610538578063a457c2d714610558578063a9059cbb14610578578063b8ebf05d14610598578063bf56b371146105b857600080fd5b806372ac2486146104a15780638072250b146104c15780638da5cb5b146104f157806395d89b411461052357600080fd5b8063296f0a0c116101b15780634fbee193116101755780634fbee193146103e7578063530aa7ff146104205780636a486a8e1461044057806370a0823114610456578063715018a61461048c57600080fd5b8063296f0a0c146103565780632b112e4914610376578063313ce5671461038b57806339509351146103a75780633bbdd8fb146103c757600080fd5b80630f683e90116101f85780630f683e90146102c7578063180b0d7e146102e757806318160ddd1461030b57806320572c341461032057806323b872dd1461033657600080fd5b806301339c211461023557806306fdde031461024c578063095ea7b3146102775780630d075d9c146102a757600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a6106e6565b005b34801561025857600080fd5b50610261610740565b60405161026e91906119b8565b60405180910390f35b34801561028357600080fd5b50610297610292366004611a22565b6107d2565b604051901515815260200161026e565b3480156102b357600080fd5b5061024a6102c2366004611a4e565b6107ea565b3480156102d357600080fd5b5061024a6102e2366004611a4e565b61087c565b3480156102f357600080fd5b506102fd61271081565b60405190815260200161026e565b34801561031757600080fd5b506002546102fd565b34801561032c57600080fd5b506102fd600e5481565b34801561034257600080fd5b50610297610351366004611a7a565b61090e565b34801561036257600080fd5b5061024a610371366004611abb565b610932565b34801561038257600080fd5b506102fd6109b1565b34801561039757600080fd5b506040516012815260200161026e565b3480156103b357600080fd5b506102976103c2366004611a22565b610a33565b3480156103d357600080fd5b5061024a6103e2366004611ae8565b610a55565b3480156103f357600080fd5b50610297610402366004611abb565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561042c57600080fd5b5061024a61043b366004611b04565b610b52565b34801561044c57600080fd5b506102fd60145481565b34801561046257600080fd5b506102fd610471366004611abb565b6001600160a01b031660009081526020819052604090205490565b34801561049857600080fd5b5061024a610ca9565b3480156104ad57600080fd5b5061024a6104bc366004611abb565b610cbd565b3480156104cd57600080fd5b506102976104dc366004611abb565b60086020526000908152604090205460ff1681565b3480156104fd57600080fd5b506005546001600160a01b03165b6040516001600160a01b03909116815260200161026e565b34801561052f57600080fd5b50610261610d3c565b34801561054457600080fd5b50610297610553366004611b76565b610d4b565b34801561056457600080fd5b50610297610573366004611a22565b610e90565b34801561058457600080fd5b50610297610593366004611a22565b610f16565b3480156105a457600080fd5b5060095461050b906001600160a01b031681565b3480156105c457600080fd5b506102fd600c5481565b3480156105da57600080fd5b5061024a6105e9366004611b8f565b610f23565b3480156105fa57600080fd5b50600b5461050b906001600160a01b031681565b34801561061a57600080fd5b506102fd600d5481565b34801561063057600080fd5b50600a5461050b906001600160a01b031681565b34801561065057600080fd5b506102fd60105481565b34801561066657600080fd5b5060055461029790600160a01b900460ff1681565b34801561068757600080fd5b506102fd610696366004611bc4565b610f8a565b3480156106a757600080fd5b506018546102fd565b3480156106bc57600080fd5b5061024a6106cb366004611abb565b610fb5565b3480156106dc57600080fd5b506102fd600f5481565b6106ee61102e565b600c54156107365760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b60448201526064015b60405180910390fd5b43600c5542600d55565b60606003805461074f90611bfd565b80601f016020809104026020016040519081016040528092919081815260200182805461077b90611bfd565b80156107c85780601f1061079d576101008083540402835291602001916107c8565b820191906000526020600020905b8154815290600101906020018083116107ab57829003601f168201915b5050505050905090565b6000336107e0818585611088565b5060019392505050565b6107f261102e565b61012c816108008486611c4e565b61080a9190611c4e565b11156108505760405162461bcd60e51b815260206004820152601560248201527446656573206172652063617070656420617420332560581b604482015260640161072d565b6013839055601282905560118190558061086a8385611c4e565b6108749190611c4e565b601055505050565b61088461102e565b61012c816108928486611c4e565b61089c9190611c4e565b11156108e25760405162461bcd60e51b815260206004820152601560248201527446656573206172652063617070656420617420332560581b604482015260640161072d565b601783905560168290556015819055806108fc8385611c4e565b6109069190611c4e565b601455505050565b60003361091c8582856111ac565b610927858585611226565b9150505b9392505050565b61093a61102e565b6001600160a01b0381166109605760405162461bcd60e51b815260040161072d90611c66565b600a80546001600160a01b038381166001600160a01b03198316811790935560405191169182917f6080503d1da552ae8eb4b7b8a20245d9fabed014180510e7d1a05ea08fdb0f3e90600090a35050565b60006109bc60185490565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead9091527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354600254610a1a9190611caf565b610a249190611caf565b610a2e9190611caf565b905090565b6000336107e0818585610a468383610f8a565b610a509190611c4e565b611088565b610a5d61102e565b6103e8610a6960025490565b610a74906005611cc6565b610a7e9190611ce5565b811015610af35760405162461bcd60e51b815260206004820152603e60248201527f496e76616c696420616d6f756e743a2063616e6e6f7420736574206d6178206c60448201527f6f776572207468616e20302e3525206f6620746f74616c20737570706c790000606482015260840161072d565b6005805460ff60a01b1916600160a01b84151590810291909117909155600f82905560408051918252602082018390527f8942bd48f2bc74680510f7c4117e764ab841828a7b366f147b6dc0b0faadb4b6910160405180910390a15050565b610b5a61102e565b600554600160a81b900460ff1615610ba75760405162461bcd60e51b815260206004820152601060248201526f141bdbdb08185b1c9958591e481cd95d60821b604482015260640161072d565b6040516313b8683f60e01b81526001600160a01b037f00000000000000000000000037bac764494c8db4e54bde72f6965bea9fa0ac2d16906313b8683f90610bf59085908590600401611d07565b602060405180830381600087803b158015610c0f57600080fd5b505af1158015610c23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c479190611d36565b600980546001600160a01b0319166001600160a01b0392909216919091179055610c927f0000000000000000000000007160570bb153edd0ea1775ec2b2ac9b65f1ab61b600161167c565b50506005805460ff60a81b1916600160a81b179055565b610cb161102e565b610cbb60006116d0565b565b610cc561102e565b6001600160a01b038116610ceb5760405162461bcd60e51b815260040161072d90611c66565b600b80546001600160a01b038381166001600160a01b03198316811790935560405191169182917f94cc1498503be9a145caf3e96f856665f29cf9b26c7179a93fbe1c1e5f56a0fd90600090a35050565b60606004805461074f90611bfd565b6000610d5561102e565b620186a0610d6260025490565b610d6d906001611cc6565b610d779190611ce5565b821015610dec5760405162461bcd60e51b815260206004820152603860248201527f5468726573686f6c6420666c6f6f722063616e6e6f74206265206c6f7765722060448201527f7468616e20302e3030312520746f74616c20737570706c790000000000000000606482015260840161072d565b6103e8610df860025490565b610e03906003611cc6565b610e0d9190611ce5565b821115610e825760405162461bcd60e51b815260206004820152603b60248201527f5468726573686f6c64206365696c696e672063616e6e6f74206265206869676860448201527f6572207468616e20302e3330302520746f74616c20737570706c790000000000606482015260840161072d565b50600e81905560015b919050565b60003381610e9e8286610f8a565b905083811015610efe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161072d565b610f0b8286868403611088565b506001949350505050565b600061092b338484611226565b610f2b61102e565b6001600160a01b038216600081815260066020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610fbd61102e565b6001600160a01b0381166110225760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161072d565b61102b816116d0565b50565b6005546001600160a01b03163314610cbb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161072d565b6001600160a01b0383166110ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161072d565b6001600160a01b03821661114b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161072d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006111b88484610f8a565b9050600019811461122057818110156112135760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161072d565b6112208484848403611088565b50505050565b6001600160a01b03831660009081526008602052604081205460ff1661129557600c546112955760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206973206e6f74206f70656e20796574000000000000000000604482015260640161072d565b816112ae576112a684846000611722565b50600161092b565b600554600160a01b900460ff1680156112df57506001600160a01b03841660009081526007602052604090205460ff165b1561137057600f5482611307856001600160a01b031660009081526020819052604090205490565b6113119190611c4e565b11156113705760405162461bcd60e51b815260206004820152602860248201527f4c696d697420656e61626c65643a2065786365656473206d61782077616c6c656044820152671d08185b5bdd5b9d60c21b606482015260840161072d565b600e5430600090815260208190526040902054101580156113aa57506001600160a01b03841660009081526007602052604090205460ff16155b80156113b75750600c5415155b156113c4576113c46118c6565b6001600160a01b03841660009081526006602052604081205460ff1615801561140657506001600160a01b03841660009081526006602052604090205460ff16155b80156114135750600c5415155b905060008115611665576001600160a01b03861660009081526007602052604090205460ff16801561144757506000601054115b15611500576127106010548561145d9190611cc6565b6114679190611ce5565b90506010546013548261147a9190611cc6565b6114849190611ce5565b601a60008282546114959190611c4e565b90915550506010546011546114aa9083611cc6565b6114b49190611ce5565b601860008282546114c59190611c4e565b90915550506010546012546114da9083611cc6565b6114e49190611ce5565b601960008282546114f59190611c4e565b9091555061164d9050565b6001600160a01b03851660009081526007602052604090205460ff16801561152a57506000601454115b156115bd57612710601454856115409190611cc6565b61154a9190611ce5565b90506014546017548261155d9190611cc6565b6115679190611ce5565b601a60008282546115789190611c4e565b909155505060145460155461158d9083611cc6565b6115979190611ce5565b601860008282546115a89190611c4e565b90915550506014546016546114da9083611cc6565b6000601454601054106115de5760026014546115d99190611ce5565b6115ed565b60026010546115ed9190611ce5565b90506127106115fc8287611cc6565b6116069190611ce5565b9150611613600283611ce5565b601860008282546116249190611c4e565b909155506116359050600283611ce5565b601960008282546116469190611c4e565b9091555050505b611658863083611722565b6116628185611caf565b93505b611670868686611722565b50600195945050505050565b6001600160a01b038216600081815260076020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166117865760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161072d565b6001600160a01b0382166117e85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161072d565b6001600160a01b038316600090815260208190526040902054818110156118605760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161072d565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611220565b6118d53061dead601854611722565b600a54601a546118f29130916001600160a01b0390911690611722565b600b5460195461190f9130916001600160a01b0390911690611722565b601854601a5460195460408051938452602084019290925282820152517f58a90fe8a224aa899ec174ae5ccfbaa68d574176f37c8e062d37b656824c1df49181900360600190a160006018819055601a8190556019554715610cbb57600a546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611220576040519150601f19603f3d011682016040523d82523d6000602084013e611220565b600060208083528351808285015260005b818110156119e5578581018301518582016040015282016119c9565b818111156119f7576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461102b57600080fd5b60008060408385031215611a3557600080fd5b8235611a4081611a0d565b946020939093013593505050565b600080600060608486031215611a6357600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611a8f57600080fd5b8335611a9a81611a0d565b92506020840135611aaa81611a0d565b929592945050506040919091013590565b600060208284031215611acd57600080fd5b813561092b81611a0d565b80358015158114610e8b57600080fd5b60008060408385031215611afb57600080fd5b611a4083611ad8565b60008060208385031215611b1757600080fd5b823567ffffffffffffffff80821115611b2f57600080fd5b818501915085601f830112611b4357600080fd5b813581811115611b5257600080fd5b866020828501011115611b6457600080fd5b60209290920196919550909350505050565b600060208284031215611b8857600080fd5b5035919050565b60008060408385031215611ba257600080fd5b8235611bad81611a0d565b9150611bbb60208401611ad8565b90509250929050565b60008060408385031215611bd757600080fd5b8235611be281611a0d565b91506020830135611bf281611a0d565b809150509250929050565b600181811c90821680611c1157607f821691505b60208210811415611c3257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611c6157611c61611c38565b500190565b60208082526029908201527f496e76616c696420416464726573733a206d757374206265206e6f6e2d7a65726040820152686f206164647265737360b81b606082015260800190565b600082821015611cc157611cc1611c38565b500390565b6000816000190483118215151615611ce057611ce0611c38565b500290565b600082611d0257634e487b7160e01b600052601260045260246000fd5b500490565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060208284031215611d4857600080fd5b815161092b81611a0d56fea2646970667358221220a16a2024efc9cf1ec1163e79d17290ce3e7539c395602abb3f91f75835940e0664736f6c63430008090033

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

00000000000000000000000037bac764494c8db4e54bde72f6965bea9fa0ac2d0000000000000000000000007160570bb153edd0ea1775ec2b2ac9b65f1ab61b0000000000000000000000004c8b582a769c108099ab80b085ca5ff3b3bf436f

-----Decoded View---------------
Arg [0] : _factory (address): 0x37BAc764494c8db4e54BDE72f6965beA9fa0AC2d
Arg [1] : _vault (address): 0x7160570BB153Edd0Ea1775EC2b2Ac9b65F1aB61B
Arg [2] : _multiSig (address): 0x4C8B582A769c108099ab80B085ca5Ff3b3bf436f

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000037bac764494c8db4e54bde72f6965bea9fa0ac2d
Arg [1] : 0000000000000000000000007160570bb153edd0ea1775ec2b2ac9b65f1ab61b
Arg [2] : 0000000000000000000000004c8b582a769c108099ab80b085ca5ff3b3bf436f


Deployed Bytecode Sourcemap

20537:9406:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24823:184;;;;;;;;;;;;;:::i;:::-;;6302:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8662:201;;;;;;;;;;-1:-1:-1;8662:201:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;8662:201:0;1072:187:1;25015:400:0;;;;;;;;;;-1:-1:-1;25015:400:0;;;;;:::i;:::-;;:::i;25423:405::-;;;;;;;;;;-1:-1:-1;25423:405:0;;;;;:::i;:::-;;:::i;21484:46::-;;;;;;;;;;;;21525:5;21484:46;;;;;1731:25:1;;;1719:2;1704:18;21484:46:0;1585:177:1;7431:108:0;;;;;;;;;;-1:-1:-1;7519:12:0;;7431:108;;21256:34;;;;;;;;;;;;;;;;25995:271;;;;;;;;;;-1:-1:-1;25995:271:0;;;;;:::i;:::-;;:::i;24482:333::-;;;;;;;;;;-1:-1:-1;24482:333:0;;;;;:::i;:::-;;:::i;26598:156::-;;;;;;;;;;;;;:::i;7273:93::-;;;;;;;;;;-1:-1:-1;7273:93:0;;7356:2;2622:36:1;;2610:2;2595:18;7273:93:0;2480:184:1;10113:238:0;;;;;;;;;;-1:-1:-1;10113:238:0;;;;;:::i;:::-;;:::i;23765:352::-;;;;;;;;;;-1:-1:-1;23765:352:0;;;;;:::i;:::-;;:::i;26464:126::-;;;;;;;;;;-1:-1:-1;26464:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;26554:28:0;26530:4;26554:28;;;:19;:28;;;;;;;;;26464:126;23057:270;;;;;;;;;;-1:-1:-1;23057:270:0;;;;;:::i;:::-;;:::i;21539:28::-;;;;;;;;;;;;;;;;7602:127;;;;;;;;;;-1:-1:-1;7602:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7703:18:0;7676:7;7703:18;;;;;;;;;;;;7602:127;19083:103;;;;;;;;;;;;;:::i;24125:349::-;;;;;;;;;;-1:-1:-1;24125:349:0;;;;;:::i;:::-;;:::i;21006:59::-;;;;;;;;;;-1:-1:-1;21006:59:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18442:87;;;;;;;;;;-1:-1:-1;18515:6:0;;-1:-1:-1;;;;;18515:6:0;18442:87;;;-1:-1:-1;;;;;3847:32:1;;;3829:51;;3817:2;3802:18;18442:87:0;3683:203:1;6521:104:0;;;;;;;;;;;;;:::i;23335:422::-;;;;;;;;;;-1:-1:-1;23335:422:0;;;;;:::i;:::-;;:::i;10854:436::-;;;;;;;;;;-1:-1:-1;10854:436:0;;;;;:::i;:::-;;:::i;25836:151::-;;;;;;;;;;-1:-1:-1;25836:151:0;;;;;:::i;:::-;;:::i;21074:24::-;;;;;;;;;;-1:-1:-1;21074:24:0;;;;-1:-1:-1;;;;;21074:24:0;;;21183:25;;;;;;;;;;;;;;;;26274:182;;;;;;;;;;-1:-1:-1;26274:182:0;;;;;:::i;:::-;;:::i;21142:32::-;;;;;;;;;;-1:-1:-1;21142:32:0;;;;-1:-1:-1;;;;;21142:32:0;;;21215:34;;;;;;;;;;;;;;;;21105:30;;;;;;;;;;-1:-1:-1;21105:30:0;;;;-1:-1:-1;;;;;21105:30:0;;;21334:27;;;;;;;;;;;;;;;;20821:21;;;;;;;;;;-1:-1:-1;20821:21:0;;;;-1:-1:-1;;;20821:21:0;;;;;;8191:151;;;;;;;;;;-1:-1:-1;8191:151:0;;;;;:::i;:::-;;:::i;26762:98::-;;;;;;;;;;-1:-1:-1;26836:16:0;;26762:98;;19341:201;;;;;;;;;;-1:-1:-1;19341:201:0;;;;;:::i;:::-;;:::i;21297:24::-;;;;;;;;;;;;;;;;24823:184;18328:13;:11;:13::i;:::-;24879:10:::1;::::0;:15;24871:44:::1;;;::::0;-1:-1:-1;;;24871:44:0;;4991:2:1;24871:44:0::1;::::0;::::1;4973:21:1::0;5030:2;5010:18;;;5003:30;-1:-1:-1;;;5049:18:1;;;5042:46;5105:18;;24871:44:0::1;;;;;;;;;24939:12;24926:10;:25:::0;24984:15:::1;24962:19;:37:::0;24823:184::o;6302:100::-;6356:13;6389:5;6382:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6302:100;:::o;8662:201::-;8745:4;4115:10;8801:32;4115:10;8817:7;8826:6;8801:8;:32::i;:::-;-1:-1:-1;8851:4:0;;8662:201;-1:-1:-1;;;8662:201:0:o;25015:400::-;18328:13;:11;:13::i;:::-;25203:3:::1;25191:8:::0;25165:23:::1;25181:7:::0;25165:13;:23:::1;:::i;:::-;:34;;;;:::i;:::-;:41;;25157:75;;;::::0;-1:-1:-1;;;25157:75:0;;5986:2:1;25157:75:0::1;::::0;::::1;5968:21:1::0;6025:2;6005:18;;;5998:30;-1:-1:-1;;;6044:18:1;;;6037:51;6105:18;;25157:75:0::1;5784:345:1::0;25157:75:0::1;25243:15;:31:::0;;;25285:17:::1;:27:::0;;;25323:13:::1;:24:::0;;;25339:8;25373:23:::1;25305:7:::0;25261:13;25373:23:::1;:::i;:::-;:34;;;;:::i;:::-;25358:12;:49:::0;-1:-1:-1;;;25015:400:0:o;25423:405::-;18328:13;:11;:13::i;:::-;25612:3:::1;25600:8:::0;25574:23:::1;25590:7:::0;25574:13;:23:::1;:::i;:::-;:34;;;;:::i;:::-;:41;;25566:75;;;::::0;-1:-1:-1;;;25566:75:0;;5986:2:1;25566:75:0::1;::::0;::::1;5968:21:1::0;6025:2;6005:18;;;5998:30;-1:-1:-1;;;6044:18:1;;;6037:51;6105:18;;25566:75:0::1;5784:345:1::0;25566:75:0::1;25652:16;:32:::0;;;25695:18:::1;:28:::0;;;25734:14:::1;:25:::0;;;25751:8;25786:23:::1;25716:7:::0;25671:13;25786:23:::1;:::i;:::-;:34;;;;:::i;:::-;25770:13;:50:::0;-1:-1:-1;;;25423:405:0:o;25995:271::-;26101:4;4115:10;26159:40;26175:6;4115:10;26192:6;26159:15;:40::i;:::-;26217:41;26232:6;26240:9;26251:6;26217:14;:41::i;:::-;26210:48;;;25995:271;;;;;;:::o;24482:333::-;18328:13;:11;:13::i;:::-;-1:-1:-1;;;;;24574:30:0;::::1;24566:84;;;;-1:-1:-1::0;;;24566:84:0::1;;;;;;;:::i;:::-;24681:15;::::0;;-1:-1:-1;;;;;24707:34:0;;::::1;-1:-1:-1::0;;;;;;24707:34:0;::::1;::::0;::::1;::::0;;;24757:50:::1;::::0;24681:15;::::1;::::0;;;24757:50:::1;::::0;24661:17:::1;::::0;24757:50:::1;24555:260;24482:333:::0;:::o;26598:156::-;26651:7;26730:16;26836;;;26762:98;26730:16;20770:42;7703:18;;;;;;20689:42;7703:18;;;;;7519:12;;26678:31;;7703:18;26678:31;:::i;:::-;:49;;;;:::i;:::-;:68;;;;:::i;:::-;26671:75;;26598:156;:::o;10113:238::-;10201:4;4115:10;10257:64;4115:10;10273:7;10310:10;10282:25;4115:10;10273:7;10282:9;:25::i;:::-;:38;;;;:::i;:::-;10257:8;:64::i;23765:352::-;18328:13;:11;:13::i;:::-;23908:4:::1;23887:13;7519:12:::0;;;7431:108;23887:13:::1;:17;::::0;23903:1:::1;23887:17;:::i;:::-;23886:26;;;;:::i;:::-;23866:16;:46;;23858:121;;;::::0;-1:-1:-1;;;23858:121:0;;7271:2:1;23858:121:0::1;::::0;::::1;7253:21:1::0;7310:2;7290:18;;;7283:30;7349:34;7329:18;;;7322:62;7420:32;7400:18;;;7393:60;7470:19;;23858:121:0::1;7069:426:1::0;23858:121:0::1;23990:9;:20:::0;;-1:-1:-1;;;;23990:20:0::1;-1:-1:-1::0;;;23990:20:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;24021:9:::1;:28:::0;;;24065:44:::1;::::0;;7668:41:1;;;7740:2;7725:18;;7718:34;;;24065:44:0::1;::::0;7641:18:1;24065:44:0::1;;;;;;;23765:352:::0;;:::o;23057:270::-;18328:13;:11;:13::i;:::-;23140:11:::1;::::0;-1:-1:-1;;;23140:11:0;::::1;;;23139:12;23131:41;;;::::0;-1:-1:-1;;;23131:41:0;;7965:2:1;23131:41:0::1;::::0;::::1;7947:21:1::0;8004:2;7984:18;;;7977:30;-1:-1:-1;;;8023:18:1;;;8016:46;8079:18;;23131:41:0::1;7763:340:1::0;23131:41:0::1;23195:43;::::0;-1:-1:-1;;;23195:43:0;;-1:-1:-1;;;;;23212:7:0::1;23195:36;::::0;::::1;::::0;:43:::1;::::0;23232:5;;;;23195:43:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23183:9;:55:::0;;-1:-1:-1;;;;;;23183:55:0::1;-1:-1:-1::0;;;;;23183:55:0;;;::::1;::::0;;;::::1;::::0;;23249:41:::1;23278:5;-1:-1:-1::0;23249:28:0::1;:41::i;:::-;-1:-1:-1::0;;23301:11:0::1;:18:::0;;-1:-1:-1;;;;23301:18:0::1;-1:-1:-1::0;;;23301:18:0::1;::::0;;23057:270::o;19083:103::-;18328:13;:11;:13::i;:::-;19148:30:::1;19175:1;19148:18;:30::i;:::-;19083:103::o:0;24125:349::-;18328:13;:11;:13::i;:::-;-1:-1:-1;;;;;24221:32:0;::::1;24213:86;;;;-1:-1:-1::0;;;24213:86:0::1;;;;;;;:::i;:::-;24330:17;::::0;;-1:-1:-1;;;;;24358:38:0;;::::1;-1:-1:-1::0;;;;;;24358:38:0;::::1;::::0;::::1;::::0;;;24412:54:::1;::::0;24330:17;::::1;::::0;;;24412:54:::1;::::0;24310:17:::1;::::0;24412:54:::1;24202:272;24125:349:::0;:::o;6521:104::-;6577:13;6610:7;6603:14;;;;;:::i;23335:422::-;23431:4;18328:13;:11;:13::i;:::-;23496:6:::1;23475:13;7519:12:::0;;;7431:108;23475:13:::1;:17;::::0;23491:1:::1;23475:17;:::i;:::-;23474:28;;;;:::i;:::-;23461:9;:41;;23453:110;;;::::0;-1:-1:-1;;;23453:110:0;;8959:2:1;23453:110:0::1;::::0;::::1;8941:21:1::0;8998:2;8978:18;;;8971:30;9037:34;9017:18;;;9010:62;9108:26;9088:18;;;9081:54;9152:19;;23453:110:0::1;8757:420:1::0;23453:110:0::1;23617:4;23596:13;7519:12:::0;;;7431:108;23596:13:::1;:17;::::0;23612:1:::1;23596:17;:::i;:::-;23595:26;;;;:::i;:::-;23582:9;:39;;23574:111;;;::::0;-1:-1:-1;;;23574:111:0;;9384:2:1;23574:111:0::1;::::0;::::1;9366:21:1::0;9423:2;9403:18;;;9396:30;9462:34;9442:18;;;9435:62;9533:29;9513:18;;;9506:57;9580:19;;23574:111:0::1;9182:423:1::0;23574:111:0::1;-1:-1:-1::0;23696:19:0::1;:31:::0;;;23745:4:::1;18352:1;23335:422:::0;;;:::o;10854:436::-;10947:4;4115:10;10947:4;11030:25;4115:10;11047:7;11030:9;:25::i;:::-;11003:52;;11094:15;11074:16;:35;;11066:85;;;;-1:-1:-1;;;11066:85:0;;9812:2:1;11066:85:0;;;9794:21:1;9851:2;9831:18;;;9824:30;9890:34;9870:18;;;9863:62;-1:-1:-1;;;9941:18:1;;;9934:35;9986:19;;11066:85:0;9610:401:1;11066:85:0;11187:60;11196:5;11203:7;11231:15;11212:16;:34;11187:8;:60::i;:::-;-1:-1:-1;11278:4:0;;10854:436;-1:-1:-1;;;;10854:436:0:o;25836:151::-;25915:4;25939:40;4115:10;25968:2;25972:6;25939:14;:40::i;26274:182::-;18328:13;:11;:13::i;:::-;-1:-1:-1;;;;;26359:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;26359:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;26414:34;;1212:41:1;;;26414:34:0::1;::::0;1185:18:1;26414:34:0::1;;;;;;;26274:182:::0;;:::o;8191:151::-;-1:-1:-1;;;;;8307:18:0;;;8280:7;8307:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8191:151::o;19341:201::-;18328:13;:11;:13::i;:::-;-1:-1:-1;;;;;19430:22:0;::::1;19422:73;;;::::0;-1:-1:-1;;;19422:73:0;;10218:2:1;19422:73:0::1;::::0;::::1;10200:21:1::0;10257:2;10237:18;;;10230:30;10296:34;10276:18;;;10269:62;-1:-1:-1;;;10347:18:1;;;10340:36;10393:19;;19422:73:0::1;10016:402:1::0;19422:73:0::1;19506:28;19525:8;19506:18;:28::i;:::-;19341:201:::0;:::o;18607:132::-;18515:6;;-1:-1:-1;;;;;18515:6:0;4115:10;18671:23;18663:68;;;;-1:-1:-1;;;18663:68:0;;10625:2:1;18663:68:0;;;10607:21:1;;;10644:18;;;10637:30;10703:34;10683:18;;;10676:62;10755:18;;18663:68:0;10423:356:1;14847:346:0;-1:-1:-1;;;;;14949:19:0;;14941:68;;;;-1:-1:-1;;;14941:68:0;;10986:2:1;14941:68:0;;;10968:21:1;11025:2;11005:18;;;10998:30;11064:34;11044:18;;;11037:62;-1:-1:-1;;;11115:18:1;;;11108:34;11159:19;;14941:68:0;10784:400:1;14941:68:0;-1:-1:-1;;;;;15028:21:0;;15020:68;;;;-1:-1:-1;;;15020:68:0;;11391:2:1;15020:68:0;;;11373:21:1;11430:2;11410:18;;;11403:30;11469:34;11449:18;;;11442:62;-1:-1:-1;;;11520:18:1;;;11513:32;11562:19;;15020:68:0;11189:398:1;15020:68:0;-1:-1:-1;;;;;15101:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15153:32;;1731:25:1;;;15153:32:0;;1704:18:1;15153:32:0;;;;;;;14847:346;;;:::o;15484:419::-;15585:24;15612:25;15622:5;15629:7;15612:9;:25::i;:::-;15585:52;;-1:-1:-1;;15652:16:0;:37;15648:248;;15734:6;15714:16;:26;;15706:68;;;;-1:-1:-1;;;15706:68:0;;11794:2:1;15706:68:0;;;11776:21:1;11833:2;11813:18;;;11806:30;11872:31;11852:18;;;11845:59;11921:18;;15706:68:0;11592:353:1;15706:68:0;15818:51;15827:5;15834:7;15862:6;15843:16;:25;15818:8;:51::i;:::-;15574:329;15484:419;;;:::o;26868:2151::-;-1:-1:-1;;;;;26983:35:0;;26961:4;26983:35;;;:27;:35;;;;;;;;26978:115;;29723:10;;27035:46;;;;-1:-1:-1;;;27035:46:0;;12152:2:1;27035:46:0;;;12134:21:1;12191:2;12171:18;;;12164:30;12230:25;12210:18;;;12203:53;12273:18;;27035:46:0;11950:347:1;27035:46:0;27109:11;27105:101;;27137:31;27147:6;27155:9;27166:1;27137:9;:31::i;:::-;-1:-1:-1;27190:4:0;27183:11;;27105:101;27222:9;;-1:-1:-1;;;27222:9:0;;;;:46;;;;-1:-1:-1;;;;;;27235:33:0;;;;;;:25;:33;;;;;;;;27222:46;27218:174;;;27326:9;;27316:6;27293:20;27303:9;-1:-1:-1;;;;;7703:18:0;7676:7;7703:18;;;;;;;;;;;;7602:127;27293:20;:29;;;;:::i;:::-;:42;;27285:95;;;;-1:-1:-1;;;27285:95:0;;12504:2:1;27285:95:0;;;12486:21:1;12543:2;12523:18;;;12516:30;12582:34;12562:18;;;12555:62;-1:-1:-1;;;12633:18:1;;;12626:38;12681:19;;27285:95:0;12302:404:1;27285:95:0;27436:19;;27426:4;7676:7;7703:18;;;;;;;;;;;27408:47;;:85;;;;-1:-1:-1;;;;;;27460:33:0;;;;;;:25;:33;;;;;;;;27459:34;27408:85;:99;;;;-1:-1:-1;29723:10:0;;:15;;27497:10;27404:150;;;27524:18;:16;:18::i;:::-;-1:-1:-1;;;;;27597:27:0;;27574:18;27597:27;;;:19;:27;;;;;;;;27596:28;:63;;;;-1:-1:-1;;;;;;27629:30:0;;;;;;:19;:30;;;;;;;;27628:31;27596:63;27595:79;;;;-1:-1:-1;29723:10:0;;:15;;27664:10;27574:100;;27685:12;27718:13;27714:1225;;;-1:-1:-1;;;;;27752:33:0;;;;;;:25;:33;;;;;;;;:53;;;;;27804:1;27789:12;;:16;27752:53;27748:1096;;;21525:5;27843:12;;27834:6;:21;;;;:::i;:::-;27833:40;;;;:::i;:::-;27826:47;;27941:12;;27922:15;;27915:4;:22;;;;:::i;:::-;27914:39;;;;:::i;:::-;27892:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;28017:12:0;;28000:13;;27993:20;;:4;:20;:::i;:::-;27992:37;;;;:::i;:::-;27972:16;;:57;;;;;;;:::i;:::-;;;;-1:-1:-1;;28101:12:0;;28080:17;;28073:24;;:4;:24;:::i;:::-;28072:41;;;;:::i;:::-;28048:20;;:65;;;;;;;:::i;:::-;;;;-1:-1:-1;27748:1096:0;;-1:-1:-1;27748:1096:0;;-1:-1:-1;;;;;28139:36:0;;;;;;:25;:36;;;;;;;;:57;;;;;28195:1;28179:13;;:17;28139:57;28135:709;;;21525:5;28234:13;;28225:6;:22;;;;:::i;:::-;28224:41;;;;:::i;:::-;28217:48;;28334:13;;28314:16;;28307:4;:23;;;;:::i;:::-;28306:41;;;;:::i;:::-;28284:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;28412:13:0;;28394:14;;28387:21;;:4;:21;:::i;:::-;28386:39;;;;:::i;:::-;28366:16;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;28498:13:0;;28476:18;;28469:25;;:4;:25;:::i;28135:709::-;28552:29;28599:13;;28584:12;;:28;:67;;28650:1;28634:13;;:17;;;;:::i;:::-;28584:67;;;28630:1;28615:12;;:16;;;;:::i;:::-;28552:99;-1:-1:-1;21525:5:0;28678:30;28552:99;28678:6;:30;:::i;:::-;28677:49;;;;:::i;:::-;28670:56;-1:-1:-1;28766:8:0;28773:1;28670:56;28766:8;:::i;:::-;28745:16;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;28819:8:0;;-1:-1:-1;28826:1:0;28819:4;:8;:::i;:::-;28794:20;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;;28135:709:0;28860:38;28870:6;28886:4;28893;28860:9;:38::i;:::-;28913:14;28923:4;28913:14;;:::i;:::-;;;27714:1225;28951:36;28961:6;28969:9;28980:6;28951:9;:36::i;:::-;-1:-1:-1;29007:4:0;;26868:2151;-1:-1:-1;;;;;26868:2151:0:o;29754:186::-;-1:-1:-1;;;;;29837:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;29837:39:0;;;;;;;;;;29892:40;;29837:39;;:31;29892:40;;;29754:186;;:::o;19702:191::-;19795:6;;;-1:-1:-1;;;;;19812:17:0;;;-1:-1:-1;;;;;;19812:17:0;;;;;;;19845:40;;19795:6;;;19812:17;19795:6;;19845:40;;19776:16;;19845:40;19765:128;19702:191;:::o;11760:806::-;-1:-1:-1;;;;;11857:18:0;;11849:68;;;;-1:-1:-1;;;11849:68:0;;12913:2:1;11849:68:0;;;12895:21:1;12952:2;12932:18;;;12925:30;12991:34;12971:18;;;12964:62;-1:-1:-1;;;13042:18:1;;;13035:35;13087:19;;11849:68:0;12711:401:1;11849:68:0;-1:-1:-1;;;;;11936:16:0;;11928:64;;;;-1:-1:-1;;;11928:64:0;;13319:2:1;11928:64:0;;;13301:21:1;13358:2;13338:18;;;13331:30;13397:34;13377:18;;;13370:62;-1:-1:-1;;;13448:18:1;;;13441:33;13491:19;;11928:64:0;13117:399:1;11928:64:0;-1:-1:-1;;;;;12078:15:0;;12056:19;12078:15;;;;;;;;;;;12112:21;;;;12104:72;;;;-1:-1:-1;;;12104:72:0;;13723:2:1;12104:72:0;;;13705:21:1;13762:2;13742:18;;;13735:30;13801:34;13781:18;;;13774:62;-1:-1:-1;;;13852:18:1;;;13845:36;13898:19;;12104:72:0;13521:402:1;12104:72:0;-1:-1:-1;;;;;12212:15:0;;;:9;:15;;;;;;;;;;;12230:20;;;12212:38;;12430:13;;;;;;;;;;:23;;;;;;12482:26;;1731:25:1;;;12430:13:0;;12482:26;;1704:18:1;12482:26:0;;;;;;;12521:37;16503:91;29027:621;29075:48;29093:4;20689:42;29106:16;;29075:9;:48::i;:::-;29159:15;;29176:18;;29134:61;;29152:4;;-1:-1:-1;;;;;29159:15:0;;;;29134:9;:61::i;:::-;29231:17;;29250:20;;29206:65;;29224:4;;-1:-1:-1;;;;;29231:17:0;;;;29206:9;:65::i;:::-;29306:16;;29324:18;;29344:20;;29289:76;;;14130:25:1;;;14186:2;14171:18;;14164:34;;;;14214:18;;;14207:34;29289:76:0;;;;;;14118:2:1;29289:76:0;;;29397:1;29378:16;:20;;;29409:18;:22;;;29442:20;:24;29483:21;:25;29479:162;;29574:15;;29566:63;;29525:12;;-1:-1:-1;;;;;29574:15:0;;29603:21;;29525:12;29566:63;29525:12;29566:63;29603:21;29574:15;29566:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:597:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:316::-;1341:6;1349;1357;1410:2;1398:9;1389:7;1385:23;1381:32;1378:52;;;1426:1;1423;1416:12;1378:52;-1:-1:-1;;1449:23:1;;;1519:2;1504:18;;1491:32;;-1:-1:-1;1570:2:1;1555:18;;;1542:32;;1264:316;-1:-1:-1;1264:316:1:o;1767:456::-;1844:6;1852;1860;1913:2;1901:9;1892:7;1888:23;1884:32;1881:52;;;1929:1;1926;1919:12;1881:52;1968:9;1955:23;1987:31;2012:5;1987:31;:::i;:::-;2037:5;-1:-1:-1;2094:2:1;2079:18;;2066:32;2107:33;2066:32;2107:33;:::i;:::-;1767:456;;2159:7;;-1:-1:-1;;;2213:2:1;2198:18;;;;2185:32;;1767:456::o;2228:247::-;2287:6;2340:2;2328:9;2319:7;2315:23;2311:32;2308:52;;;2356:1;2353;2346:12;2308:52;2395:9;2382:23;2414:31;2439:5;2414:31;:::i;2669:160::-;2734:20;;2790:13;;2783:21;2773:32;;2763:60;;2819:1;2816;2809:12;2834:248;2899:6;2907;2960:2;2948:9;2939:7;2935:23;2931:32;2928:52;;;2976:1;2973;2966:12;2928:52;2999:26;3015:9;2999:26;:::i;3087:591::-;3157:6;3165;3218:2;3206:9;3197:7;3193:23;3189:32;3186:52;;;3234:1;3231;3224:12;3186:52;3274:9;3261:23;3303:18;3344:2;3336:6;3333:14;3330:34;;;3360:1;3357;3350:12;3330:34;3398:6;3387:9;3383:22;3373:32;;3443:7;3436:4;3432:2;3428:13;3424:27;3414:55;;3465:1;3462;3455:12;3414:55;3505:2;3492:16;3531:2;3523:6;3520:14;3517:34;;;3547:1;3544;3537:12;3517:34;3592:7;3587:2;3578:6;3574:2;3570:15;3566:24;3563:37;3560:57;;;3613:1;3610;3603:12;3560:57;3644:2;3636:11;;;;;3666:6;;-1:-1:-1;3087:591:1;;-1:-1:-1;;;;3087:591:1:o;3891:180::-;3950:6;4003:2;3991:9;3982:7;3978:23;3974:32;3971:52;;;4019:1;4016;4009:12;3971:52;-1:-1:-1;4042:23:1;;3891:180;-1:-1:-1;3891:180:1:o;4076:315::-;4141:6;4149;4202:2;4190:9;4181:7;4177:23;4173:32;4170:52;;;4218:1;4215;4208:12;4170:52;4257:9;4244:23;4276:31;4301:5;4276:31;:::i;:::-;4326:5;-1:-1:-1;4350:35:1;4381:2;4366:18;;4350:35;:::i;:::-;4340:45;;4076:315;;;;;:::o;4396:388::-;4464:6;4472;4525:2;4513:9;4504:7;4500:23;4496:32;4493:52;;;4541:1;4538;4531:12;4493:52;4580:9;4567:23;4599:31;4624:5;4599:31;:::i;:::-;4649:5;-1:-1:-1;4706:2:1;4691:18;;4678:32;4719:33;4678:32;4719:33;:::i;:::-;4771:7;4761:17;;;4396:388;;;;;:::o;5134:380::-;5213:1;5209:12;;;;5256;;;5277:61;;5331:4;5323:6;5319:17;5309:27;;5277:61;5384:2;5376:6;5373:14;5353:18;5350:38;5347:161;;;5430:10;5425:3;5421:20;5418:1;5411:31;5465:4;5462:1;5455:15;5493:4;5490:1;5483:15;5347:161;;5134:380;;;:::o;5519:127::-;5580:10;5575:3;5571:20;5568:1;5561:31;5611:4;5608:1;5601:15;5635:4;5632:1;5625:15;5651:128;5691:3;5722:1;5718:6;5715:1;5712:13;5709:39;;;5728:18;;:::i;:::-;-1:-1:-1;5764:9:1;;5651:128::o;6134:405::-;6336:2;6318:21;;;6375:2;6355:18;;;6348:30;6414:34;6409:2;6394:18;;6387:62;-1:-1:-1;;;6480:2:1;6465:18;;6458:39;6529:3;6514:19;;6134:405::o;6544:125::-;6584:4;6612:1;6609;6606:8;6603:34;;;6617:18;;:::i;:::-;-1:-1:-1;6654:9:1;;6544:125::o;6674:168::-;6714:7;6780:1;6776;6772:6;6768:14;6765:1;6762:21;6757:1;6750:9;6743:17;6739:45;6736:71;;;6787:18;;:::i;:::-;-1:-1:-1;6827:9:1;;6674:168::o;6847:217::-;6887:1;6913;6903:132;;6957:10;6952:3;6948:20;6945:1;6938:31;6992:4;6989:1;6982:15;7020:4;7017:1;7010:15;6903:132;-1:-1:-1;7049:9:1;;6847:217::o;8108:388::-;8265:2;8254:9;8247:21;8304:6;8299:2;8288:9;8284:18;8277:34;8361:6;8353;8348:2;8337:9;8333:18;8320:48;8417:1;8388:22;;;8412:2;8384:31;;;8377:42;;;;8480:2;8459:15;;;-1:-1:-1;;8455:29:1;8440:45;8436:54;;8108:388;-1:-1:-1;8108:388:1:o;8501:251::-;8571:6;8624:2;8612:9;8603:7;8599:23;8595:32;8592:52;;;8640:1;8637;8630:12;8592:52;8672:9;8666:16;8691:31;8716:5;8691:31;:::i

Swarm Source

ipfs://a16a2024efc9cf1ec1163e79d17290ce3e7539c395602abb3f91f75835940e06
[ 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.