ETH Price: $2,136.63 (+0.05%)

Contract

0x2Ee5Cc4CE0c744E2c72cE3e87Ad0F92Ffe3d932e
 

Overview

ETH Balance

1 wei

Eth Value

Less Than $0.01 (@ $2,136.63/ETH)

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer181518652023-09-16 23:12:11919 days ago1694905931IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.000511118.61221106
Approve181498762023-09-16 16:27:23919 days ago1694881643IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0007544416.02848779
Approve181498322023-09-16 16:18:11920 days ago1694881091IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0007976917.0559698
Approve181498252023-09-16 16:16:47920 days ago1694881007IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0009332819.82798261
Approve181498222023-09-16 16:16:11920 days ago1694880971IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0008083117.28305904
Remove Limits181498142023-09-16 16:14:35920 days ago1694880875IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0005008516.84838714
Approve181497952023-09-16 16:10:47920 days ago1694880647IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0012844827.29629081
Approve181497942023-09-16 16:10:35920 days ago1694880635IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.00294162.4829269
Approve181497902023-09-16 16:09:47920 days ago1694880587IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0006630814.08758646
Approve181497882023-09-16 16:09:23920 days ago1694880563IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.000702714.93308277
Approve181497882023-09-16 16:09:23920 days ago1694880563IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.000702714.93308277
Approve181497882023-09-16 16:09:23920 days ago1694880563IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.000702714.93308277
Approve181497882023-09-16 16:09:23920 days ago1694880563IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0007499515.93308277
Approve181497882023-09-16 16:09:23920 days ago1694880563IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0007499515.93308277
Approve181497882023-09-16 16:09:23920 days ago1694880563IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0007499515.93308277
Approve181497882023-09-16 16:09:23920 days ago1694880563IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0008438717.93308277
Approve181497882023-09-16 16:09:23920 days ago1694880563IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0008438717.93308277
Approve181497882023-09-16 16:09:23920 days ago1694880563IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0008438717.93308277
Approve181497882023-09-16 16:09:23920 days ago1694880563IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0008438717.93308277
Approve181497882023-09-16 16:09:23920 days ago1694880563IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0008438717.93308277
Approve181497882023-09-16 16:09:23920 days ago1694880563IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0008438717.93308277
Approve181497882023-09-16 16:09:23920 days ago1694880563IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0008438717.93308277
Approve181497882023-09-16 16:09:23920 days ago1694880563IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0010791622.93308277
Approve181497882023-09-16 16:09:23920 days ago1694880563IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0010791622.93308277
Approve181497882023-09-16 16:09:23920 days ago1694880563IN
0x2Ee5Cc4C...Ffe3d932e
0 ETH0.0010791622.93308277
View all transactions

Latest 22 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Add Liquidity ET...181498272023-09-16 16:17:11920 days ago1694881031
0x2Ee5Cc4C...Ffe3d932e
0 ETH
Transfer181498272023-09-16 16:17:11920 days ago1694881031
0x2Ee5Cc4C...Ffe3d932e
0 ETH
Transfer181498132023-09-16 16:14:23920 days ago1694880863
0x2Ee5Cc4C...Ffe3d932e
0.01210072 ETH
Transfer181498132023-09-16 16:14:23920 days ago1694880863
0x2Ee5Cc4C...Ffe3d932e
0.02420145 ETH
Transfer181498132023-09-16 16:14:23920 days ago1694880863
0x2Ee5Cc4C...Ffe3d932e
0.03630218 ETH
Add Liquidity ET...181498132023-09-16 16:14:23920 days ago1694880863
0x2Ee5Cc4C...Ffe3d932e
0.01217612 ETH
Transfer181498132023-09-16 16:14:23920 days ago1694880863
0x2Ee5Cc4C...Ffe3d932e
0.01217612 ETH
Transfer181498132023-09-16 16:14:23920 days ago1694880863
0x2Ee5Cc4C...Ffe3d932e
0.01241514 ETH
Transfer181498132023-09-16 16:14:23920 days ago1694880863
0x2Ee5Cc4C...Ffe3d932e
0.02483028 ETH
Transfer181498132023-09-16 16:14:23920 days ago1694880863
0x2Ee5Cc4C...Ffe3d932e
0.03724542 ETH
Add Liquidity ET...181498132023-09-16 16:14:23920 days ago1694880863
0x2Ee5Cc4C...Ffe3d932e
0.01249362 ETH
Transfer181498132023-09-16 16:14:23920 days ago1694880863
0x2Ee5Cc4C...Ffe3d932e
0.01249362 ETH
Transfer181498112023-09-16 16:13:59920 days ago1694880839
0x2Ee5Cc4C...Ffe3d932e
0.01303445 ETH
Transfer181498112023-09-16 16:13:59920 days ago1694880839
0x2Ee5Cc4C...Ffe3d932e
0.0260689 ETH
Transfer181498112023-09-16 16:13:59920 days ago1694880839
0x2Ee5Cc4C...Ffe3d932e
0.03910335 ETH
Add Liquidity ET...181498112023-09-16 16:13:59920 days ago1694880839
0x2Ee5Cc4C...Ffe3d932e
0.01311902 ETH
Transfer181498112023-09-16 16:13:59920 days ago1694880839
0x2Ee5Cc4C...Ffe3d932e
0.01311902 ETH
Transfer181498012023-09-16 16:11:59920 days ago1694880719
0x2Ee5Cc4C...Ffe3d932e
0.01318984 ETH
Transfer181498012023-09-16 16:11:59920 days ago1694880719
0x2Ee5Cc4C...Ffe3d932e
0.02637968 ETH
Transfer181498012023-09-16 16:11:59920 days ago1694880719
0x2Ee5Cc4C...Ffe3d932e
0.03956952 ETH
Add Liquidity ET...181498012023-09-16 16:11:59920 days ago1694880719
0x2Ee5Cc4C...Ffe3d932e
0.01327608 ETH
Transfer181498012023-09-16 16:11:59920 days ago1694880719
0x2Ee5Cc4C...Ffe3d932e
0.01327608 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MegumiFinance

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-09-16
*/

// website  : https://megumi.finance
// (X)      : https://twitter.com/MegumiERC
// telegram : https://t.me/Megumi_ERC
// Medium   : https://medium.com/@MegumiERC
// Docs     : https://docs.megumi.finance


// SPDX-License-Identifier: MIT

// File @openzeppelin/contracts/utils/Context.sol@v4.9.3

// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

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


// File @openzeppelin/contracts/access/Ownable.sol@v4.9.3

// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

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

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

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


// File @openzeppelin/contracts/token/ERC20/IERC20.sol@v4.9.3

// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

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

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

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

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

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


// File contracts/IUniswap.sol

// Original license: SPDX_License_Identifier: MIT
pragma solidity ^0.8.0;

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

    function token0() external view returns (address);

    function sync() external;
}

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

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

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

    function WETH() external pure returns (address);

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

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

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

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

pragma solidity 0.8.21;

abstract contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor(
        string memory _tokenName,
        string memory _tokenSymbol,
        uint8 _tokenDecimals
    ) {
        _name = _tokenName;
        _symbol = _tokenSymbol;
        _decimals = _tokenDecimals;
    }

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

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

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

contract MegumiFinance is ERC20Detailed, Ownable {
    uint256 public rebaseFrequency = 30 minutes;
    uint256 public nextRebase;
    uint256 public lastRebase;
    uint256 public finalEpoch = 336;
    uint256 public currentEpoch;

    bool public autoRebase;

    uint256 public maxAmount;
    uint256 public maxWallet;

    address public taxWallet;
    address public stakingAdress;

    uint256 public feeToLp = 2;
    uint256 public feeToStake = 2;
    uint256 public feeToMarketing = 1;
    uint256 public finalTax = feeToLp + feeToStake + feeToMarketing;

    uint256 private _initialTax = 25;
    uint256 private _reduceTaxAt = 30;

    uint256 private _buyCount = 0;
    uint256 private _sellCount = 0;

    uint8 private constant DECIMALS = 9;
    uint256 private constant INITIAL_TOKENS_SUPPLY =
        100_000_000 * 10 ** DECIMALS;

    uint256 private constant TOTAL_PARTS =
        type(uint256).max - (type(uint256).max % INITIAL_TOKENS_SUPPLY);

    event Rebase(uint256 indexed time, uint256 totalSupply);
    event RemovedLimits();

    IUniswapRouter public router;
    address public pair;

    bool public limitsInEffect = true;
    bool public tradingEnable = false;

    uint256 private _totalSupply;
    uint256 private _partsPerToken;

    uint256 private swapTokenAtAmount = INITIAL_TOKENS_SUPPLY / 200;

    mapping(address => uint256) private _partBalances;
    mapping(address => mapping(address => uint256)) private _allowedTokens;
    mapping(address => bool) public isExcludedFromFees;

    modifier validRecipient(address to) {
        require(to != address(0x0));
        _;
    }

    bool inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor(
        address _stakingAdress
    ) ERC20Detailed("Megumi Finance", "MEGU", DECIMALS) {
        taxWallet = msg.sender;

        router = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _totalSupply = INITIAL_TOKENS_SUPPLY;
        _partBalances[msg.sender] = TOTAL_PARTS;
        _partsPerToken = TOTAL_PARTS / (_totalSupply);

        maxAmount = (_totalSupply * 2) / 100;
        maxWallet = (_totalSupply * 2) / 100;

        pair = IFactory(router.factory()).createPair(
            address(this),
            router.WETH()
        );

        stakingAdress = _stakingAdress;

        isExcludedFromFees[address(this)] = true;
        isExcludedFromFees[_stakingAdress] = true;
        isExcludedFromFees[address(router)] = true;
        isExcludedFromFees[msg.sender] = true;
        isExcludedFromFees[_stakingAdress] = true;

        _allowedTokens[address(this)][address(router)] = type(uint256).max;
        _allowedTokens[address(this)][address(this)] = type(uint256).max;
        _allowedTokens[address(msg.sender)][address(router)] = type(uint256)
            .max;

        emit Transfer(
            address(0x0),
            address(msg.sender),
            balanceOf(address(this))
        );
    }

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

    function allowance(
        address owner_,
        address spender
    ) external view override returns (uint256) {
        return _allowedTokens[owner_][spender];
    }

    function balanceOf(address who) public view override returns (uint256) {
        return _partBalances[who] / (_partsPerToken);
    }

    function shouldRebase() public view returns (bool) {
        return
            currentEpoch < finalEpoch &&
            nextRebase > 0 &&
            nextRebase <= block.timestamp &&
            autoRebase;
    }

    function lpSync() internal {
        IPair _pair = IPair(pair);
        _pair.sync();
    }

    function transfer(
        address to,
        uint256 value
    ) external override validRecipient(to) returns (bool) {
        _transferFrom(msg.sender, to, value);
        return true;
    }

    function removeLimits() external onlyOwner {
        require(limitsInEffect, "Limits already removed");
        limitsInEffect = false;
        emit RemovedLimits();
    }

    function excludedFromFees(
        address _address,
        bool _value
    ) external onlyOwner {
        isExcludedFromFees[_address] = _value;
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        address pairAddress = pair;

        if (
            !inSwap &&
            !isExcludedFromFees[sender] &&
            !isExcludedFromFees[recipient]
        ) {
            require(tradingEnable, "Trading not live");
            if (limitsInEffect) {
                if (sender == pairAddress || recipient == pairAddress) {
                    require(amount <= maxAmount, "Max Tx Exceeded");
                }
                if (recipient != pairAddress) {
                    require(
                        balanceOf(recipient) + amount <= maxWallet,
                        "Max Wallet Exceeded"
                    );
                }
            }

            if (recipient == pairAddress) {
                if (balanceOf(address(this)) >= swapTokenAtAmount) {
                    swapBack();
                }
                if (shouldRebase()) {
                    rebase();
                }
            }

            uint256 taxAmount;

            if (sender == pairAddress) {
                _buyCount += 1;
                taxAmount =
                    (amount *
                        (_buyCount > _reduceTaxAt ? finalTax : _initialTax)) /
                    100;
            } else if (recipient == pairAddress) {
                _sellCount += 1;
                taxAmount =
                    (amount *
                        (_sellCount > _reduceTaxAt ? finalTax : _initialTax)) /
                    100;
            }

            if (taxAmount > 0) {
                _partBalances[sender] -= (taxAmount * _partsPerToken);
                _partBalances[address(this)] += (taxAmount * _partsPerToken);

                emit Transfer(sender, address(this), taxAmount);
                amount -= taxAmount;
            }
        }

        _partBalances[sender] -= (amount * _partsPerToken);
        _partBalances[recipient] += (amount * _partsPerToken);

        emit Transfer(sender, recipient, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external override validRecipient(to) returns (bool) {
        if (_allowedTokens[from][msg.sender] != type(uint256).max) {
            require(
                _allowedTokens[from][msg.sender] >= value,
                "Insufficient Allowance"
            );
            _allowedTokens[from][msg.sender] =
                _allowedTokens[from][msg.sender] -
                (value);
        }
        _transferFrom(from, to, value);
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) external returns (bool) {
        uint256 oldValue = _allowedTokens[msg.sender][spender];
        if (subtractedValue >= oldValue) {
            _allowedTokens[msg.sender][spender] = 0;
        } else {
            _allowedTokens[msg.sender][spender] = oldValue - (subtractedValue);
        }
        emit Approval(msg.sender, spender, _allowedTokens[msg.sender][spender]);
        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) external returns (bool) {
        _allowedTokens[msg.sender][spender] =
            _allowedTokens[msg.sender][spender] +
            (addedValue);
        emit Approval(msg.sender, spender, _allowedTokens[msg.sender][spender]);
        return true;
    }

    function approve(
        address spender,
        uint256 value
    ) public override returns (bool) {
        _allowedTokens[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    function rebase() internal returns (uint256) {
        uint256 times = (block.timestamp - lastRebase) / rebaseFrequency;

        lastRebase = block.timestamp;
        nextRebase = block.timestamp + rebaseFrequency;

        if (times + currentEpoch > finalEpoch) {
            times = finalEpoch - currentEpoch;
        }

        currentEpoch += times;

        uint256 supplyDelta = (_totalSupply * times * 68764) / 10 ** 7;

        if (supplyDelta == 0) {
            emit Rebase(block.timestamp, _totalSupply);
            return _totalSupply;
        }

        _totalSupply = _totalSupply + supplyDelta;

        _partsPerToken = TOTAL_PARTS / (_totalSupply);

        if (currentEpoch >= finalEpoch) {
            autoRebase = false;
            nextRebase = 0;
            feeToLp = 0;
            finalTax = feeToStake + feeToMarketing;
        }

        lpSync();

        emit Rebase(block.timestamp, _totalSupply);

        return _totalSupply;
    }

    function manualRebase() external {
        require(shouldRebase(), "Not in time");
        rebase();
    }

    function enableTrading() external onlyOwner {
        require(!tradingEnable, "Trading Live Already");
        tradingEnable = true;
    }

    function startRebase() external onlyOwner {
        require(currentEpoch == 0 && !autoRebase, "already started");
        autoRebase = true;
        nextRebase = block.timestamp + rebaseFrequency;
        lastRebase = block.timestamp;
    }

    function swapBack() public swapping {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) {
            return;
        }

        if (contractBalance > swapTokenAtAmount) {
            contractBalance = swapTokenAtAmount;
        }

        uint256 amountToSwap = (contractBalance *
            (feeToStake + feeToMarketing)) / finalTax;
        uint256 amountToLp = (contractBalance * feeToLp) / finalTax;

        _swapAndAddliquidity(amountToLp);

        _swapTokensForETH(amountToSwap);

        uint256 ethToStake = (address(this).balance * feeToStake) /
            (feeToStake + feeToMarketing);
        uint256 ethTomarketing = (address(this).balance * feeToMarketing) /
            (feeToStake + feeToMarketing);

        if (ethToStake > 0) {
            (bool success, ) = payable(stakingAdress).call{value: ethToStake}(
                ""
            );
            require(success, "Failed to send ETH to dev wallet");
        }

        if (ethTomarketing > 0) {
            (bool success, ) = payable(taxWallet).call{value: ethTomarketing}(
                ""
            );
            require(success, "Failed to send ETH to dev wallet");
        }
    }

    function _swapTokensForETH(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _swapAndAddliquidity(uint256 amount) internal {
        if (amount > 0) {
            uint256 half = amount / 2;
            uint256 otherHalf = amount - half;

            uint256 initialBalance = address(this).balance;

            _swapTokensForETH(half);

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

            router.addLiquidityETH{value: newBalance}(
                address(this),
                otherHalf,
                0,
                0,
                taxWallet,
                block.timestamp
            );
        }
    }

    function setStakingAdress(address _stakingAdress) external onlyOwner {
        stakingAdress = _stakingAdress;
    }

    function setSwapAtAmount(uint256 _amount) external onlyOwner {
        swapTokenAtAmount = _amount;
    }

    function fetchBalances(address[] memory wallets) external {
        address wallet;
        for (uint256 i = 0; i < wallets.length; i++) {
            wallet = wallets[i];
            emit Transfer(wallet, wallet, 0);
        }
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_stakingAdress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"time","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"Rebase","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoRebase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"excludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeToLp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeToMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeToStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}],"name":"fetchBalances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finalEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextRebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebaseFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_stakingAdress","type":"address"}],"name":"setStakingAdress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shouldRebase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingAdress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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"}]

60806040526107086003556101506006556002600d556002600e556001600f55600f54600e54600d5462000034919062000be4565b62000040919062000be4565b6010556019601155601e6012555f6013555f6014556001601660146101000a81548160ff0219169083151502179055505f601660156101000a81548160ff02191690831515021790555060c86009600a6200009c919062000d7a565b6305f5e100620000ad919062000dca565b620000b9919062000e41565b601955348015620000c8575f80fd5b5060405162004d6c38038062004d6c8339818101604052810190620000ee919062000edd565b6040518060400160405280600e81526020017f4d6567756d692046696e616e63650000000000000000000000000000000000008152506040518060400160405280600481526020017f4d454755000000000000000000000000000000000000000000000000000000008152506009825f90816200016c919062001168565b5081600190816200017e919062001168565b508060025f6101000a81548160ff021916908360ff160217905550505050620001bc620001b062000a8d60201b60201c565b62000a9460201b60201c565b33600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000260919062000d7a565b6305f5e10062000271919062000dca565b6017819055506009600a62000287919062000d7a565b6305f5e10062000298919062000dca565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620002c591906200124c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620002f2919062001283565b601a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506017546009600a62000346919062000d7a565b6305f5e10062000357919062000dca565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200038491906200124c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620003b1919062001283565b620003bd919062000e41565b60188190555060646002601754620003d6919062000dca565b620003e2919062000e41565b60098190555060646002601754620003fb919062000dca565b62000407919062000e41565b600a8190555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000478573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200049e919062000edd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000525573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200054b919062000edd565b6040518363ffffffff1660e01b81526004016200056a929190620012ce565b6020604051808303815f875af115801562000587573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005ad919062000edd565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601c5f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef62000a6f3062000b5960201b60201c565b60405162000a7e91906200130a565b60405180910390a35062001325565b5f33905090565b5f600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f601854601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205462000ba7919062000e41565b9050919050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000bf08262000bae565b915062000bfd8362000bae565b925082820190508082111562000c185762000c1762000bb7565b5b92915050565b5f8160011c9050919050565b5f808291508390505b600185111562000c7b5780860481111562000c535762000c5262000bb7565b5b600185161562000c635780820291505b808102905062000c738562000c1e565b945062000c33565b94509492505050565b5f8262000c95576001905062000d67565b8162000ca4575f905062000d67565b816001811462000cbd576002811462000cc85762000cfe565b600191505062000d67565b60ff84111562000cdd5762000cdc62000bb7565b5b8360020a91508482111562000cf75762000cf662000bb7565b5b5062000d67565b5060208310610133831016604e8410600b841016171562000d385782820a90508381111562000d325762000d3162000bb7565b5b62000d67565b62000d47848484600162000c2a565b9250905081840481111562000d615762000d6062000bb7565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000d868262000bae565b915062000d938362000d6e565b925062000dc27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c84565b905092915050565b5f62000dd68262000bae565b915062000de38362000bae565b925082820262000df38162000bae565b9150828204841483151762000e0d5762000e0c62000bb7565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000e4d8262000bae565b915062000e5a8362000bae565b92508262000e6d5762000e6c62000e14565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000ea78262000e7c565b9050919050565b62000eb98162000e9b565b811462000ec4575f80fd5b50565b5f8151905062000ed78162000eae565b92915050565b5f6020828403121562000ef55762000ef462000e78565b5b5f62000f048482850162000ec7565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000f8957607f821691505b60208210810362000f9f5762000f9e62000f44565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620010037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000fc6565b6200100f868362000fc6565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620010506200104a620010448462000bae565b62001027565b62000bae565b9050919050565b5f819050919050565b6200106b8362001030565b620010836200107a8262001057565b84845462000fd2565b825550505050565b5f90565b620010996200108b565b620010a681848462001060565b505050565b5b81811015620010cd57620010c15f826200108f565b600181019050620010ac565b5050565b601f8211156200111c57620010e68162000fa5565b620010f18462000fb7565b8101602085101562001101578190505b62001119620011108562000fb7565b830182620010ab565b50505b505050565b5f82821c905092915050565b5f6200113e5f198460080262001121565b1980831691505092915050565b5f6200115883836200112d565b9150826002028217905092915050565b620011738262000f0d565b67ffffffffffffffff8111156200118f576200118e62000f17565b5b6200119b825462000f71565b620011a8828285620010d1565b5f60209050601f831160018114620011de575f8415620011c9578287015190505b620011d585826200114b565b86555062001244565b601f198416620011ee8662000fa5565b5f5b828110156200121757848901518255600182019150602085019450602081019050620011f0565b8683101562001237578489015162001233601f8916826200112d565b8355505b6001600288020188555050505b505050505050565b5f620012588262000bae565b9150620012658362000bae565b92508262001278576200127762000e14565b5b828206905092915050565b5f6200128f8262000bae565b91506200129c8362000bae565b9250828203905081811115620012b757620012b662000bb7565b5b92915050565b620012c88162000e9b565b82525050565b5f604082019050620012e35f830185620012bd565b620012f26020830184620012bd565b9392505050565b620013048162000bae565b82525050565b5f6020820190506200131f5f830184620012f9565b92915050565b613a3980620013335f395ff3fe60806040526004361061025f575f3560e01c8063706f86e911610143578063a457c2d7116100b5578063bf64c7aa11610079578063bf64c7aa1461087e578063dd62ed3e146108a6578063e30d7cab146108e2578063f2fde38b1461090a578063f887ea4014610932578063f8b45b051461095c57610266565b8063a457c2d714610788578063a5fc4fdd146107c4578063a8aa1b31146107ee578063a9059cbb14610818578063bc7e68a31461085457610266565b806378f353a11161010757806378f353a1146106a057806389375abf146106ca5780638a8c523c146106f45780638da5cb5b1461070a5780639079f9321461073457806395d89b411461075e57610266565b8063706f86e9146105f857806370a082311461060e578063715018a61461064a578063751039fc14610660578063766718081461067657610266565b80633a98d88e116101dc5780635ad27d77116101a05780635ad27d77146105265780635f48f3931461055057806361a9d1b11461057a57806363eab10a146105905780636402511e146105ba5780636ac5eeee146105e257610266565b80633a98d88e146104425780634a62bb651461046c5780634dd7c8bf146104965780634fbee193146104c057806350f8f613146104fc57610266565b806323b872dd1161022357806323b872dd1461034c5780632617cc0e146103885780632dc0562d146103b2578063313ce567146103dc578063395093511461040657610266565b806306fdde031461026a578063095ea7b31461029457806316697fc5146102d05780631693e8d4146102f857806318160ddd1461032257610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e610986565b60405161028b9190612a1c565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190612ada565b610a15565b6040516102c79190612b32565b60405180910390f35b3480156102db575f80fd5b506102f660048036038101906102f19190612b75565b610b02565b005b348015610303575f80fd5b5061030c610b62565b6040516103199190612b32565b60405180910390f35b34801561032d575f80fd5b50610336610b75565b6040516103439190612bc2565b60405180910390f35b348015610357575f80fd5b50610372600480360381019061036d9190612bdb565b610b7e565b60405161037f9190612b32565b60405180910390f35b348015610393575f80fd5b5061039c610e2a565b6040516103a99190612bc2565b60405180910390f35b3480156103bd575f80fd5b506103c6610e30565b6040516103d39190612c3a565b60405180910390f35b3480156103e7575f80fd5b506103f0610e55565b6040516103fd9190612c6e565b60405180910390f35b348015610411575f80fd5b5061042c60048036038101906104279190612ada565b610e6a565b6040516104399190612b32565b60405180910390f35b34801561044d575f80fd5b50610456611052565b6040516104639190612bc2565b60405180910390f35b348015610477575f80fd5b50610480611058565b60405161048d9190612b32565b60405180910390f35b3480156104a1575f80fd5b506104aa61106b565b6040516104b79190612bc2565b60405180910390f35b3480156104cb575f80fd5b506104e660048036038101906104e19190612c87565b611071565b6040516104f39190612b32565b60405180910390f35b348015610507575f80fd5b5061051061108e565b60405161051d9190612bc2565b60405180910390f35b348015610531575f80fd5b5061053a611094565b6040516105479190612bc2565b60405180910390f35b34801561055b575f80fd5b5061056461109a565b6040516105719190612bc2565b60405180910390f35b348015610585575f80fd5b5061058e6110a0565b005b34801561059b575f80fd5b506105a46110f2565b6040516105b19190612b32565b60405180910390f35b3480156105c5575f80fd5b506105e060048036038101906105db9190612cb2565b611131565b005b3480156105ed575f80fd5b506105f6611143565b005b348015610603575f80fd5b5061060c6113fe565b005b348015610619575f80fd5b50610634600480360381019061062f9190612c87565b611499565b6040516106419190612bc2565b60405180910390f35b348015610655575f80fd5b5061065e6114ec565b005b34801561066b575f80fd5b506106746114ff565b005b348015610681575f80fd5b5061068a61159e565b6040516106979190612bc2565b60405180910390f35b3480156106ab575f80fd5b506106b46115a4565b6040516106c19190612bc2565b60405180910390f35b3480156106d5575f80fd5b506106de6115aa565b6040516106eb9190612bc2565b60405180910390f35b3480156106ff575f80fd5b506107086115b0565b005b348015610715575f80fd5b5061071e611625565b60405161072b9190612c3a565b60405180910390f35b34801561073f575f80fd5b5061074861164e565b6040516107559190612b32565b60405180910390f35b348015610769575f80fd5b50610772611660565b60405161077f9190612a1c565b60405180910390f35b348015610793575f80fd5b506107ae60048036038101906107a99190612ada565b6116f0565b6040516107bb9190612b32565b60405180910390f35b3480156107cf575f80fd5b506107d8611967565b6040516107e59190612c3a565b60405180910390f35b3480156107f9575f80fd5b5061080261198c565b60405161080f9190612c3a565b60405180910390f35b348015610823575f80fd5b5061083e60048036038101906108399190612ada565b6119b1565b60405161084b9190612b32565b60405180910390f35b34801561085f575f80fd5b50610868611a01565b6040516108759190612bc2565b60405180910390f35b348015610889575f80fd5b506108a4600480360381019061089f9190612e1d565b611a07565b005b3480156108b1575f80fd5b506108cc60048036038101906108c79190612e64565b611ab0565b6040516108d99190612bc2565b60405180910390f35b3480156108ed575f80fd5b5061090860048036038101906109039190612c87565b611b32565b005b348015610915575f80fd5b50610930600480360381019061092b9190612c87565b611b7d565b005b34801561093d575f80fd5b50610946611bff565b6040516109539190612efd565b60405180910390f35b348015610967575f80fd5b50610970611c24565b60405161097d9190612bc2565b60405180910390f35b60605f805461099490612f43565b80601f01602080910402602001604051908101604052809291908181526020018280546109c090612f43565b8015610a0b5780601f106109e257610100808354040283529160200191610a0b565b820191905f5260205f20905b8154815290600101906020018083116109ee57829003601f168201915b5050505050905090565b5f81601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610af09190612bc2565b60405180910390a36001905092915050565b610b0a611c2a565b80601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601660159054906101000a900460ff1681565b5f601754905090565b5f825f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bb7575f80fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610e125782601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0890612fbd565b60405180910390fd5b82601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d959190613008565b601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610e1d858585611ca8565b5060019150509392505050565b600e5481565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60025f9054906101000a900460ff16905090565b5f81601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610eef919061303b565b601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516110409190612bc2565b60405180910390a36001905092915050565b60065481565b601660149054906101000a900460ff1681565b60105481565b601c602052805f5260405f205f915054906101000a900460ff1681565b600d5481565b600f5481565b60095481565b6110a86110f2565b6110e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110de906130b8565b60405180910390fd5b6110ef6122fe565b50565b5f60065460075410801561110757505f600454115b801561111557504260045411155b801561112c575060085f9054906101000a900460ff165b905090565b611139611c2a565b8060198190555050565b6001601d5f6101000a81548160ff0219169083151502179055505f61116730611499565b90505f810361117657506113e3565b6019548111156111865760195490505b5f601054600f54600e5461119a919061303b565b836111a591906130d6565b6111af9190613144565b90505f601054600d54846111c391906130d6565b6111cd9190613144565b90506111d881612524565b6111e182612639565b5f600f54600e546111f2919061303b565b600e544761120091906130d6565b61120a9190613144565b90505f600f54600e5461121d919061303b565b600f544761122b91906130d6565b6112359190613144565b90505f82111561130a575f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051611285906131a1565b5f6040518083038185875af1925050503d805f81146112bf576040519150601f19603f3d011682016040523d82523d5f602084013e6112c4565b606091505b5050905080611308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ff906131ff565b60405180910390fd5b505b5f8111156113dd575f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611358906131a1565b5f6040518083038185875af1925050503d805f8114611392576040519150601f19603f3d011682016040523d82523d5f602084013e611397565b606091505b50509050806113db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d2906131ff565b60405180910390fd5b505b50505050505b5f601d5f6101000a81548160ff021916908315150217905550565b611406611c2a565b5f600754148015611423575060085f9054906101000a900460ff16155b611462576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145990613267565b60405180910390fd5b600160085f6101000a81548160ff0219169083151502179055506003544261148a919061303b565b60048190555042600581905550565b5f601854601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114e59190613144565b9050919050565b6114f4611c2a565b6114fd5f612843565b565b611507611c2a565b601660149054906101000a900460ff16611556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154d906132cf565b60405180910390fd5b5f601660146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b60075481565b60055481565b60035481565b6115b8611c2a565b601660159054906101000a900460ff1615611608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ff90613337565b60405180910390fd5b6001601660156101000a81548160ff021916908315150217905550565b5f600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085f9054906101000a900460ff1681565b60606001805461166f90612f43565b80601f016020809104026020016040519081016040528092919081815260200182805461169b90612f43565b80156116e65780601f106116bd576101008083540402835291602001916116e6565b820191905f5260205f20905b8154815290600101906020018083116116c957829003601f168201915b5050505050905090565b5f80601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508083106117f6575f601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061187f565b82816118029190613008565b601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516119549190612bc2565b60405180910390a3600191505092915050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f825f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ea575f80fd5b6119f5338585611ca8565b50600191505092915050565b60045481565b5f805f90505b8251811015611aab57828181518110611a2957611a28613355565b5b602002602001015191508173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f604051611a9091906133bb565b60405180910390a38080611aa3906133d4565b915050611a0d565b505050565b5f601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611b3a611c2a565b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b85611c2a565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bea9061348b565b60405180910390fd5b611bfc81612843565b50565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b611c32612908565b73ffffffffffffffffffffffffffffffffffffffff16611c50611625565b73ffffffffffffffffffffffffffffffffffffffff1614611ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9d906134f3565b60405180910390fd5b565b5f8060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050601d5f9054906101000a900460ff16158015611d315750601c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d845750601c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121cd57601660159054906101000a900460ff16611dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcf9061355b565b60405180910390fd5b601660149054906101000a900460ff1615611f2a578073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611e5257508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611e9d57600954831115611e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e93906135c3565b60405180910390fd5b5b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611f2957600a5483611edd86611499565b611ee7919061303b565b1115611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f9061362b565b60405180910390fd5b5b5b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f8f57601954611f6930611499565b10611f7757611f76611143565b5b611f7f6110f2565b15611f8e57611f8c6122fe565b505b5b5f8173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361201157600160135f828254611fd5919061303b565b92505081905550606460125460135411611ff157601154611ff5565b6010545b8561200091906130d6565b61200a9190613144565b905061208f565b8173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361208e57600160145f828254612056919061303b565b9250508190555060646012546014541161207257601154612076565b6010545b8561208191906130d6565b61208b9190613144565b90505b5b5f8111156121cb57601854816120a591906130d6565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546120f09190613008565b925050819055506018548161210591906130d6565b601a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612150919061303b565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121b49190612bc2565b60405180910390a380846121c89190613008565b93505b505b601854836121db91906130d6565b601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546122269190613008565b925050819055506018548361223b91906130d6565b601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612286919061303b565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122ea9190612bc2565b60405180910390a360019150509392505050565b5f80600354600554426123119190613008565b61231b9190613144565b90504260058190555060035442612332919061303b565b60048190555060065460075482612349919061303b565b11156123625760075460065461235f9190613008565b90505b8060075f828254612373919061303b565b925050819055505f6298968062010c9c8360175461239191906130d6565b61239b91906130d6565b6123a59190613144565b90505f81036123f457427f11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a215116017546040516123e09190612bc2565b60405180910390a260175492505050612521565b80601754612402919061303b565b6017819055506017546009600a6124199190613778565b6305f5e10061242891906130d6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61245391906137c2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61247e9190613008565b6124889190613144565b601881905550600654600754106124d7575f60085f6101000a81548160ff0219169083151502179055505f6004819055505f600d81905550600f54600e546124d0919061303b565b6010819055505b6124df61290f565b427f11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a215116017546040516125119190612bc2565b60405180910390a2601754925050505b90565b5f811115612636575f60028261253a9190613144565b90505f81836125499190613008565b90505f47905061255883612639565b5f81476125659190613008565b905060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230865f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016125ed969594939291906137f2565b60606040518083038185885af1158015612609573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061262e9190613865565b505050505050505b50565b5f600267ffffffffffffffff81111561265557612654612ce1565b5b6040519080825280602002602001820160405280156126835781602001602082028036833780820191505090505b50905030815f8151811061269a57612699613355565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561273e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061276291906138c9565b8160018151811061277657612775613355565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016128129594939291906139ab565b5f604051808303815f87803b158015612829575f80fd5b505af115801561283b573d5f803e3d5ffd5b505050505050565b5f600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612979575f80fd5b505af115801561298b573d5f803e3d5ffd5b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156129c95780820151818401526020810190506129ae565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6129ee82612992565b6129f8818561299c565b9350612a088185602086016129ac565b612a11816129d4565b840191505092915050565b5f6020820190508181035f830152612a3481846129e4565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a7682612a4d565b9050919050565b612a8681612a6c565b8114612a90575f80fd5b50565b5f81359050612aa181612a7d565b92915050565b5f819050919050565b612ab981612aa7565b8114612ac3575f80fd5b50565b5f81359050612ad481612ab0565b92915050565b5f8060408385031215612af057612aef612a45565b5b5f612afd85828601612a93565b9250506020612b0e85828601612ac6565b9150509250929050565b5f8115159050919050565b612b2c81612b18565b82525050565b5f602082019050612b455f830184612b23565b92915050565b612b5481612b18565b8114612b5e575f80fd5b50565b5f81359050612b6f81612b4b565b92915050565b5f8060408385031215612b8b57612b8a612a45565b5b5f612b9885828601612a93565b9250506020612ba985828601612b61565b9150509250929050565b612bbc81612aa7565b82525050565b5f602082019050612bd55f830184612bb3565b92915050565b5f805f60608486031215612bf257612bf1612a45565b5b5f612bff86828701612a93565b9350506020612c1086828701612a93565b9250506040612c2186828701612ac6565b9150509250925092565b612c3481612a6c565b82525050565b5f602082019050612c4d5f830184612c2b565b92915050565b5f60ff82169050919050565b612c6881612c53565b82525050565b5f602082019050612c815f830184612c5f565b92915050565b5f60208284031215612c9c57612c9b612a45565b5b5f612ca984828501612a93565b91505092915050565b5f60208284031215612cc757612cc6612a45565b5b5f612cd484828501612ac6565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612d17826129d4565b810181811067ffffffffffffffff82111715612d3657612d35612ce1565b5b80604052505050565b5f612d48612a3c565b9050612d548282612d0e565b919050565b5f67ffffffffffffffff821115612d7357612d72612ce1565b5b602082029050602081019050919050565b5f80fd5b5f612d9a612d9584612d59565b612d3f565b90508083825260208201905060208402830185811115612dbd57612dbc612d84565b5b835b81811015612de65780612dd28882612a93565b845260208401935050602081019050612dbf565b5050509392505050565b5f82601f830112612e0457612e03612cdd565b5b8135612e14848260208601612d88565b91505092915050565b5f60208284031215612e3257612e31612a45565b5b5f82013567ffffffffffffffff811115612e4f57612e4e612a49565b5b612e5b84828501612df0565b91505092915050565b5f8060408385031215612e7a57612e79612a45565b5b5f612e8785828601612a93565b9250506020612e9885828601612a93565b9150509250929050565b5f819050919050565b5f612ec5612ec0612ebb84612a4d565b612ea2565b612a4d565b9050919050565b5f612ed682612eab565b9050919050565b5f612ee782612ecc565b9050919050565b612ef781612edd565b82525050565b5f602082019050612f105f830184612eee565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612f5a57607f821691505b602082108103612f6d57612f6c612f16565b5b50919050565b7f496e73756666696369656e7420416c6c6f77616e6365000000000000000000005f82015250565b5f612fa760168361299c565b9150612fb282612f73565b602082019050919050565b5f6020820190508181035f830152612fd481612f9b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61301282612aa7565b915061301d83612aa7565b925082820390508181111561303557613034612fdb565b5b92915050565b5f61304582612aa7565b915061305083612aa7565b925082820190508082111561306857613067612fdb565b5b92915050565b7f4e6f7420696e2074696d650000000000000000000000000000000000000000005f82015250565b5f6130a2600b8361299c565b91506130ad8261306e565b602082019050919050565b5f6020820190508181035f8301526130cf81613096565b9050919050565b5f6130e082612aa7565b91506130eb83612aa7565b92508282026130f981612aa7565b915082820484148315176131105761310f612fdb565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61314e82612aa7565b915061315983612aa7565b92508261316957613168613117565b5b828204905092915050565b5f81905092915050565b50565b5f61318c5f83613174565b91506131978261317e565b5f82019050919050565b5f6131ab82613181565b9150819050919050565b7f4661696c656420746f2073656e642045544820746f206465762077616c6c65745f82015250565b5f6131e960208361299c565b91506131f4826131b5565b602082019050919050565b5f6020820190508181035f830152613216816131dd565b9050919050565b7f616c7265616479207374617274656400000000000000000000000000000000005f82015250565b5f613251600f8361299c565b915061325c8261321d565b602082019050919050565b5f6020820190508181035f83015261327e81613245565b9050919050565b7f4c696d69747320616c72656164792072656d6f766564000000000000000000005f82015250565b5f6132b960168361299c565b91506132c482613285565b602082019050919050565b5f6020820190508181035f8301526132e6816132ad565b9050919050565b7f54726164696e67204c69766520416c72656164790000000000000000000000005f82015250565b5f61332160148361299c565b915061332c826132ed565b602082019050919050565b5f6020820190508181035f83015261334e81613315565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f6133a56133a061339b84613382565b612ea2565b612aa7565b9050919050565b6133b58161338b565b82525050565b5f6020820190506133ce5f8301846133ac565b92915050565b5f6133de82612aa7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134105761340f612fdb565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61347560268361299c565b91506134808261341b565b604082019050919050565b5f6020820190508181035f8301526134a281613469565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6134dd60208361299c565b91506134e8826134a9565b602082019050919050565b5f6020820190508181035f83015261350a816134d1565b9050919050565b7f54726164696e67206e6f74206c697665000000000000000000000000000000005f82015250565b5f61354560108361299c565b915061355082613511565b602082019050919050565b5f6020820190508181035f83015261357281613539565b9050919050565b7f4d617820547820457863656564656400000000000000000000000000000000005f82015250565b5f6135ad600f8361299c565b91506135b882613579565b602082019050919050565b5f6020820190508181035f8301526135da816135a1565b9050919050565b7f4d61782057616c6c6574204578636565646564000000000000000000000000005f82015250565b5f61361560138361299c565b9150613620826135e1565b602082019050919050565b5f6020820190508181035f83015261364281613609565b9050919050565b5f8160011c9050919050565b5f808291508390505b600185111561369e5780860481111561367a57613679612fdb565b5b60018516156136895780820291505b808102905061369785613649565b945061365e565b94509492505050565b5f826136b65760019050613771565b816136c3575f9050613771565b81600181146136d957600281146136e357613712565b6001915050613771565b60ff8411156136f5576136f4612fdb565b5b8360020a91508482111561370c5761370b612fdb565b5b50613771565b5060208310610133831016604e8410600b84101617156137475782820a90508381111561374257613741612fdb565b5b613771565b6137548484846001613655565b9250905081840481111561376b5761376a612fdb565b5b81810290505b9392505050565b5f61378282612aa7565b915061378d83612c53565b92506137ba7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846136a7565b905092915050565b5f6137cc82612aa7565b91506137d783612aa7565b9250826137e7576137e6613117565b5b828206905092915050565b5f60c0820190506138055f830189612c2b565b6138126020830188612bb3565b61381f60408301876133ac565b61382c60608301866133ac565b6138396080830185612c2b565b61384660a0830184612bb3565b979650505050505050565b5f8151905061385f81612ab0565b92915050565b5f805f6060848603121561387c5761387b612a45565b5b5f61388986828701613851565b935050602061389a86828701613851565b92505060406138ab86828701613851565b9150509250925092565b5f815190506138c381612a7d565b92915050565b5f602082840312156138de576138dd612a45565b5b5f6138eb848285016138b5565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61392681612a6c565b82525050565b5f613937838361391d565b60208301905092915050565b5f602082019050919050565b5f613959826138f4565b61396381856138fe565b935061396e8361390e565b805f5b8381101561399e578151613985888261392c565b975061399083613943565b925050600181019050613971565b5085935050505092915050565b5f60a0820190506139be5f830188612bb3565b6139cb60208301876133ac565b81810360408301526139dd818661394f565b90506139ec6060830185612c2b565b6139f96080830184612bb3565b969550505050505056fea264697066735822122021dacedf48cdf5b712214f4af1f5ae9684605e00032eff6e7ee69d3b6961f79c64736f6c634300081500330000000000000000000000003c8eac2d78f0613ac9675188361c6536f042d5f3

Deployed Bytecode

0x60806040526004361061025f575f3560e01c8063706f86e911610143578063a457c2d7116100b5578063bf64c7aa11610079578063bf64c7aa1461087e578063dd62ed3e146108a6578063e30d7cab146108e2578063f2fde38b1461090a578063f887ea4014610932578063f8b45b051461095c57610266565b8063a457c2d714610788578063a5fc4fdd146107c4578063a8aa1b31146107ee578063a9059cbb14610818578063bc7e68a31461085457610266565b806378f353a11161010757806378f353a1146106a057806389375abf146106ca5780638a8c523c146106f45780638da5cb5b1461070a5780639079f9321461073457806395d89b411461075e57610266565b8063706f86e9146105f857806370a082311461060e578063715018a61461064a578063751039fc14610660578063766718081461067657610266565b80633a98d88e116101dc5780635ad27d77116101a05780635ad27d77146105265780635f48f3931461055057806361a9d1b11461057a57806363eab10a146105905780636402511e146105ba5780636ac5eeee146105e257610266565b80633a98d88e146104425780634a62bb651461046c5780634dd7c8bf146104965780634fbee193146104c057806350f8f613146104fc57610266565b806323b872dd1161022357806323b872dd1461034c5780632617cc0e146103885780632dc0562d146103b2578063313ce567146103dc578063395093511461040657610266565b806306fdde031461026a578063095ea7b31461029457806316697fc5146102d05780631693e8d4146102f857806318160ddd1461032257610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e610986565b60405161028b9190612a1c565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190612ada565b610a15565b6040516102c79190612b32565b60405180910390f35b3480156102db575f80fd5b506102f660048036038101906102f19190612b75565b610b02565b005b348015610303575f80fd5b5061030c610b62565b6040516103199190612b32565b60405180910390f35b34801561032d575f80fd5b50610336610b75565b6040516103439190612bc2565b60405180910390f35b348015610357575f80fd5b50610372600480360381019061036d9190612bdb565b610b7e565b60405161037f9190612b32565b60405180910390f35b348015610393575f80fd5b5061039c610e2a565b6040516103a99190612bc2565b60405180910390f35b3480156103bd575f80fd5b506103c6610e30565b6040516103d39190612c3a565b60405180910390f35b3480156103e7575f80fd5b506103f0610e55565b6040516103fd9190612c6e565b60405180910390f35b348015610411575f80fd5b5061042c60048036038101906104279190612ada565b610e6a565b6040516104399190612b32565b60405180910390f35b34801561044d575f80fd5b50610456611052565b6040516104639190612bc2565b60405180910390f35b348015610477575f80fd5b50610480611058565b60405161048d9190612b32565b60405180910390f35b3480156104a1575f80fd5b506104aa61106b565b6040516104b79190612bc2565b60405180910390f35b3480156104cb575f80fd5b506104e660048036038101906104e19190612c87565b611071565b6040516104f39190612b32565b60405180910390f35b348015610507575f80fd5b5061051061108e565b60405161051d9190612bc2565b60405180910390f35b348015610531575f80fd5b5061053a611094565b6040516105479190612bc2565b60405180910390f35b34801561055b575f80fd5b5061056461109a565b6040516105719190612bc2565b60405180910390f35b348015610585575f80fd5b5061058e6110a0565b005b34801561059b575f80fd5b506105a46110f2565b6040516105b19190612b32565b60405180910390f35b3480156105c5575f80fd5b506105e060048036038101906105db9190612cb2565b611131565b005b3480156105ed575f80fd5b506105f6611143565b005b348015610603575f80fd5b5061060c6113fe565b005b348015610619575f80fd5b50610634600480360381019061062f9190612c87565b611499565b6040516106419190612bc2565b60405180910390f35b348015610655575f80fd5b5061065e6114ec565b005b34801561066b575f80fd5b506106746114ff565b005b348015610681575f80fd5b5061068a61159e565b6040516106979190612bc2565b60405180910390f35b3480156106ab575f80fd5b506106b46115a4565b6040516106c19190612bc2565b60405180910390f35b3480156106d5575f80fd5b506106de6115aa565b6040516106eb9190612bc2565b60405180910390f35b3480156106ff575f80fd5b506107086115b0565b005b348015610715575f80fd5b5061071e611625565b60405161072b9190612c3a565b60405180910390f35b34801561073f575f80fd5b5061074861164e565b6040516107559190612b32565b60405180910390f35b348015610769575f80fd5b50610772611660565b60405161077f9190612a1c565b60405180910390f35b348015610793575f80fd5b506107ae60048036038101906107a99190612ada565b6116f0565b6040516107bb9190612b32565b60405180910390f35b3480156107cf575f80fd5b506107d8611967565b6040516107e59190612c3a565b60405180910390f35b3480156107f9575f80fd5b5061080261198c565b60405161080f9190612c3a565b60405180910390f35b348015610823575f80fd5b5061083e60048036038101906108399190612ada565b6119b1565b60405161084b9190612b32565b60405180910390f35b34801561085f575f80fd5b50610868611a01565b6040516108759190612bc2565b60405180910390f35b348015610889575f80fd5b506108a4600480360381019061089f9190612e1d565b611a07565b005b3480156108b1575f80fd5b506108cc60048036038101906108c79190612e64565b611ab0565b6040516108d99190612bc2565b60405180910390f35b3480156108ed575f80fd5b5061090860048036038101906109039190612c87565b611b32565b005b348015610915575f80fd5b50610930600480360381019061092b9190612c87565b611b7d565b005b34801561093d575f80fd5b50610946611bff565b6040516109539190612efd565b60405180910390f35b348015610967575f80fd5b50610970611c24565b60405161097d9190612bc2565b60405180910390f35b60605f805461099490612f43565b80601f01602080910402602001604051908101604052809291908181526020018280546109c090612f43565b8015610a0b5780601f106109e257610100808354040283529160200191610a0b565b820191905f5260205f20905b8154815290600101906020018083116109ee57829003601f168201915b5050505050905090565b5f81601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610af09190612bc2565b60405180910390a36001905092915050565b610b0a611c2a565b80601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601660159054906101000a900460ff1681565b5f601754905090565b5f825f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bb7575f80fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610e125782601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0890612fbd565b60405180910390fd5b82601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d959190613008565b601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610e1d858585611ca8565b5060019150509392505050565b600e5481565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60025f9054906101000a900460ff16905090565b5f81601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610eef919061303b565b601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516110409190612bc2565b60405180910390a36001905092915050565b60065481565b601660149054906101000a900460ff1681565b60105481565b601c602052805f5260405f205f915054906101000a900460ff1681565b600d5481565b600f5481565b60095481565b6110a86110f2565b6110e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110de906130b8565b60405180910390fd5b6110ef6122fe565b50565b5f60065460075410801561110757505f600454115b801561111557504260045411155b801561112c575060085f9054906101000a900460ff165b905090565b611139611c2a565b8060198190555050565b6001601d5f6101000a81548160ff0219169083151502179055505f61116730611499565b90505f810361117657506113e3565b6019548111156111865760195490505b5f601054600f54600e5461119a919061303b565b836111a591906130d6565b6111af9190613144565b90505f601054600d54846111c391906130d6565b6111cd9190613144565b90506111d881612524565b6111e182612639565b5f600f54600e546111f2919061303b565b600e544761120091906130d6565b61120a9190613144565b90505f600f54600e5461121d919061303b565b600f544761122b91906130d6565b6112359190613144565b90505f82111561130a575f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051611285906131a1565b5f6040518083038185875af1925050503d805f81146112bf576040519150601f19603f3d011682016040523d82523d5f602084013e6112c4565b606091505b5050905080611308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ff906131ff565b60405180910390fd5b505b5f8111156113dd575f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611358906131a1565b5f6040518083038185875af1925050503d805f8114611392576040519150601f19603f3d011682016040523d82523d5f602084013e611397565b606091505b50509050806113db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d2906131ff565b60405180910390fd5b505b50505050505b5f601d5f6101000a81548160ff021916908315150217905550565b611406611c2a565b5f600754148015611423575060085f9054906101000a900460ff16155b611462576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145990613267565b60405180910390fd5b600160085f6101000a81548160ff0219169083151502179055506003544261148a919061303b565b60048190555042600581905550565b5f601854601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114e59190613144565b9050919050565b6114f4611c2a565b6114fd5f612843565b565b611507611c2a565b601660149054906101000a900460ff16611556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154d906132cf565b60405180910390fd5b5f601660146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b60075481565b60055481565b60035481565b6115b8611c2a565b601660159054906101000a900460ff1615611608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ff90613337565b60405180910390fd5b6001601660156101000a81548160ff021916908315150217905550565b5f600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085f9054906101000a900460ff1681565b60606001805461166f90612f43565b80601f016020809104026020016040519081016040528092919081815260200182805461169b90612f43565b80156116e65780601f106116bd576101008083540402835291602001916116e6565b820191905f5260205f20905b8154815290600101906020018083116116c957829003601f168201915b5050505050905090565b5f80601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508083106117f6575f601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061187f565b82816118029190613008565b601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516119549190612bc2565b60405180910390a3600191505092915050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f825f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ea575f80fd5b6119f5338585611ca8565b50600191505092915050565b60045481565b5f805f90505b8251811015611aab57828181518110611a2957611a28613355565b5b602002602001015191508173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f604051611a9091906133bb565b60405180910390a38080611aa3906133d4565b915050611a0d565b505050565b5f601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611b3a611c2a565b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b85611c2a565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bea9061348b565b60405180910390fd5b611bfc81612843565b50565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b611c32612908565b73ffffffffffffffffffffffffffffffffffffffff16611c50611625565b73ffffffffffffffffffffffffffffffffffffffff1614611ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9d906134f3565b60405180910390fd5b565b5f8060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050601d5f9054906101000a900460ff16158015611d315750601c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d845750601c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121cd57601660159054906101000a900460ff16611dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcf9061355b565b60405180910390fd5b601660149054906101000a900460ff1615611f2a578073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611e5257508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611e9d57600954831115611e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e93906135c3565b60405180910390fd5b5b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611f2957600a5483611edd86611499565b611ee7919061303b565b1115611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f9061362b565b60405180910390fd5b5b5b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f8f57601954611f6930611499565b10611f7757611f76611143565b5b611f7f6110f2565b15611f8e57611f8c6122fe565b505b5b5f8173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361201157600160135f828254611fd5919061303b565b92505081905550606460125460135411611ff157601154611ff5565b6010545b8561200091906130d6565b61200a9190613144565b905061208f565b8173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361208e57600160145f828254612056919061303b565b9250508190555060646012546014541161207257601154612076565b6010545b8561208191906130d6565b61208b9190613144565b90505b5b5f8111156121cb57601854816120a591906130d6565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546120f09190613008565b925050819055506018548161210591906130d6565b601a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612150919061303b565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121b49190612bc2565b60405180910390a380846121c89190613008565b93505b505b601854836121db91906130d6565b601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546122269190613008565b925050819055506018548361223b91906130d6565b601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612286919061303b565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122ea9190612bc2565b60405180910390a360019150509392505050565b5f80600354600554426123119190613008565b61231b9190613144565b90504260058190555060035442612332919061303b565b60048190555060065460075482612349919061303b565b11156123625760075460065461235f9190613008565b90505b8060075f828254612373919061303b565b925050819055505f6298968062010c9c8360175461239191906130d6565b61239b91906130d6565b6123a59190613144565b90505f81036123f457427f11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a215116017546040516123e09190612bc2565b60405180910390a260175492505050612521565b80601754612402919061303b565b6017819055506017546009600a6124199190613778565b6305f5e10061242891906130d6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61245391906137c2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61247e9190613008565b6124889190613144565b601881905550600654600754106124d7575f60085f6101000a81548160ff0219169083151502179055505f6004819055505f600d81905550600f54600e546124d0919061303b565b6010819055505b6124df61290f565b427f11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a215116017546040516125119190612bc2565b60405180910390a2601754925050505b90565b5f811115612636575f60028261253a9190613144565b90505f81836125499190613008565b90505f47905061255883612639565b5f81476125659190613008565b905060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230865f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016125ed969594939291906137f2565b60606040518083038185885af1158015612609573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061262e9190613865565b505050505050505b50565b5f600267ffffffffffffffff81111561265557612654612ce1565b5b6040519080825280602002602001820160405280156126835781602001602082028036833780820191505090505b50905030815f8151811061269a57612699613355565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561273e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061276291906138c9565b8160018151811061277657612775613355565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016128129594939291906139ab565b5f604051808303815f87803b158015612829575f80fd5b505af115801561283b573d5f803e3d5ffd5b505050505050565b5f600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612979575f80fd5b505af115801561298b573d5f803e3d5ffd5b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156129c95780820151818401526020810190506129ae565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6129ee82612992565b6129f8818561299c565b9350612a088185602086016129ac565b612a11816129d4565b840191505092915050565b5f6020820190508181035f830152612a3481846129e4565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a7682612a4d565b9050919050565b612a8681612a6c565b8114612a90575f80fd5b50565b5f81359050612aa181612a7d565b92915050565b5f819050919050565b612ab981612aa7565b8114612ac3575f80fd5b50565b5f81359050612ad481612ab0565b92915050565b5f8060408385031215612af057612aef612a45565b5b5f612afd85828601612a93565b9250506020612b0e85828601612ac6565b9150509250929050565b5f8115159050919050565b612b2c81612b18565b82525050565b5f602082019050612b455f830184612b23565b92915050565b612b5481612b18565b8114612b5e575f80fd5b50565b5f81359050612b6f81612b4b565b92915050565b5f8060408385031215612b8b57612b8a612a45565b5b5f612b9885828601612a93565b9250506020612ba985828601612b61565b9150509250929050565b612bbc81612aa7565b82525050565b5f602082019050612bd55f830184612bb3565b92915050565b5f805f60608486031215612bf257612bf1612a45565b5b5f612bff86828701612a93565b9350506020612c1086828701612a93565b9250506040612c2186828701612ac6565b9150509250925092565b612c3481612a6c565b82525050565b5f602082019050612c4d5f830184612c2b565b92915050565b5f60ff82169050919050565b612c6881612c53565b82525050565b5f602082019050612c815f830184612c5f565b92915050565b5f60208284031215612c9c57612c9b612a45565b5b5f612ca984828501612a93565b91505092915050565b5f60208284031215612cc757612cc6612a45565b5b5f612cd484828501612ac6565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612d17826129d4565b810181811067ffffffffffffffff82111715612d3657612d35612ce1565b5b80604052505050565b5f612d48612a3c565b9050612d548282612d0e565b919050565b5f67ffffffffffffffff821115612d7357612d72612ce1565b5b602082029050602081019050919050565b5f80fd5b5f612d9a612d9584612d59565b612d3f565b90508083825260208201905060208402830185811115612dbd57612dbc612d84565b5b835b81811015612de65780612dd28882612a93565b845260208401935050602081019050612dbf565b5050509392505050565b5f82601f830112612e0457612e03612cdd565b5b8135612e14848260208601612d88565b91505092915050565b5f60208284031215612e3257612e31612a45565b5b5f82013567ffffffffffffffff811115612e4f57612e4e612a49565b5b612e5b84828501612df0565b91505092915050565b5f8060408385031215612e7a57612e79612a45565b5b5f612e8785828601612a93565b9250506020612e9885828601612a93565b9150509250929050565b5f819050919050565b5f612ec5612ec0612ebb84612a4d565b612ea2565b612a4d565b9050919050565b5f612ed682612eab565b9050919050565b5f612ee782612ecc565b9050919050565b612ef781612edd565b82525050565b5f602082019050612f105f830184612eee565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612f5a57607f821691505b602082108103612f6d57612f6c612f16565b5b50919050565b7f496e73756666696369656e7420416c6c6f77616e6365000000000000000000005f82015250565b5f612fa760168361299c565b9150612fb282612f73565b602082019050919050565b5f6020820190508181035f830152612fd481612f9b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61301282612aa7565b915061301d83612aa7565b925082820390508181111561303557613034612fdb565b5b92915050565b5f61304582612aa7565b915061305083612aa7565b925082820190508082111561306857613067612fdb565b5b92915050565b7f4e6f7420696e2074696d650000000000000000000000000000000000000000005f82015250565b5f6130a2600b8361299c565b91506130ad8261306e565b602082019050919050565b5f6020820190508181035f8301526130cf81613096565b9050919050565b5f6130e082612aa7565b91506130eb83612aa7565b92508282026130f981612aa7565b915082820484148315176131105761310f612fdb565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61314e82612aa7565b915061315983612aa7565b92508261316957613168613117565b5b828204905092915050565b5f81905092915050565b50565b5f61318c5f83613174565b91506131978261317e565b5f82019050919050565b5f6131ab82613181565b9150819050919050565b7f4661696c656420746f2073656e642045544820746f206465762077616c6c65745f82015250565b5f6131e960208361299c565b91506131f4826131b5565b602082019050919050565b5f6020820190508181035f830152613216816131dd565b9050919050565b7f616c7265616479207374617274656400000000000000000000000000000000005f82015250565b5f613251600f8361299c565b915061325c8261321d565b602082019050919050565b5f6020820190508181035f83015261327e81613245565b9050919050565b7f4c696d69747320616c72656164792072656d6f766564000000000000000000005f82015250565b5f6132b960168361299c565b91506132c482613285565b602082019050919050565b5f6020820190508181035f8301526132e6816132ad565b9050919050565b7f54726164696e67204c69766520416c72656164790000000000000000000000005f82015250565b5f61332160148361299c565b915061332c826132ed565b602082019050919050565b5f6020820190508181035f83015261334e81613315565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f6133a56133a061339b84613382565b612ea2565b612aa7565b9050919050565b6133b58161338b565b82525050565b5f6020820190506133ce5f8301846133ac565b92915050565b5f6133de82612aa7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134105761340f612fdb565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61347560268361299c565b91506134808261341b565b604082019050919050565b5f6020820190508181035f8301526134a281613469565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6134dd60208361299c565b91506134e8826134a9565b602082019050919050565b5f6020820190508181035f83015261350a816134d1565b9050919050565b7f54726164696e67206e6f74206c697665000000000000000000000000000000005f82015250565b5f61354560108361299c565b915061355082613511565b602082019050919050565b5f6020820190508181035f83015261357281613539565b9050919050565b7f4d617820547820457863656564656400000000000000000000000000000000005f82015250565b5f6135ad600f8361299c565b91506135b882613579565b602082019050919050565b5f6020820190508181035f8301526135da816135a1565b9050919050565b7f4d61782057616c6c6574204578636565646564000000000000000000000000005f82015250565b5f61361560138361299c565b9150613620826135e1565b602082019050919050565b5f6020820190508181035f83015261364281613609565b9050919050565b5f8160011c9050919050565b5f808291508390505b600185111561369e5780860481111561367a57613679612fdb565b5b60018516156136895780820291505b808102905061369785613649565b945061365e565b94509492505050565b5f826136b65760019050613771565b816136c3575f9050613771565b81600181146136d957600281146136e357613712565b6001915050613771565b60ff8411156136f5576136f4612fdb565b5b8360020a91508482111561370c5761370b612fdb565b5b50613771565b5060208310610133831016604e8410600b84101617156137475782820a90508381111561374257613741612fdb565b5b613771565b6137548484846001613655565b9250905081840481111561376b5761376a612fdb565b5b81810290505b9392505050565b5f61378282612aa7565b915061378d83612c53565b92506137ba7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846136a7565b905092915050565b5f6137cc82612aa7565b91506137d783612aa7565b9250826137e7576137e6613117565b5b828206905092915050565b5f60c0820190506138055f830189612c2b565b6138126020830188612bb3565b61381f60408301876133ac565b61382c60608301866133ac565b6138396080830185612c2b565b61384660a0830184612bb3565b979650505050505050565b5f8151905061385f81612ab0565b92915050565b5f805f6060848603121561387c5761387b612a45565b5b5f61388986828701613851565b935050602061389a86828701613851565b92505060406138ab86828701613851565b9150509250925092565b5f815190506138c381612a7d565b92915050565b5f602082840312156138de576138dd612a45565b5b5f6138eb848285016138b5565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61392681612a6c565b82525050565b5f613937838361391d565b60208301905092915050565b5f602082019050919050565b5f613959826138f4565b61396381856138fe565b935061396e8361390e565b805f5b8381101561399e578151613985888261392c565b975061399083613943565b925050600181019050613971565b5085935050505092915050565b5f60a0820190506139be5f830188612bb3565b6139cb60208301876133ac565b81810360408301526139dd818661394f565b90506139ec6060830185612c2b565b6139f96080830184612bb3565b969550505050505056fea264697066735822122021dacedf48cdf5b712214f4af1f5ae9684605e00032eff6e7ee69d3b6961f79c64736f6c63430008150033

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

0000000000000000000000003c8eac2d78f0613ac9675188361c6536f042d5f3

-----Decoded View---------------
Arg [0] : _stakingAdress (address): 0x3c8eaC2d78F0613aC9675188361C6536F042D5f3

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000003c8eac2d78f0613ac9675188361c6536f042d5f3


Deployed Bytecode Sourcemap

9289:12586:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9013:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17315:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13531:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10485:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12377:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15871:567;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9729:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9628:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9199:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16957:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9459:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10445:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9805:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10806:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9696:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9765:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9564:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18572:109;;;;;;;;;;;;;:::i;:::-;;12812:219;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21481:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19091:1251;;;;;;;;;;;;;:::i;:::-;;18838:245;;;;;;;;;;;;;:::i;:::-;;12670:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3128:103;;;;;;;;;;;;;:::i;:::-;;13348:175;;;;;;;;;;;;;:::i;:::-;;9497:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9427:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9345:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18689:141;;;;;;;;;;;;;:::i;:::-;;2487:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9533:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9104:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16446:503;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9659:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10417:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13141:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9395:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21596:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12487:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21355:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3386:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10382:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9595:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9013:83;9050:13;9083:5;9076:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9013:83;:::o;17315:241::-;17414:4;17469:5;17431:14;:26;17446:10;17431:26;;;;;;;;;;;;;;;:35;17458:7;17431:35;;;;;;;;;;;;;;;:43;;;;17511:7;17490:36;;17499:10;17490:36;;;17520:5;17490:36;;;;;;:::i;:::-;;;;;;;;17544:4;17537:11;;17315:241;;;;:::o;13531:157::-;2373:13;:11;:13::i;:::-;13674:6:::1;13643:18;:28;13662:8;13643:28;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;13531:157:::0;;:::o;10485:33::-;;;;;;;;;;;;;:::o;12377:102::-;12432:7;12459:12;;12452:19;;12377:102;:::o;15871:567::-;16014:4;16001:2;10934:3;10920:18;;:2;:18;;;10912:27;;;;;;16071:17:::1;16035:14;:20;16050:4;16035:20;;;;;;;;;;;;;;;:32;16056:10;16035:32;;;;;;;;;;;;;;;;:53;16031:337;;16167:5;16131:14;:20;16146:4;16131:20;;;;;;;;;;;;;;;:32;16152:10;16131:32;;;;;;;;;;;;;;;;:41;;16105:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;16350:5;16297:14;:20;16312:4;16297:20;;;;;;;;;;;;;;;:32;16318:10;16297:32;;;;;;;;;;;;;;;;:59;;;;:::i;:::-;16245:14;:20;16260:4;16245:20;;;;;;;;;;;;;;;:32;16266:10;16245:32;;;;;;;;;;;;;;;:111;;;;16031:337;16378:30;16392:4;16398:2;16402:5;16378:13;:30::i;:::-;;16426:4;16419:11;;15871:567:::0;;;;;;:::o;9729:29::-;;;;:::o;9628:24::-;;;;;;;;;;;;;:::o;9199:83::-;9240:5;9265:9;;;;;;;;;;;9258:16;;9199:83;:::o;16957:350::-;17064:4;17184:10;17132:14;:26;17147:10;17132:26;;;;;;;;;;;;;;;:35;17159:7;17132:35;;;;;;;;;;;;;;;;:63;;;;:::i;:::-;17081:14;:26;17096:10;17081:26;;;;;;;;;;;;;;;:35;17108:7;17081:35;;;;;;;;;;;;;;;:114;;;;17232:7;17211:66;;17220:10;17211:66;;;17241:14;:26;17256:10;17241:26;;;;;;;;;;;;;;;:35;17268:7;17241:35;;;;;;;;;;;;;;;;17211:66;;;;;;:::i;:::-;;;;;;;;17295:4;17288:11;;16957:350;;;;:::o;9459:31::-;;;;:::o;10445:33::-;;;;;;;;;;;;;:::o;9805:63::-;;;;:::o;10806:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;9696:26::-;;;;:::o;9765:33::-;;;;:::o;9564:24::-;;;;:::o;18572:109::-;18624:14;:12;:14::i;:::-;18616:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18665:8;:6;:8::i;:::-;;18572:109::o;12812:219::-;12857:4;12909:10;;12894:12;;:25;:56;;;;;12949:1;12936:10;;:14;12894:56;:102;;;;;12981:15;12967:10;;:29;;12894:102;:129;;;;;13013:10;;;;;;;;;;;12894:129;12874:149;;12812:219;:::o;21481:107::-;2373:13;:11;:13::i;:::-;21573:7:::1;21553:17;:27;;;;21481:107:::0;:::o;19091:1251::-;11027:4;11018:6;;:13;;;;;;;;;;;;;;;;;;19138:23:::1;19164:24;19182:4;19164:9;:24::i;:::-;19138:50;;19222:1;19203:15;:20:::0;19199:59:::1;;19240:7;;;19199:59;19292:17;;19274:15;:35;19270:103;;;19344:17;;19326:35;;19270:103;19385:20;19473:8;;19454:14;;19441:10;;:27;;;;:::i;:::-;19409:15;:60;;;;:::i;:::-;19408:73;;;;:::i;:::-;19385:96;;19492:18;19543:8;;19532:7;;19514:15;:25;;;;:::i;:::-;19513:38;;;;:::i;:::-;19492:59;;19564:32;19585:10;19564:20;:32::i;:::-;19609:31;19627:12;19609:17;:31::i;:::-;19653:18;19740:14;;19727:10;;:27;;;;:::i;:::-;19699:10;;19675:21;:34;;;;:::i;:::-;19674:81;;;;:::i;:::-;19653:102;;19766:22;19861:14;;19848:10;;:27;;;;:::i;:::-;19816:14;;19792:21;:38;;;;:::i;:::-;19791:85;;;;:::i;:::-;19766:110;;19906:1;19893:10;:14;19889:215;;;19925:12;19951:13;;;;;;;;;;;19943:27;;19978:10;19943:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19924:101;;;20048:7;20040:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;19909:195;19889:215;20137:1;20120:14;:18;20116:219;;;20156:12;20182:9;;;;;;;;;;;20174:23;;20205:14;20174:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20155:101;;;20279:7;20271:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;20140:195;20116:219;19127:1215;;;;;11042:1;11063:5:::0;11054:6;;:14;;;;;;;;;;;;;;;;;;19091:1251::o;18838:245::-;2373:13;:11;:13::i;:::-;18915:1:::1;18899:12;;:17;:32;;;;;18921:10;;;;;;;;;;;18920:11;18899:32;18891:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18975:4;18962:10;;:17;;;;;;;;;;;;;;;;;;19021:15;;19003;:33;;;;:::i;:::-;18990:10;:46;;;;19060:15;19047:10;:28;;;;18838:245::o:0;12670:134::-;12732:7;12781:14;;12759:13;:18;12773:3;12759:18;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;12752:44;;12670:134;;;:::o;3128:103::-;2373:13;:11;:13::i;:::-;3193:30:::1;3220:1;3193:18;:30::i;:::-;3128:103::o:0;13348:175::-;2373:13;:11;:13::i;:::-;13410:14:::1;;;;;;;;;;;13402:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;13479:5;13462:14;;:22;;;;;;;;;;;;;;;;;;13500:15;;;;;;;;;;13348:175::o:0;9497:27::-;;;;:::o;9427:25::-;;;;:::o;9345:43::-;;;;:::o;18689:141::-;2373:13;:11;:13::i;:::-;18753::::1;;;;;;;;;;;18752:14;18744:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;18818:4;18802:13;;:20;;;;;;;;;;;;;;;;;;18689:141::o:0;2487:87::-;2533:7;2560:6;;;;;;;;;;;2553:13;;2487:87;:::o;9533:22::-;;;;;;;;;;;;;:::o;9104:87::-;9143:13;9176:7;9169:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9104:87;:::o;16446:503::-;16558:4;16575:16;16594:14;:26;16609:10;16594:26;;;;;;;;;;;;;;;:35;16621:7;16594:35;;;;;;;;;;;;;;;;16575:54;;16663:8;16644:15;:27;16640:198;;16726:1;16688:14;:26;16703:10;16688:26;;;;;;;;;;;;;;;:35;16715:7;16688:35;;;;;;;;;;;;;;;:39;;;;16640:198;;;16810:15;16798:8;:28;;;;:::i;:::-;16760:14;:26;16775:10;16760:26;;;;;;;;;;;;;;;:35;16787:7;16760:35;;;;;;;;;;;;;;;:66;;;;16640:198;16874:7;16853:66;;16862:10;16853:66;;;16883:14;:26;16898:10;16883:26;;;;;;;;;;;;;;;:35;16910:7;16883:35;;;;;;;;;;;;;;;;16853:66;;;;;;:::i;:::-;;;;;;;;16937:4;16930:11;;;16446:503;;;;:::o;9659:28::-;;;;;;;;;;;;;:::o;10417:19::-;;;;;;;;;;;;;:::o;13141:199::-;13257:4;13244:2;10934:3;10920:18;;:2;:18;;;10912:27;;;;;;13274:36:::1;13288:10;13300:2;13304:5;13274:13;:36::i;:::-;;13328:4;13321:11;;13141:199:::0;;;;;:::o;9395:25::-;;;;:::o;21596:239::-;21665:14;21695:9;21707:1;21695:13;;21690:138;21714:7;:14;21710:1;:18;21690:138;;;21759:7;21767:1;21759:10;;;;;;;;:::i;:::-;;;;;;;;21750:19;;21806:6;21789:27;;21798:6;21789:27;;;21814:1;21789:27;;;;;;:::i;:::-;;;;;;;;21730:3;;;;;:::i;:::-;;;;21690:138;;;;21654:181;21596:239;:::o;12487:175::-;12596:7;12623:14;:22;12638:6;12623:22;;;;;;;;;;;;;;;:31;12646:7;12623:31;;;;;;;;;;;;;;;;12616:38;;12487:175;;;;:::o;21355:118::-;2373:13;:11;:13::i;:::-;21451:14:::1;21435:13;;:30;;;;;;;;;;;;;;;;;;21355:118:::0;:::o;3386:201::-;2373:13;:11;:13::i;:::-;3495:1:::1;3475:22;;:8;:22;;::::0;3467:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3551:28;3570:8;3551:18;:28::i;:::-;3386:201:::0;:::o;10382:28::-;;;;;;;;;;;;;:::o;9595:24::-;;;;:::o;2652:132::-;2727:12;:10;:12::i;:::-;2716:23;;:7;:5;:7::i;:::-;:23;;;2708:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2652:132::o;13696:2167::-;13822:4;13839:19;13861:4;;;;;;;;;;;13839:26;;13897:6;;;;;;;;;;;13896:7;:51;;;;;13921:18;:26;13940:6;13921:26;;;;;;;;;;;;;;;;;;;;;;;;;13920:27;13896:51;:98;;;;;13965:18;:29;13984:9;13965:29;;;;;;;;;;;;;;;;;;;;;;;;;13964:30;13896:98;13878:1774;;;14029:13;;;;;;;;;;;14021:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;14082:14;;;;;;;;;;;14078:437;;;14131:11;14121:21;;:6;:21;;;:49;;;;14159:11;14146:24;;:9;:24;;;14121:49;14117:145;;;14213:9;;14203:6;:19;;14195:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;14117:145;14297:11;14284:24;;:9;:24;;;14280:220;;14400:9;;14390:6;14367:20;14377:9;14367;:20::i;:::-;:29;;;;:::i;:::-;:42;;14333:147;;;;;;;;;;;;:::i;:::-;;;;;;;;;14280:220;14078:437;14548:11;14535:24;;:9;:24;;;14531:257;;14612:17;;14584:24;14602:4;14584:9;:24::i;:::-;:45;14580:104;;14654:10;:8;:10::i;:::-;14580:104;14706:14;:12;:14::i;:::-;14702:71;;;14745:8;:6;:8::i;:::-;;14702:71;14531:257;14804:17;14852:11;14842:21;;:6;:21;;;14838:495;;14897:1;14884:9;;:14;;;;;;;:::i;:::-;;;;;;;;15061:3;14998:12;;14986:9;;:24;:49;;15024:11;;14986:49;;;15013:8;;14986:49;14951:6;:85;;;;:::i;:::-;14950:114;;;;:::i;:::-;14917:147;;14838:495;;;15103:11;15090:24;;:9;:24;;;15086:247;;15149:1;15135:10;;:15;;;;;;;:::i;:::-;;;;;;;;15314:3;15251:12;;15238:10;;:25;:50;;15277:11;;15238:50;;;15266:8;;15238:50;15203:6;:86;;;;:::i;:::-;15202:115;;;;:::i;:::-;15169:148;;15086:247;14838:495;15365:1;15353:9;:13;15349:292;;;15425:14;;15413:9;:26;;;;:::i;:::-;15387:13;:21;15401:6;15387:21;;;;;;;;;;;;;;;;:53;;;;;;;:::i;:::-;;;;;;;;15504:14;;15492:9;:26;;;;:::i;:::-;15459:13;:28;15481:4;15459:28;;;;;;;;;;;;;;;;:60;;;;;;;:::i;:::-;;;;;;;;15570:4;15545:42;;15554:6;15545:42;;;15577:9;15545:42;;;;;;:::i;:::-;;;;;;;;15616:9;15606:19;;;;;:::i;:::-;;;15349:292;14006:1646;13878:1774;15699:14;;15690:6;:23;;;;:::i;:::-;15664:13;:21;15678:6;15664:21;;;;;;;;;;;;;;;;:50;;;;;;;:::i;:::-;;;;;;;;15763:14;;15754:6;:23;;;;:::i;:::-;15725:13;:24;15739:9;15725:24;;;;;;;;;;;;;;;;:53;;;;;;;:::i;:::-;;;;;;;;15813:9;15796:35;;15805:6;15796:35;;;15824:6;15796:35;;;;;;:::i;:::-;;;;;;;;15851:4;15844:11;;;13696:2167;;;;;:::o;17564:1000::-;17600:7;17620:13;17669:15;;17655:10;;17637:15;:28;;;;:::i;:::-;17636:48;;;;:::i;:::-;17620:64;;17710:15;17697:10;:28;;;;17767:15;;17749;:33;;;;:::i;:::-;17736:10;:46;;;;17822:10;;17807:12;;17799:5;:20;;;;:::i;:::-;:33;17795:99;;;17870:12;;17857:10;;:25;;;;:::i;:::-;17849:33;;17795:99;17922:5;17906:12;;:21;;;;;;;:::i;:::-;;;;;;;;17940:19;17995:7;17986:5;17978;17963:12;;:20;;;;:::i;:::-;:28;;;;:::i;:::-;17962:40;;;;:::i;:::-;17940:62;;18034:1;18019:11;:16;18015:125;;18064:15;18057:37;18081:12;;18057:37;;;;;;:::i;:::-;;;;;;;;18116:12;;18109:19;;;;;;18015:125;18182:11;18167:12;;:26;;;;:::i;:::-;18152:12;:41;;;;18238:12;;10067:1;10147:2;:14;;;;:::i;:::-;10133:11;:28;;;;:::i;:::-;10239:17;:41;;;;:::i;:::-;10218:17;:63;;;;:::i;:::-;18223:28;;;;:::i;:::-;18206:14;:45;;;;18284:10;;18268:12;;:26;18264:185;;18324:5;18311:10;;:18;;;;;;;;;;;;;;;;;;18357:1;18344:10;:14;;;;18383:1;18373:7;:11;;;;18423:14;;18410:10;;:27;;;;:::i;:::-;18399:8;:38;;;;18264:185;18461:8;:6;:8::i;:::-;18494:15;18487:37;18511:12;;18487:37;;;;;;:::i;:::-;;;;;;;;18544:12;;18537:19;;;;17564:1000;;:::o;20742:605::-;20821:1;20812:6;:10;20808:532;;;20839:12;20863:1;20854:6;:10;;;;:::i;:::-;20839:25;;20879:17;20908:4;20899:6;:13;;;;:::i;:::-;20879:33;;20929:22;20954:21;20929:46;;20992:23;21010:4;20992:17;:23::i;:::-;21032:18;21078:14;21053:21;:40;;;;:::i;:::-;21032:61;;21110:6;;;;;;;;;;;:22;;;21140:10;21178:4;21202:9;21230:1;21250;21270:9;;;;;;;;;;;21298:15;21110:218;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20824:516;;;;20808:532;20742:605;:::o;20350:384::-;20418:21;20456:1;20442:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20418:40;;20487:4;20469;20474:1;20469:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20513:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20503:4;20508:1;20503:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20539:6;;;;;;;;;;;:57;;;20611:11;20637:1;20653:4;20680;20700:15;20539:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20407:327;20350:384;:::o;3747:191::-;3821:16;3840:6;;;;;;;;;;;3821:25;;3866:8;3857:6;;:17;;;;;;;;;;;;;;;;;;3921:8;3890:40;;3911:8;3890:40;;;;;;;;;;;;3810:128;3747:191;:::o;983:98::-;1036:7;1063:10;1056:17;;983:98;:::o;13039:94::-;13077:11;13097:4;;;;;;;;;;;13077:25;;13113:5;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13066:67;13039:94::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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::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:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:468::-;3772:6;3780;3829:2;3817:9;3808:7;3804:23;3800:32;3797:119;;;3835:79;;:::i;:::-;3797:119;3955:1;3980:53;4025:7;4016:6;4005:9;4001:22;3980:53;:::i;:::-;3970:63;;3926:117;4082:2;4108:50;4150:7;4141:6;4130:9;4126:22;4108:50;:::i;:::-;4098:60;;4053:115;3707:468;;;;;:::o;4181:118::-;4268:24;4286:5;4268:24;:::i;:::-;4263:3;4256:37;4181:118;;:::o;4305:222::-;4398:4;4436:2;4425:9;4421:18;4413:26;;4449:71;4517:1;4506:9;4502:17;4493:6;4449:71;:::i;:::-;4305:222;;;;:::o;4533:619::-;4610:6;4618;4626;4675:2;4663:9;4654:7;4650:23;4646:32;4643:119;;;4681:79;;:::i;:::-;4643:119;4801:1;4826:53;4871:7;4862:6;4851:9;4847:22;4826:53;:::i;:::-;4816:63;;4772:117;4928:2;4954:53;4999:7;4990:6;4979:9;4975:22;4954:53;:::i;:::-;4944:63;;4899:118;5056:2;5082:53;5127:7;5118:6;5107:9;5103:22;5082:53;:::i;:::-;5072:63;;5027:118;4533:619;;;;;:::o;5158:118::-;5245:24;5263:5;5245:24;:::i;:::-;5240:3;5233:37;5158:118;;:::o;5282:222::-;5375:4;5413:2;5402:9;5398:18;5390:26;;5426:71;5494:1;5483:9;5479:17;5470:6;5426:71;:::i;:::-;5282:222;;;;:::o;5510:86::-;5545:7;5585:4;5578:5;5574:16;5563:27;;5510:86;;;:::o;5602:112::-;5685:22;5701:5;5685:22;:::i;:::-;5680:3;5673:35;5602:112;;:::o;5720:214::-;5809:4;5847:2;5836:9;5832:18;5824:26;;5860:67;5924:1;5913:9;5909:17;5900:6;5860:67;:::i;:::-;5720:214;;;;:::o;5940:329::-;5999:6;6048:2;6036:9;6027:7;6023:23;6019:32;6016:119;;;6054:79;;:::i;:::-;6016:119;6174:1;6199:53;6244:7;6235:6;6224:9;6220:22;6199:53;:::i;:::-;6189:63;;6145:117;5940:329;;;;:::o;6275:::-;6334:6;6383:2;6371:9;6362:7;6358:23;6354:32;6351:119;;;6389:79;;:::i;:::-;6351:119;6509:1;6534:53;6579:7;6570:6;6559:9;6555:22;6534:53;:::i;:::-;6524:63;;6480:117;6275:329;;;;:::o;6610:117::-;6719:1;6716;6709:12;6733:180;6781:77;6778:1;6771:88;6878:4;6875:1;6868:15;6902:4;6899:1;6892:15;6919:281;7002:27;7024:4;7002:27;:::i;:::-;6994:6;6990:40;7132:6;7120:10;7117:22;7096:18;7084:10;7081:34;7078:62;7075:88;;;7143:18;;:::i;:::-;7075:88;7183:10;7179:2;7172:22;6962:238;6919:281;;:::o;7206:129::-;7240:6;7267:20;;:::i;:::-;7257:30;;7296:33;7324:4;7316:6;7296:33;:::i;:::-;7206:129;;;:::o;7341:311::-;7418:4;7508:18;7500:6;7497:30;7494:56;;;7530:18;;:::i;:::-;7494:56;7580:4;7572:6;7568:17;7560:25;;7640:4;7634;7630:15;7622:23;;7341:311;;;:::o;7658:117::-;7767:1;7764;7757:12;7798:710;7894:5;7919:81;7935:64;7992:6;7935:64;:::i;:::-;7919:81;:::i;:::-;7910:90;;8020:5;8049:6;8042:5;8035:21;8083:4;8076:5;8072:16;8065:23;;8136:4;8128:6;8124:17;8116:6;8112:30;8165:3;8157:6;8154:15;8151:122;;;8184:79;;:::i;:::-;8151:122;8299:6;8282:220;8316:6;8311:3;8308:15;8282:220;;;8391:3;8420:37;8453:3;8441:10;8420:37;:::i;:::-;8415:3;8408:50;8487:4;8482:3;8478:14;8471:21;;8358:144;8342:4;8337:3;8333:14;8326:21;;8282:220;;;8286:21;7900:608;;7798:710;;;;;:::o;8531:370::-;8602:5;8651:3;8644:4;8636:6;8632:17;8628:27;8618:122;;8659:79;;:::i;:::-;8618:122;8776:6;8763:20;8801:94;8891:3;8883:6;8876:4;8868:6;8864:17;8801:94;:::i;:::-;8792:103;;8608:293;8531:370;;;;:::o;8907:539::-;8991:6;9040:2;9028:9;9019:7;9015:23;9011:32;9008:119;;;9046:79;;:::i;:::-;9008:119;9194:1;9183:9;9179:17;9166:31;9224:18;9216:6;9213:30;9210:117;;;9246:79;;:::i;:::-;9210:117;9351:78;9421:7;9412:6;9401:9;9397:22;9351:78;:::i;:::-;9341:88;;9137:302;8907:539;;;;:::o;9452:474::-;9520:6;9528;9577:2;9565:9;9556:7;9552:23;9548:32;9545:119;;;9583:79;;:::i;:::-;9545:119;9703:1;9728:53;9773:7;9764:6;9753:9;9749:22;9728:53;:::i;:::-;9718:63;;9674:117;9830:2;9856:53;9901:7;9892:6;9881:9;9877:22;9856:53;:::i;:::-;9846:63;;9801:118;9452:474;;;;;:::o;9932:60::-;9960:3;9981:5;9974:12;;9932:60;;;:::o;9998:142::-;10048:9;10081:53;10099:34;10108:24;10126:5;10108:24;:::i;:::-;10099:34;:::i;:::-;10081:53;:::i;:::-;10068:66;;9998:142;;;:::o;10146:126::-;10196:9;10229:37;10260:5;10229:37;:::i;:::-;10216:50;;10146:126;;;:::o;10278:148::-;10350:9;10383:37;10414:5;10383:37;:::i;:::-;10370:50;;10278:148;;;:::o;10432:175::-;10541:59;10594:5;10541:59;:::i;:::-;10536:3;10529:72;10432:175;;:::o;10613:266::-;10728:4;10766:2;10755:9;10751:18;10743:26;;10779:93;10869:1;10858:9;10854:17;10845:6;10779:93;:::i;:::-;10613:266;;;;:::o;10885:180::-;10933:77;10930:1;10923:88;11030:4;11027:1;11020:15;11054:4;11051:1;11044:15;11071:320;11115:6;11152:1;11146:4;11142:12;11132:22;;11199:1;11193:4;11189:12;11220:18;11210:81;;11276:4;11268:6;11264:17;11254:27;;11210:81;11338:2;11330:6;11327:14;11307:18;11304:38;11301:84;;11357:18;;:::i;:::-;11301:84;11122:269;11071:320;;;:::o;11397:172::-;11537:24;11533:1;11525:6;11521:14;11514:48;11397:172;:::o;11575:366::-;11717:3;11738:67;11802:2;11797:3;11738:67;:::i;:::-;11731:74;;11814:93;11903:3;11814:93;:::i;:::-;11932:2;11927:3;11923:12;11916:19;;11575:366;;;:::o;11947:419::-;12113:4;12151:2;12140:9;12136:18;12128:26;;12200:9;12194:4;12190:20;12186:1;12175:9;12171:17;12164:47;12228:131;12354:4;12228:131;:::i;:::-;12220:139;;11947:419;;;:::o;12372:180::-;12420:77;12417:1;12410:88;12517:4;12514:1;12507:15;12541:4;12538:1;12531:15;12558:194;12598:4;12618:20;12636:1;12618:20;:::i;:::-;12613:25;;12652:20;12670:1;12652:20;:::i;:::-;12647:25;;12696:1;12693;12689:9;12681:17;;12720:1;12714:4;12711:11;12708:37;;;12725:18;;:::i;:::-;12708:37;12558:194;;;;:::o;12758:191::-;12798:3;12817:20;12835:1;12817:20;:::i;:::-;12812:25;;12851:20;12869:1;12851:20;:::i;:::-;12846:25;;12894:1;12891;12887:9;12880:16;;12915:3;12912:1;12909:10;12906:36;;;12922:18;;:::i;:::-;12906:36;12758:191;;;;:::o;12955:161::-;13095:13;13091:1;13083:6;13079:14;13072:37;12955:161;:::o;13122:366::-;13264:3;13285:67;13349:2;13344:3;13285:67;:::i;:::-;13278:74;;13361:93;13450:3;13361:93;:::i;:::-;13479:2;13474:3;13470:12;13463:19;;13122:366;;;:::o;13494:419::-;13660:4;13698:2;13687:9;13683:18;13675:26;;13747:9;13741:4;13737:20;13733:1;13722:9;13718:17;13711:47;13775:131;13901:4;13775:131;:::i;:::-;13767:139;;13494:419;;;:::o;13919:410::-;13959:7;13982:20;14000:1;13982:20;:::i;:::-;13977:25;;14016:20;14034:1;14016:20;:::i;:::-;14011:25;;14071:1;14068;14064:9;14093:30;14111:11;14093:30;:::i;:::-;14082:41;;14272:1;14263:7;14259:15;14256:1;14253:22;14233:1;14226:9;14206:83;14183:139;;14302:18;;:::i;:::-;14183:139;13967:362;13919:410;;;;:::o;14335:180::-;14383:77;14380:1;14373:88;14480:4;14477:1;14470:15;14504:4;14501:1;14494:15;14521:185;14561:1;14578:20;14596:1;14578:20;:::i;:::-;14573:25;;14612:20;14630:1;14612:20;:::i;:::-;14607:25;;14651:1;14641:35;;14656:18;;:::i;:::-;14641:35;14698:1;14695;14691:9;14686:14;;14521:185;;;;:::o;14712:147::-;14813:11;14850:3;14835:18;;14712:147;;;;:::o;14865:114::-;;:::o;14985:398::-;15144:3;15165:83;15246:1;15241:3;15165:83;:::i;:::-;15158:90;;15257:93;15346:3;15257:93;:::i;:::-;15375:1;15370:3;15366:11;15359:18;;14985:398;;;:::o;15389:379::-;15573:3;15595:147;15738:3;15595:147;:::i;:::-;15588:154;;15759:3;15752:10;;15389:379;;;:::o;15774:182::-;15914:34;15910:1;15902:6;15898:14;15891:58;15774:182;:::o;15962:366::-;16104:3;16125:67;16189:2;16184:3;16125:67;:::i;:::-;16118:74;;16201:93;16290:3;16201:93;:::i;:::-;16319:2;16314:3;16310:12;16303:19;;15962:366;;;:::o;16334:419::-;16500:4;16538:2;16527:9;16523:18;16515:26;;16587:9;16581:4;16577:20;16573:1;16562:9;16558:17;16551:47;16615:131;16741:4;16615:131;:::i;:::-;16607:139;;16334:419;;;:::o;16759:165::-;16899:17;16895:1;16887:6;16883:14;16876:41;16759:165;:::o;16930:366::-;17072:3;17093:67;17157:2;17152:3;17093:67;:::i;:::-;17086:74;;17169:93;17258:3;17169:93;:::i;:::-;17287:2;17282:3;17278:12;17271:19;;16930:366;;;:::o;17302:419::-;17468:4;17506:2;17495:9;17491:18;17483:26;;17555:9;17549:4;17545:20;17541:1;17530:9;17526:17;17519:47;17583:131;17709:4;17583:131;:::i;:::-;17575:139;;17302:419;;;:::o;17727:172::-;17867:24;17863:1;17855:6;17851:14;17844:48;17727:172;:::o;17905:366::-;18047:3;18068:67;18132:2;18127:3;18068:67;:::i;:::-;18061:74;;18144:93;18233:3;18144:93;:::i;:::-;18262:2;18257:3;18253:12;18246:19;;17905:366;;;:::o;18277:419::-;18443:4;18481:2;18470:9;18466:18;18458:26;;18530:9;18524:4;18520:20;18516:1;18505:9;18501:17;18494:47;18558:131;18684:4;18558:131;:::i;:::-;18550:139;;18277:419;;;:::o;18702:170::-;18842:22;18838:1;18830:6;18826:14;18819:46;18702:170;:::o;18878:366::-;19020:3;19041:67;19105:2;19100:3;19041:67;:::i;:::-;19034:74;;19117:93;19206:3;19117:93;:::i;:::-;19235:2;19230:3;19226:12;19219:19;;18878:366;;;:::o;19250:419::-;19416:4;19454:2;19443:9;19439:18;19431:26;;19503:9;19497:4;19493:20;19489:1;19478:9;19474:17;19467:47;19531:131;19657:4;19531:131;:::i;:::-;19523:139;;19250:419;;;:::o;19675:180::-;19723:77;19720:1;19713:88;19820:4;19817:1;19810:15;19844:4;19841:1;19834:15;19861:85;19906:7;19935:5;19924:16;;19861:85;;;:::o;19952:158::-;20010:9;20043:61;20061:42;20070:32;20096:5;20070:32;:::i;:::-;20061:42;:::i;:::-;20043:61;:::i;:::-;20030:74;;19952:158;;;:::o;20116:147::-;20211:45;20250:5;20211:45;:::i;:::-;20206:3;20199:58;20116:147;;:::o;20269:238::-;20370:4;20408:2;20397:9;20393:18;20385:26;;20421:79;20497:1;20486:9;20482:17;20473:6;20421:79;:::i;:::-;20269:238;;;;:::o;20513:233::-;20552:3;20575:24;20593:5;20575:24;:::i;:::-;20566:33;;20621:66;20614:5;20611:77;20608:103;;20691:18;;:::i;:::-;20608:103;20738:1;20731:5;20727:13;20720:20;;20513:233;;;:::o;20752:225::-;20892:34;20888:1;20880:6;20876:14;20869:58;20961:8;20956:2;20948:6;20944:15;20937:33;20752:225;:::o;20983:366::-;21125:3;21146:67;21210:2;21205:3;21146:67;:::i;:::-;21139:74;;21222:93;21311:3;21222:93;:::i;:::-;21340:2;21335:3;21331:12;21324:19;;20983:366;;;:::o;21355:419::-;21521:4;21559:2;21548:9;21544:18;21536:26;;21608:9;21602:4;21598:20;21594:1;21583:9;21579:17;21572:47;21636:131;21762:4;21636:131;:::i;:::-;21628:139;;21355:419;;;:::o;21780:182::-;21920:34;21916:1;21908:6;21904:14;21897:58;21780:182;:::o;21968:366::-;22110:3;22131:67;22195:2;22190:3;22131:67;:::i;:::-;22124:74;;22207:93;22296:3;22207:93;:::i;:::-;22325:2;22320:3;22316:12;22309:19;;21968:366;;;:::o;22340:419::-;22506:4;22544:2;22533:9;22529:18;22521:26;;22593:9;22587:4;22583:20;22579:1;22568:9;22564:17;22557:47;22621:131;22747:4;22621:131;:::i;:::-;22613:139;;22340:419;;;:::o;22765:166::-;22905:18;22901:1;22893:6;22889:14;22882:42;22765:166;:::o;22937:366::-;23079:3;23100:67;23164:2;23159:3;23100:67;:::i;:::-;23093:74;;23176:93;23265:3;23176:93;:::i;:::-;23294:2;23289:3;23285:12;23278:19;;22937:366;;;:::o;23309:419::-;23475:4;23513:2;23502:9;23498:18;23490:26;;23562:9;23556:4;23552:20;23548:1;23537:9;23533:17;23526:47;23590:131;23716:4;23590:131;:::i;:::-;23582:139;;23309:419;;;:::o;23734:165::-;23874:17;23870:1;23862:6;23858:14;23851:41;23734:165;:::o;23905:366::-;24047:3;24068:67;24132:2;24127:3;24068:67;:::i;:::-;24061:74;;24144:93;24233:3;24144:93;:::i;:::-;24262:2;24257:3;24253:12;24246:19;;23905:366;;;:::o;24277:419::-;24443:4;24481:2;24470:9;24466:18;24458:26;;24530:9;24524:4;24520:20;24516:1;24505:9;24501:17;24494:47;24558:131;24684:4;24558:131;:::i;:::-;24550:139;;24277:419;;;:::o;24702:169::-;24842:21;24838:1;24830:6;24826:14;24819:45;24702:169;:::o;24877:366::-;25019:3;25040:67;25104:2;25099:3;25040:67;:::i;:::-;25033:74;;25116:93;25205:3;25116:93;:::i;:::-;25234:2;25229:3;25225:12;25218:19;;24877:366;;;:::o;25249:419::-;25415:4;25453:2;25442:9;25438:18;25430:26;;25502:9;25496:4;25492:20;25488:1;25477:9;25473:17;25466:47;25530:131;25656:4;25530:131;:::i;:::-;25522:139;;25249:419;;;:::o;25674:102::-;25716:8;25763:5;25760:1;25756:13;25735:34;;25674:102;;;:::o;25782:848::-;25843:5;25850:4;25874:6;25865:15;;25898:5;25889:14;;25912:712;25933:1;25923:8;25920:15;25912:712;;;26028:4;26023:3;26019:14;26013:4;26010:24;26007:50;;;26037:18;;:::i;:::-;26007:50;26087:1;26077:8;26073:16;26070:451;;;26502:4;26495:5;26491:16;26482:25;;26070:451;26552:4;26546;26542:15;26534:23;;26582:32;26605:8;26582:32;:::i;:::-;26570:44;;25912:712;;;25782:848;;;;;;;:::o;26636:1073::-;26690:5;26881:8;26871:40;;26902:1;26893:10;;26904:5;;26871:40;26930:4;26920:36;;26947:1;26938:10;;26949:5;;26920:36;27016:4;27064:1;27059:27;;;;27100:1;27095:191;;;;27009:277;;27059:27;27077:1;27068:10;;27079:5;;;27095:191;27140:3;27130:8;27127:17;27124:43;;;27147:18;;:::i;:::-;27124:43;27196:8;27193:1;27189:16;27180:25;;27231:3;27224:5;27221:14;27218:40;;;27238:18;;:::i;:::-;27218:40;27271:5;;;27009:277;;27395:2;27385:8;27382:16;27376:3;27370:4;27367:13;27363:36;27345:2;27335:8;27332:16;27327:2;27321:4;27318:12;27314:35;27298:111;27295:246;;;27451:8;27445:4;27441:19;27432:28;;27486:3;27479:5;27476:14;27473:40;;;27493:18;;:::i;:::-;27473:40;27526:5;;27295:246;27566:42;27604:3;27594:8;27588:4;27585:1;27566:42;:::i;:::-;27551:57;;;;27640:4;27635:3;27631:14;27624:5;27621:25;27618:51;;;27649:18;;:::i;:::-;27618:51;27698:4;27691:5;27687:16;27678:25;;26636:1073;;;;;;:::o;27715:281::-;27773:5;27797:23;27815:4;27797:23;:::i;:::-;27789:31;;27841:25;27857:8;27841:25;:::i;:::-;27829:37;;27885:104;27922:66;27912:8;27906:4;27885:104;:::i;:::-;27876:113;;27715:281;;;;:::o;28002:176::-;28034:1;28051:20;28069:1;28051:20;:::i;:::-;28046:25;;28085:20;28103:1;28085:20;:::i;:::-;28080:25;;28124:1;28114:35;;28129:18;;:::i;:::-;28114:35;28170:1;28167;28163:9;28158:14;;28002:176;;;;:::o;28184:807::-;28433:4;28471:3;28460:9;28456:19;28448:27;;28485:71;28553:1;28542:9;28538:17;28529:6;28485:71;:::i;:::-;28566:72;28634:2;28623:9;28619:18;28610:6;28566:72;:::i;:::-;28648:80;28724:2;28713:9;28709:18;28700:6;28648:80;:::i;:::-;28738;28814:2;28803:9;28799:18;28790:6;28738:80;:::i;:::-;28828:73;28896:3;28885:9;28881:19;28872:6;28828:73;:::i;:::-;28911;28979:3;28968:9;28964:19;28955:6;28911:73;:::i;:::-;28184:807;;;;;;;;;:::o;28997:143::-;29054:5;29085:6;29079:13;29070:22;;29101:33;29128:5;29101:33;:::i;:::-;28997:143;;;;:::o;29146:663::-;29234:6;29242;29250;29299:2;29287:9;29278:7;29274:23;29270:32;29267:119;;;29305:79;;:::i;:::-;29267:119;29425:1;29450:64;29506:7;29497:6;29486:9;29482:22;29450:64;:::i;:::-;29440:74;;29396:128;29563:2;29589:64;29645:7;29636:6;29625:9;29621:22;29589:64;:::i;:::-;29579:74;;29534:129;29702:2;29728:64;29784:7;29775:6;29764:9;29760:22;29728:64;:::i;:::-;29718:74;;29673:129;29146:663;;;;;:::o;29815:143::-;29872:5;29903:6;29897:13;29888:22;;29919:33;29946:5;29919:33;:::i;:::-;29815:143;;;;:::o;29964:351::-;30034:6;30083:2;30071:9;30062:7;30058:23;30054:32;30051:119;;;30089:79;;:::i;:::-;30051:119;30209:1;30234:64;30290:7;30281:6;30270:9;30266:22;30234:64;:::i;:::-;30224:74;;30180:128;29964:351;;;;:::o;30321:114::-;30388:6;30422:5;30416:12;30406:22;;30321:114;;;:::o;30441:184::-;30540:11;30574:6;30569:3;30562:19;30614:4;30609:3;30605:14;30590:29;;30441:184;;;;:::o;30631:132::-;30698:4;30721:3;30713:11;;30751:4;30746:3;30742:14;30734:22;;30631:132;;;:::o;30769:108::-;30846:24;30864:5;30846:24;:::i;:::-;30841:3;30834:37;30769:108;;:::o;30883:179::-;30952:10;30973:46;31015:3;31007:6;30973:46;:::i;:::-;31051:4;31046:3;31042:14;31028:28;;30883:179;;;;:::o;31068:113::-;31138:4;31170;31165:3;31161:14;31153:22;;31068:113;;;:::o;31217:732::-;31336:3;31365:54;31413:5;31365:54;:::i;:::-;31435:86;31514:6;31509:3;31435:86;:::i;:::-;31428:93;;31545:56;31595:5;31545:56;:::i;:::-;31624:7;31655:1;31640:284;31665:6;31662:1;31659:13;31640:284;;;31741:6;31735:13;31768:63;31827:3;31812:13;31768:63;:::i;:::-;31761:70;;31854:60;31907:6;31854:60;:::i;:::-;31844:70;;31700:224;31687:1;31684;31680:9;31675:14;;31640:284;;;31644:14;31940:3;31933:10;;31341:608;;;31217:732;;;;:::o;31955:831::-;32218:4;32256:3;32245:9;32241:19;32233:27;;32270:71;32338:1;32327:9;32323:17;32314:6;32270:71;:::i;:::-;32351:80;32427:2;32416:9;32412:18;32403:6;32351:80;:::i;:::-;32478:9;32472:4;32468:20;32463:2;32452:9;32448:18;32441:48;32506:108;32609:4;32600:6;32506:108;:::i;:::-;32498:116;;32624:72;32692:2;32681:9;32677:18;32668:6;32624:72;:::i;:::-;32706:73;32774:3;32763:9;32759:19;32750:6;32706:73;:::i;:::-;31955:831;;;;;;;;:::o

Swarm Source

ipfs://21dacedf48cdf5b712214f4af1f5ae9684605e00032eff6e7ee69d3b6961f79c

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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