ETH Price: $2,903.58 (+0.78%)

Contract

0xD89FA564fFeaFA49797b05A3C81eD79fD4E1Ea7A
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Execute Emergenc...102274192024-10-18 15:17:33465 days ago1729264653IN
0xD89FA564...fD4E1Ea7A
0 ETH0.000000730.00500307
Sign Emergency W...102271722024-10-18 15:09:19465 days ago1729264159IN
0xD89FA564...fD4E1Ea7A
0 ETH0.000000320.00506357
Sign Emergency W...102270452024-10-18 15:05:05465 days ago1729263905IN
0xD89FA564...fD4E1Ea7A
0 ETH0.00000040.00644324
Sign Emergency W...102264142024-10-18 14:44:03465 days ago1729262643IN
0xD89FA564...fD4E1Ea7A
0 ETH0.000000510.00635077
Propose Emergenc...102260822024-10-18 14:32:59465 days ago1729261979IN
0xD89FA564...fD4E1Ea7A
0 ETH0.00000030.00510832
Claim Rewards102167252024-10-18 9:21:05465 days ago1729243265IN
0xD89FA564...fD4E1Ea7A
0 ETH0.000000310.00298663
Claim Rewards101275212024-10-16 7:47:37467 days ago1729064857IN
0xD89FA564...fD4E1Ea7A
0 ETH0.000000350.00381488
Mine100994962024-10-15 16:13:27468 days ago1729008807IN
0xD89FA564...fD4E1Ea7A
0 ETH0.000000190.0066421
Mine100994882024-10-15 16:13:11468 days ago1729008791IN
0xD89FA564...fD4E1Ea7A
0 ETH0.000000190.00660931
Complete Mining100994852024-10-15 16:13:05468 days ago1729008785IN
0xD89FA564...fD4E1Ea7A
0 ETH0.001272441.50549281
Mine100994772024-10-15 16:12:49468 days ago1729008769IN
0xD89FA564...fD4E1Ea7A
0 ETH0.000033020.00656701
Mine100994652024-10-15 16:12:25468 days ago1729008745IN
0xD89FA564...fD4E1Ea7A
0 ETH0.000033990.00660931
Mine100994602024-10-15 16:12:15468 days ago1729008735IN
0xD89FA564...fD4E1Ea7A
0 ETH0.000033790.00671948
Mine100994562024-10-15 16:12:07468 days ago1729008727IN
0xD89FA564...fD4E1Ea7A
0 ETH0.000033390.00663965
Mine100994432024-10-15 16:11:41468 days ago1729008701IN
0xD89FA564...fD4E1Ea7A
0 ETH0.00003340.0066421
Mine100994392024-10-15 16:11:33468 days ago1729008693IN
0xD89FA564...fD4E1Ea7A
0 ETH0.00003340.0066421
Mine100994342024-10-15 16:11:23468 days ago1729008683IN
0xD89FA564...fD4E1Ea7A
0 ETH0.000033530.00666836
Mine100994302024-10-15 16:11:15468 days ago1729008675IN
0xD89FA564...fD4E1Ea7A
0 ETH0.00003340.0066421
Mine100994272024-10-15 16:11:09468 days ago1729008669IN
0xD89FA564...fD4E1Ea7A
0 ETH0.000033530.00666836
Mine100994232024-10-15 16:11:01468 days ago1729008661IN
0xD89FA564...fD4E1Ea7A
0 ETH0.000033830.00672738
Mine100994182024-10-15 16:10:51468 days ago1729008651IN
0xD89FA564...fD4E1Ea7A
0 ETH0.000033420.00664517
Mine100994062024-10-15 16:10:27468 days ago1729008627IN
0xD89FA564...fD4E1Ea7A
0 ETH0.000033530.00666836
Mine100994032024-10-15 16:10:21468 days ago1729008621IN
0xD89FA564...fD4E1Ea7A
0 ETH0.000033830.00672738
Mine100994002024-10-15 16:10:15468 days ago1729008615IN
0xD89FA564...fD4E1Ea7A
0 ETH0.000033830.00672738
Mine100993752024-10-15 16:09:25468 days ago1729008565IN
0xD89FA564...fD4E1Ea7A
0 ETH0.00003390.0067408
View all transactions

Latest 14 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
102274192024-10-18 15:17:33465 days ago1729264653
0xD89FA564...fD4E1Ea7A
0.00320181 ETH
100994852024-10-15 16:13:05468 days ago1729008785
0xD89FA564...fD4E1Ea7A
0.0000236 ETH
100994852024-10-15 16:13:05468 days ago1729008785
0xD89FA564...fD4E1Ea7A
0.0000234 ETH
100994852024-10-15 16:13:05468 days ago1729008785
0xD89FA564...fD4E1Ea7A
0.00035575 ETH
100860792024-10-15 8:46:13468 days ago1728981973
0xD89FA564...fD4E1Ea7A
0.05 ETH
100639622024-10-14 20:28:59468 days ago1728937739
0xD89FA564...fD4E1Ea7A
0.00015007 ETH
100639622024-10-14 20:28:59468 days ago1728937739
0xD89FA564...fD4E1Ea7A
0.0001272 ETH
100639622024-10-14 20:28:59468 days ago1728937739
0xD89FA564...fD4E1Ea7A
0.00025667 ETH
100594422024-10-14 17:58:19468 days ago1728928699
0xD89FA564...fD4E1Ea7A
0.05 ETH
97626692024-10-07 21:05:53475 days ago1728335153
0xD89FA564...fD4E1Ea7A
0.00001734 ETH
97626692024-10-07 21:05:53475 days ago1728335153
0xD89FA564...fD4E1Ea7A
0.00000412 ETH
97626692024-10-07 21:05:53475 days ago1728335153
0xD89FA564...fD4E1Ea7A
0.00014825 ETH
97621372024-10-07 20:48:09475 days ago1728334089
0xD89FA564...fD4E1Ea7A
0.00014825 ETH
97493172024-10-07 13:40:49476 days ago1728308449
0xD89FA564...fD4E1Ea7A
0.06 ETH

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KONKHypersPool

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 11: KONKHypersPool.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;

import "./IERC20.sol";
import "./Ownable.sol";
import "./ReentrancyGuard.sol";
import "./SafeMath.sol";
import "./IKHYPERSToken.sol";
import "./IBlast.sol";
import "./IBlastPoints.sol";
import "./IHypersoundV3.sol";
import "./IKONKMaster.sol";

contract KONKHypersPool is ReentrancyGuard, Ownable {
    using SafeMath for uint256;

    IBlast public constant BLAST = IBlast(0x4300000000000000000000000000000000000002);
    IBlastPoints public constant BLAST_POINTS = IBlastPoints(0x2536FE9ab3F511540F2f9e2eC2A805005C3Dd800);
    IKONKMaster public masterContract;
    IHypersoundV3 public hypersound;
    IERC20 public hypersToken;

    uint256 public poolCap;
    uint256 public fixedDeposit;
    uint256 public stakerDiscount;
    uint256 public fixedFeeAmount;
    uint256 public platformFees;
    uint256 public totalHypersMined;
    uint256 public miningSessionCount;
    uint256 public constant MINIMUM_SPEND_PERCENTAGE = 1;

    address public pointsOperator;
    address public currentMiningBot;

    struct Pool {
        uint256 totalDeposits;
        bool locked;
        uint256 smartRampVotes;
        uint256 aggressiveVotes;
        uint256 contributorCount;
        uint256 sessionId;
        uint256 hypersEarned;
        address[] depositors;
        mapping(address => bool) isDepositor;
    }

    Pool public currentPool;

    mapping(address => uint256) public poolDeposits;
    uint256 public accumulatedHypersRewards;

    uint256 public platformFeePercentage = 10;
    bool public miningSessionInProgress;

    // Multisig variables
    address[5] public signers;
    uint256 public constant REQUIRED_SIGNATURES = 3;
    mapping(address => bool) public isSigner;
    uint256 public emergencyWithdrawalProposalId;
    mapping(uint256 => mapping(address => bool)) public hasSignedWithdrawal;
    uint256 public emergencyWithdrawalSignatures;

    IKHYPERSToken public kHypersToken;
    uint256 public totalKHypersMinted;

    event Deposited(address indexed user, uint256 amount, uint256 fee, bool isSmartRamp, uint256 sessionId);
    event PoolFilled(uint256 sessionId, uint256 smartRampVotes, uint256 aggressiveVotes, uint256 poolAmount);
    event RewardsClaimed(address indexed user, uint256 amount);
    event MiningSessionStarted(uint256 sessionId, uint256 requiredAmount, address bot);
    event MiningComplete(uint256 sessionId, uint256 totalRewards);
    event RewardDistributed(address indexed user, uint256 amount);
    event PoolReset(uint256 indexed newSessionId);
    event PoolYieldAndGasClaimed(uint256 yieldAmount, uint256 gasAmount);
    event EmergencyWithdrawalExecuted(uint256 proposalId, uint256 ethAmount, uint256 hypersAmount);
    event SignerUpdated(address oldSigner, address newSigner);

    constructor(
            address _pointsOperator,
            address _hypersound,
            address _masterContract,
            address _hypersToken,
            uint256 _poolCap,
            uint256 _fixedDeposit,
            uint256 _fixedFeeAmount,
            uint256 _stakerDiscount,
            address _kHypersTokenAddress,
            address[5] memory _initialSigners
        ) Ownable(msg.sender) {
            pointsOperator = _pointsOperator;
            BLAST_POINTS.configurePointsOperator(_pointsOperator);
            hypersound = IHypersoundV3(_hypersound);
            masterContract = IKONKMaster(_masterContract);
            hypersToken = IERC20(_hypersToken);
            poolCap = _poolCap;
            fixedDeposit = _fixedDeposit;
            fixedFeeAmount = _fixedFeeAmount;
            stakerDiscount = _stakerDiscount;
            currentPool.sessionId = 1;

            BLAST.configureClaimableYield();
            BLAST.configureClaimableGas();

            kHypersToken = IKHYPERSToken(_kHypersTokenAddress);

            for (uint i = 0; i < 5; i++) {
                require(_initialSigners[i] != address(0), "Invalid signer");
                signers[i] = _initialSigners[i];
                isSigner[_initialSigners[i]] = true;
            }
        }

    function setFee(uint256 _fixedFeeAmount, uint256 _stakerDiscount) external onlyOwner {
        fixedFeeAmount = _fixedFeeAmount;
        stakerDiscount = _stakerDiscount;
    }

    function multiDeposit(uint256 times, bool isSmartRamp) external payable nonReentrant {
        require(times > 0, "Invalid deposit count");
        uint256 feePerDeposit = calculateFee(msg.sender);
        uint256 totalRequiredAmount = (fixedDeposit + feePerDeposit) * times;
        require(msg.value == totalRequiredAmount, "Incorrect ETH amount");

        uint256 totalDeposit = fixedDeposit * times;
        uint256 totalFees = feePerDeposit * times;

        require(!currentPool.locked, "Pool is locked");
        require(currentPool.totalDeposits + totalDeposit <= poolCap, "Deposit would exceed pool cap");

        for (uint i = 0; i < times; i++) {
            addToCurrentPool(fixedDeposit, isSmartRamp);
            emit Deposited(msg.sender, fixedDeposit, feePerDeposit, isSmartRamp, currentPool.sessionId);
        }

        platformFees += totalFees;
    }

    function calculateFee(address user) public view returns (uint256) {
        uint256 stakedAmount = masterContract.getStakedAmount(user);
        if (stakedAmount >= 5555 * 1e18) {
            uint256 discount = fixedFeeAmount * stakerDiscount / 10000;
            return fixedFeeAmount > discount ? fixedFeeAmount - discount : 0;
        }
        return fixedFeeAmount;
    }

    function addToCurrentPool(uint256 amount, bool isSmartRamp) internal {
        currentPool.totalDeposits += amount;
        poolDeposits[msg.sender] += amount;

        if (isSmartRamp) {
            currentPool.smartRampVotes += amount;
        } else {
            currentPool.aggressiveVotes += amount;
        }

        if (!currentPool.isDepositor[msg.sender]) {
            currentPool.depositors.push(msg.sender);
            currentPool.isDepositor[msg.sender] = true;
            currentPool.contributorCount++;
        }

        if (currentPool.totalDeposits >= poolCap) {
            currentPool.locked = true;
            emit PoolFilled(currentPool.sessionId, currentPool.smartRampVotes, currentPool.aggressiveVotes, currentPool.totalDeposits);
        }
    }

    function startMining() external {
        require(masterContract.authorizedBotWallets(msg.sender), "Not authorized");
        require(currentPool.locked && !miningSessionInProgress, "Invalid pool state");

        miningSessionInProgress = true;
        currentMiningBot = msg.sender;
        
        uint256 poolAmount = currentPool.totalDeposits;
        (bool success, ) = currentMiningBot.call{value: poolAmount}("");
        require(success, "Failed to send funds to bot");

        currentPool.hypersEarned = hypersToken.balanceOf(address(this));

        emit MiningSessionStarted(currentPool.sessionId, poolAmount, msg.sender);
    }

    function mine(uint256 batchSize) external {
        require(msg.sender == currentMiningBot && miningSessionInProgress, "Not authorized");
        require(batchSize >= 1 && batchSize <= 1000, "Invalid batch size");

        hypersound.mineBatch(batchSize, "");
    }

    function completeMining() external {
        require(msg.sender == currentMiningBot && miningSessionInProgress, "Not authorized");

        uint256 finalHypersBalance = hypersToken.balanceOf(address(this));
        uint256 newRewards = finalHypersBalance - currentPool.hypersEarned;
        totalHypersMined += newRewards;
        accumulatedHypersRewards += newRewards;

        distributeRewards(newRewards);

        uint256 feeToTransfer = platformFees.mul(platformFeePercentage).div(100);
        platformFees = platformFees.sub(feeToTransfer);
        
        (bool feeSuccess, ) = address(masterContract).call{value: feeToTransfer}(
            abi.encodeWithSignature("receivePlatformFees()")
        );
        require(feeSuccess, "Fee transfer failed");

        claimYieldAndGasForCurrentPool();

        emit MiningComplete(currentPool.sessionId, newRewards);

        resetPool();
        miningSessionInProgress = false;
        currentMiningBot = address(0);
    }

    function distributeRewards(uint256 rewardsAmount) internal {
        if (rewardsAmount == 0 || currentPool.totalDeposits == 0) return;

        for (uint i = 0; i < currentPool.depositors.length; i++) {
            address depositor = currentPool.depositors[i];
            uint256 userDeposit = poolDeposits[depositor];
            if (userDeposit > 0) {
                uint256 userRewardShare = (userDeposit * rewardsAmount) / currentPool.totalDeposits;
                kHypersToken.mint(depositor, userRewardShare);
                totalKHypersMinted += userRewardShare;
                emit RewardDistributed(depositor, userRewardShare);
            }
        }
    }

    function claimYieldAndGasForCurrentPool() internal {
        uint256 initialBalance = address(this).balance;

        BLAST.claimAllYield(address(this), address(this));
        uint256 afterYieldBalance = address(this).balance;
        uint256 yieldAmount = afterYieldBalance - initialBalance;

        BLAST.claimMaxGas(address(this), address(this));
        uint256 finalBalance = address(this).balance;
        uint256 gasAmount = finalBalance - afterYieldBalance;

        uint256 totalAmount = yieldAmount + gasAmount;

        if (totalAmount > 0) {
            (bool success, ) = address(masterContract).call{value: totalAmount}(
                abi.encodeWithSignature("receiveYieldAndGas()")
            );
            require(success, "Failed to send yield and gas to master contract");
            
            masterContract.claimYieldAndGas();
            
            emit PoolYieldAndGasClaimed(yieldAmount, gasAmount);
        }
    }

    function resetPool() internal {
        miningSessionCount++;
        
        delete currentPool;
        currentPool.sessionId = miningSessionCount;
        currentPool.locked = false;
        
        emit PoolReset(currentPool.sessionId);
    }

    function claimRewards(uint256 amount) external nonReentrant {
        require(kHypersToken.balanceOf(msg.sender) >= amount, "Insufficient kHYPERS balance");
        require(hypersToken.balanceOf(address(this)) >= amount, "Insufficient HYPERS in pool");
        
        kHypersToken.burn(msg.sender, amount);
        require(hypersToken.transfer(msg.sender, amount), "HYPERS transfer failed");
        
        accumulatedHypersRewards = accumulatedHypersRewards.sub(amount);
        emit RewardsClaimed(msg.sender, amount);
    }

    function withdrawPlatformFees(uint256 amount) external onlyOwner {
        require(amount <= platformFees, "Insufficient fees");
        platformFees -= amount;
        (bool success, ) = msg.sender.call{value: amount}("");
        require(success, "Transfer failed");
    }

    function setPlatformFeePercentage(uint256 _newPercentage) external onlyOwner {
        require(_newPercentage <= 100, "Percentage must be between 0 and 100");
        platformFeePercentage = _newPercentage;
    }

    function updateMasterContract(address _newMasterContract) external onlyOwner {
        require(_newMasterContract != address(0), "Invalid address");
        masterContract = IKONKMaster(_newMasterContract);
    }

    function updatePointsOperator(address _newOperator) external onlyOwner {
        require(_newOperator != address(0), "Invalid address");
        pointsOperator = _newOperator;
        BLAST_POINTS.configurePointsOperator(_newOperator);
    }

    // Multisig and Emergency Withdrawal Functions
    function proposeEmergencyWithdrawal() external onlyOwner {
        require(emergencyWithdrawalSignatures == 0, "Proposal pending");
        emergencyWithdrawalProposalId++;
        emergencyWithdrawalSignatures = 0;
    }

    function signEmergencyWithdrawal() external {
        require(isSigner[msg.sender], "Not a signer");
        require(!hasSignedWithdrawal[emergencyWithdrawalProposalId][msg.sender], "Already signed");

        hasSignedWithdrawal[emergencyWithdrawalProposalId][msg.sender] = true;
        emergencyWithdrawalSignatures++;
    }

    function executeEmergencyWithdrawal() external onlyOwner {
        require(emergencyWithdrawalSignatures >= REQUIRED_SIGNATURES, "Insufficient signatures");
        _executeWithdrawal();
        
        emergencyWithdrawalSignatures = 0;
        for (uint i = 0; i < 5; i++) {
            hasSignedWithdrawal[emergencyWithdrawalProposalId][signers[i]] = false;
        }
    }

    function replaceSigner(address oldSigner, address newSigner) external onlyOwner {
        require(isSigner[oldSigner] && !isSigner[newSigner], "Invalid signers");
        require(newSigner != address(0), "Invalid address");

        for (uint i = 0; i < 5; i++) {
            if (signers[i] == oldSigner) {
                signers[i] = newSigner;
                break;
            }
        }

        isSigner[oldSigner] = false;
        isSigner[newSigner] = true;

        emit SignerUpdated(oldSigner, newSigner);
    }

    function _executeWithdrawal() private {
        uint256 ethBalance = address(this).balance;
        uint256 hypersBalance = hypersToken.balanceOf(address(this));
        
        (bool success, ) = owner().call{value: ethBalance}("");
        require(success, "ETH transfer failed");
        
        require(hypersToken.transfer(owner(), hypersBalance), "HYPERS transfer failed");
        
        emit EmergencyWithdrawalExecuted(emergencyWithdrawalProposalId, ethBalance, hypersBalance);

        delete currentPool;
        miningSessionCount = 0;
        platformFees = 0;
        totalHypersMined = 0;
        accumulatedHypersRewards = 0;
        currentPool.sessionId = 1;
    }

    function updatePoolSettings(uint256 _newFixedDeposit, uint256 _newPoolCap) external onlyOwner {
        require(_newFixedDeposit > 0, "Invalid fixed deposit value");
        require(_newPoolCap > 0 && _newPoolCap >= currentPool.totalDeposits, "Invalid pool cap value");
        
        fixedDeposit = _newFixedDeposit;
        poolCap = _newPoolCap;
    }

    
     // Function to change the kHYPERS token contract if needed
    function setKHypersToken(address newKHypersToken) external onlyOwner {
    kHypersToken = IKHYPERSToken(newKHypersToken);
    }

    function getPoolInfo() external view returns (
        uint256 currentSessionId,
        bool isLocked,
        uint256 totalDeposits,
        uint256 smartRampVotes,
        uint256 aggressiveVotes,
        uint256 contributorCount
    ) {
        return (
            currentPool.sessionId,
            currentPool.locked,
            currentPool.totalDeposits,
            currentPool.smartRampVotes,
            currentPool.aggressiveVotes,
            currentPool.contributorCount
        );
    }

    function getMiningStatus() external view returns (
        bool miningInProgress,
        address currentBot
    ) {
        return (
            miningSessionInProgress,
            currentMiningBot
        );
    }

    function getContractTotalBal() external view returns (
        uint256 balance,
        uint256 hypersBalance
    ) {
        return (
            address(this).balance,
            hypersToken.balanceOf(address(this))
        );
    }

    function getFinancialData() external view returns (
        uint256 totalFees,
        uint256 totalMined,
        uint256 accumulatedRewards
    ) {
        return (
            platformFees,
            totalHypersMined,
            accumulatedHypersRewards
        );
    }

    function getUserInfo(address user) external view returns (
        uint256 currentDeposit,
        uint256 kHYPERSBalance
    ) {
        return (
            poolDeposits[user],
            kHypersToken.balanceOf(user)
        );
    }

    receive() external payable {}
}

File 2 of 11: Context.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;

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

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

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

File 3 of 11: IBlast.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;

interface IBlast {
    function configureClaimableYield() external;
    function configureClaimableGas() external;
    function claimAllYield(address contractAddress, address recipientOfYield) external returns (uint256);
    function claimMaxGas(address contractAddress, address recipientOfGas) external returns (uint256);
}

File 4 of 11: IBlastPoints.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;

interface IBlastPoints {
    function configurePointsOperator(address operator) external;
}

File 5 of 11: IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;

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 value of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

    /**
     * @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool);

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to` using the
     * allowance mechanism. `value` 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 value) external returns (bool);
}

File 6 of 11: IHypersoundV3.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;

interface IHypersoundV3 {
    function mineBatch(uint256 nbTx, bytes calldata extraData) external;
    function balanceOf(address account) external view returns (uint256);
}

File 7 of 11: IKHYPERSToken.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;

import "./IERC20.sol";

interface IKHYPERSToken is IERC20 {
    function authorizedPools(address) external view returns (bool);
    function setPoolAuthorization(address pool, bool isAuthorized) external;
    function mint(address to, uint256 amount) external;
    function burn(address from, uint256 amount) external;
    
    event PoolAuthorizationChanged(address pool, bool isAuthorized);
}

File 8 of 11: IKONKMaster.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;

interface IKONKMaster {
    function authorizedBotWallets(address wallet) external view returns (bool);
    function receiveYieldAndGas() external payable;
    function claimYieldAndGas() external;
    function getStakedAmount(address user) external view returns (uint256);
}

File 9 of 11: Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;

import "./Context.sol";

abstract contract Ownable is Context {
    address private _owner;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

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

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    /**
     * @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 {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @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 {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _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 10 of 11: ReentrancyGuard.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;

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

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

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

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

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

    /**
     * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
     * `nonReentrant` function in the call stack.
     */
    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == _ENTERED;
    }
}

File 11 of 11: SafeMath.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;

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

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

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

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

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

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

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

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

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

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

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

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

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_pointsOperator","type":"address"},{"internalType":"address","name":"_hypersound","type":"address"},{"internalType":"address","name":"_masterContract","type":"address"},{"internalType":"address","name":"_hypersToken","type":"address"},{"internalType":"uint256","name":"_poolCap","type":"uint256"},{"internalType":"uint256","name":"_fixedDeposit","type":"uint256"},{"internalType":"uint256","name":"_fixedFeeAmount","type":"uint256"},{"internalType":"uint256","name":"_stakerDiscount","type":"uint256"},{"internalType":"address","name":"_kHypersTokenAddress","type":"address"},{"internalType":"address[5]","name":"_initialSigners","type":"address[5]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isSmartRamp","type":"bool"},{"indexed":false,"internalType":"uint256","name":"sessionId","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"hypersAmount","type":"uint256"}],"name":"EmergencyWithdrawalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sessionId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalRewards","type":"uint256"}],"name":"MiningComplete","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sessionId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"requiredAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"bot","type":"address"}],"name":"MiningSessionStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sessionId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"smartRampVotes","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"aggressiveVotes","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"poolAmount","type":"uint256"}],"name":"PoolFilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newSessionId","type":"uint256"}],"name":"PoolReset","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"yieldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gasAmount","type":"uint256"}],"name":"PoolYieldAndGasClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldSigner","type":"address"},{"indexed":false,"internalType":"address","name":"newSigner","type":"address"}],"name":"SignerUpdated","type":"event"},{"inputs":[],"name":"BLAST","outputs":[{"internalType":"contract IBlast","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BLAST_POINTS","outputs":[{"internalType":"contract IBlastPoints","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_SPEND_PERCENTAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REQUIRED_SIGNATURES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accumulatedHypersRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"calculateFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"completeMining","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentMiningBot","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPool","outputs":[{"internalType":"uint256","name":"totalDeposits","type":"uint256"},{"internalType":"bool","name":"locked","type":"bool"},{"internalType":"uint256","name":"smartRampVotes","type":"uint256"},{"internalType":"uint256","name":"aggressiveVotes","type":"uint256"},{"internalType":"uint256","name":"contributorCount","type":"uint256"},{"internalType":"uint256","name":"sessionId","type":"uint256"},{"internalType":"uint256","name":"hypersEarned","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdrawalProposalId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdrawalSignatures","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"executeEmergencyWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fixedDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fixedFeeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractTotalBal","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"hypersBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFinancialData","outputs":[{"internalType":"uint256","name":"totalFees","type":"uint256"},{"internalType":"uint256","name":"totalMined","type":"uint256"},{"internalType":"uint256","name":"accumulatedRewards","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMiningStatus","outputs":[{"internalType":"bool","name":"miningInProgress","type":"bool"},{"internalType":"address","name":"currentBot","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolInfo","outputs":[{"internalType":"uint256","name":"currentSessionId","type":"uint256"},{"internalType":"bool","name":"isLocked","type":"bool"},{"internalType":"uint256","name":"totalDeposits","type":"uint256"},{"internalType":"uint256","name":"smartRampVotes","type":"uint256"},{"internalType":"uint256","name":"aggressiveVotes","type":"uint256"},{"internalType":"uint256","name":"contributorCount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserInfo","outputs":[{"internalType":"uint256","name":"currentDeposit","type":"uint256"},{"internalType":"uint256","name":"kHYPERSBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"hasSignedWithdrawal","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hypersToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hypersound","outputs":[{"internalType":"contract IHypersoundV3","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSigner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kHypersToken","outputs":[{"internalType":"contract IKHYPERSToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"masterContract","outputs":[{"internalType":"contract IKONKMaster","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"batchSize","type":"uint256"}],"name":"mine","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"miningSessionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"miningSessionInProgress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"times","type":"uint256"},{"internalType":"bool","name":"isSmartRamp","type":"bool"}],"name":"multiDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platformFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platformFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pointsOperator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"poolDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposeEmergencyWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"oldSigner","type":"address"},{"internalType":"address","name":"newSigner","type":"address"}],"name":"replaceSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fixedFeeAmount","type":"uint256"},{"internalType":"uint256","name":"_stakerDiscount","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newKHypersToken","type":"address"}],"name":"setKHypersToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPercentage","type":"uint256"}],"name":"setPlatformFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"signEmergencyWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"signers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakerDiscount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startMining","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalHypersMined","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalKHypersMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newMasterContract","type":"address"}],"name":"updateMasterContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOperator","type":"address"}],"name":"updatePointsOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFixedDeposit","type":"uint256"},{"internalType":"uint256","name":"_newPoolCap","type":"uint256"}],"name":"updatePoolSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawPlatformFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600a601955348015610014575f5ffd5b5060405161563e38038061563e8339818101604052810190610036919061079e565b3360015f819055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100ae575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100a59190610886565b60405180910390fd5b6100bd8161050360201b60201c565b5089600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732536fe9ab3f511540f2f9e2ec2a805005c3dd80073ffffffffffffffffffffffffffffffffffffffff166336b91f2b8b6040518263ffffffff1660e01b815260040161014b9190610886565b5f604051808303815f87803b158015610162575f5ffd5b505af1158015610174573d5f5f3e3d5ffd5b505050508860035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508760025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508660045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550856005819055508460068190555083600881905550826007819055506001600e6005018190555073430000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff1663f098767a6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156102b8575f5ffd5b505af11580156102ca573d5f5f3e3d5ffd5b5050505073430000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff16634e606c476040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610327575f5ffd5b505af1158015610339573d5f5f3e3d5ffd5b505050508160245f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5f90505b60058110156104f3575f73ffffffffffffffffffffffffffffffffffffffff168282600581106103b5576103b461089f565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1603610410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040790610926565b60405180910390fd5b8181600581106104235761042261089f565b5b6020020151601b826005811061043c5761043b61089f565b5b015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160205f8484600581106104925761049161089f565b5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610382565b5050505050505050505050610944565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f604051905090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6105fc826105d3565b9050919050565b61060c816105f2565b8114610616575f5ffd5b50565b5f8151905061062781610603565b92915050565b5f819050919050565b61063f8161062d565b8114610649575f5ffd5b50565b5f8151905061065a81610636565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6106aa82610664565b810181811067ffffffffffffffff821117156106c9576106c8610674565b5b80604052505050565b5f6106db6105c6565b90506106e782826106a1565b919050565b5f67ffffffffffffffff82111561070657610705610674565b5b602082029050919050565b5f5ffd5b5f610727610722846106ec565b6106d2565b9050806020840283018581111561074157610740610711565b5b835b8181101561076a57806107568882610619565b845260208401935050602081019050610743565b5050509392505050565b5f82601f83011261078857610787610660565b5b6005610795848285610715565b91505092915050565b5f5f5f5f5f5f5f5f5f5f6101c08b8d0312156107bd576107bc6105cf565b5b5f6107ca8d828e01610619565b9a505060206107db8d828e01610619565b99505060406107ec8d828e01610619565b98505060606107fd8d828e01610619565b975050608061080e8d828e0161064c565b96505060a061081f8d828e0161064c565b95505060c06108308d828e0161064c565b94505060e06108418d828e0161064c565b9350506101006108538d828e01610619565b9250506101206108658d828e01610774565b9150509295989b9194979a5092959850565b610880816105f2565b82525050565b5f6020820190506108995f830184610877565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82825260208201905092915050565b7f496e76616c6964207369676e65720000000000000000000000000000000000005f82015250565b5f610910600e836108cc565b915061091b826108dc565b602082019050919050565b5f6020820190508181035f83015261093d81610904565b9050919050565b614ced806109515f395ff3fe60806040526004361061031d575f3560e01c80638c28efba116101aa578063b6e19e06116100f6578063e72328ce11610094578063ef93de1e1161006e578063ef93de1e14610b2a578063f2fde38b14610b52578063f4993bbd14610b7a578063f76e947b14610b9057610324565b8063e72328ce14610ad0578063e994561814610af8578063ea6c2e8414610b0e57610324565b8063cdd78cfc116100d0578063cdd78cfc14610a1a578063d037125014610a44578063dca7bbe614610a6c578063e3d9109f14610aa857610324565b8063b6e19e061461099c578063b954dc57146109c6578063cd446e22146109f057610324565b80639ac18b1911610163578063acddb1c01161013d578063acddb1c014610908578063b009231c14610932578063b0a8d5ca1461095c578063b3381df61461097257610324565b80639ac18b191461088a5780639ec9ac41146108b4578063a64f9ff6146108de57610324565b80638c28efba1461078e5780638da5cb5b146107ba5780639031d1a8146107e4578063941aef641461082057806397d7577614610836578063992f90751461086057610324565b80634c069a33116102695780636aa214161161022257806379a1800a116101fc57806379a1800a146106d65780637a86b282146107005780637df73e271461072a5780638333903e1461076657610324565b80636aa214161461066e5780636d55669514610696578063715018a6146106c057610324565b80634c069a33146105575780634d4748981461058257806352f7c988146105aa57806360246c88146105d25780636386c1c714610601578063692b69ae1461063e57610324565b80632a150127116102d6578063457fb905116102b0578063457fb9051461049d578063465f5eb8146104c757806347fb4553146105035780634b8f90251461052d57610324565b80632a150127146104215780632d35aaba146104495780633da79c151461047357610324565b8063068ed2f5146103285780630962ef791461035257806316de4d5d1461037a578063194a4e7e146103a55780632079fb9a146103cf57806321b79d981461040b57610324565b3661032457005b5f5ffd5b348015610333575f5ffd5b5061033c610bba565b6040516103499190613850565b60405180910390f35b34801561035d575f5ffd5b5061037860048036038101906103739190613897565b610bc0565b005b348015610385575f5ffd5b5061038e610f56565b60405161039c9291906138c2565b60405180910390f35b3480156103b0575f5ffd5b506103b9610ffa565b6040516103c69190613850565b60405180910390f35b3480156103da575f5ffd5b506103f560048036038101906103f09190613897565b611000565b6040516104029190613928565b60405180910390f35b348015610416575f5ffd5b5061041f611034565b005b34801561042c575f5ffd5b506104476004803603810190610442919061396b565b611386565b005b348015610454575f5ffd5b5061045d61143f565b60405161046a9190613850565b60405180910390f35b34801561047e575f5ffd5b50610487611444565b6040516104949190613928565b60405180910390f35b3480156104a8575f5ffd5b506104b1611469565b6040516104be91906139f1565b60405180910390f35b3480156104d2575f5ffd5b506104ed60048036038101906104e8919061396b565b61148e565b6040516104fa9190613850565b60405180910390f35b34801561050e575f5ffd5b5061051761158f565b6040516105249190613928565b60405180910390f35b348015610538575f5ffd5b506105416115b4565b60405161054e9190613a2a565b60405180910390f35b348015610562575f5ffd5b5061056b6115cc565b604051610579929190613a5d565b60405180910390f35b34801561058d575f5ffd5b506105a860048036038101906105a39190613897565b611607565b005b3480156105b5575f5ffd5b506105d060048036038101906105cb9190613a84565b611789565b005b3480156105dd575f5ffd5b506105e66117a3565b6040516105f896959493929190613ac2565b60405180910390f35b34801561060c575f5ffd5b506106276004803603810190610622919061396b565b6117ec565b6040516106359291906138c2565b60405180910390f35b348015610649575f5ffd5b506106526118ce565b6040516106659796959493929190613b21565b60405180910390f35b348015610679575f5ffd5b50610694600480360381019061068f9190613897565b611909565b005b3480156106a1575f5ffd5b506106aa611a1a565b6040516106b79190613850565b60405180910390f35b3480156106cb575f5ffd5b506106d4611a20565b005b3480156106e1575f5ffd5b506106ea611a33565b6040516106f79190613850565b60405180910390f35b34801561070b575f5ffd5b50610714611a39565b6040516107219190613850565b60405180910390f35b348015610735575f5ffd5b50610750600480360381019061074b919061396b565b611a3f565b60405161075d9190613b8e565b60405180910390f35b348015610771575f5ffd5b5061078c60048036038101906107879190613897565b611a5b565b005b348015610799575f5ffd5b506107a2611ab1565b6040516107b193929190613ba7565b60405180910390f35b3480156107c5575f5ffd5b506107ce611ac8565b6040516107db9190613928565b60405180910390f35b3480156107ef575f5ffd5b5061080a6004803603810190610805919061396b565b611af0565b6040516108179190613850565b60405180910390f35b34801561082b575f5ffd5b50610834611b05565b005b348015610841575f5ffd5b5061084a611b71565b6040516108579190613bfc565b60405180910390f35b34801561086b575f5ffd5b50610874611b89565b6040516108819190613850565b60405180910390f35b348015610895575f5ffd5b5061089e611b8f565b6040516108ab9190613850565b60405180910390f35b3480156108bf575f5ffd5b506108c8611b94565b6040516108d59190613850565b60405180910390f35b3480156108e9575f5ffd5b506108f2611b9a565b6040516108ff9190613850565b60405180910390f35b348015610913575f5ffd5b5061091c611ba0565b6040516109299190613850565b60405180910390f35b34801561093d575f5ffd5b50610946611ba6565b6040516109539190613c35565b60405180910390f35b348015610967575f5ffd5b50610970611bcb565b005b34801561097d575f5ffd5b50610986611f9c565b6040516109939190613b8e565b60405180910390f35b3480156109a7575f5ffd5b506109b0611fae565b6040516109bd9190613c6e565b60405180910390f35b3480156109d1575f5ffd5b506109da611fd3565b6040516109e79190613850565b60405180910390f35b3480156109fb575f5ffd5b50610a04611fd9565b604051610a119190613ca7565b60405180910390f35b348015610a25575f5ffd5b50610a2e611ffe565b604051610a3b9190613850565b60405180910390f35b348015610a4f575f5ffd5b50610a6a6004803603810190610a659190613a84565b612004565b005b348015610a77575f5ffd5b50610a926004803603810190610a8d9190613cc0565b6120b2565b604051610a9f9190613b8e565b60405180910390f35b348015610ab3575f5ffd5b50610ace6004803603810190610ac99190613cfe565b6120dc565b005b348015610adb575f5ffd5b50610af66004803603810190610af1919061396b565b6123ef565b005b348015610b03575f5ffd5b50610b0c612522565b005b610b286004803603810190610b239190613d66565b6126c5565b005b348015610b35575f5ffd5b50610b506004803603810190610b4b919061396b565b6128e9565b005b348015610b5d575f5ffd5b50610b786004803603810190610b73919061396b565b612934565b005b348015610b85575f5ffd5b50610b8e6129b8565b005b348015610b9b575f5ffd5b50610ba4612acc565b604051610bb19190613850565b60405180910390f35b600b5481565b610bc8612ad2565b8060245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610c239190613928565b602060405180830381865afa158015610c3e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c629190613db8565b1015610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9a90613e3d565b60405180910390fd5b8060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cfe9190613928565b602060405180830381865afa158015610d19573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3d9190613db8565b1015610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7590613ea5565b60405180910390fd5b60245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac33836040518363ffffffff1660e01b8152600401610dda929190613ec3565b5f604051808303815f87803b158015610df1575f5ffd5b505af1158015610e03573d5f5f3e3d5ffd5b5050505060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610e63929190613ec3565b6020604051808303815f875af1158015610e7f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea39190613efe565b610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed990613f73565b60405180910390fd5b610ef781601854612b1f90919063ffffffff16565b6018819055503373ffffffffffffffffffffffffffffffffffffffff167ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe82604051610f439190613850565b60405180910390a2610f53612b34565b50565b5f5f4760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fb39190613928565b602060405180830381865afa158015610fce573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff29190613db8565b915091509091565b60095481565b601b816005811061100f575f80fd5b015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632058c3b6336040518263ffffffff1660e01b815260040161108e9190613928565b602060405180830381865afa1580156110a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110cd9190613efe565b61110c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110390613fdb565b60405180910390fd5b600e6001015f9054906101000a900460ff1680156111365750601a5f9054906101000a900460ff16155b611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c90614043565b60405180910390fd5b6001601a5f6101000a81548160ff02191690831515021790555033600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600e5f015490505f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161121d9061408e565b5f6040518083038185875af1925050503d805f8114611257576040519150601f19603f3d011682016040523d82523d5f602084013e61125c565b606091505b50509050806112a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611297906140ec565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112fa9190613928565b602060405180830381865afa158015611315573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113399190613db8565b600e600601819055507f677b28c00e1df8ed0bed5e22ae5a2035f0701672bfa215b9809b6d0155e60c56600e60050154833360405161137a9392919061410a565b60405180910390a15050565b61138e612b3d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f390614189565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634da6a556846040518263ffffffff1660e01b81526004016114ea9190613928565b602060405180830381865afa158015611505573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115299190613db8565b905069012d231c7c593eec00008110611583575f61271060075460085461155091906141d4565b61155a9190614242565b9050806008541161156b575f61157a565b806008546115799190614272565b5b9250505061158a565b6008549150505b919050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b732536fe9ab3f511540f2f9e2ec2a805005c3dd80081565b5f5f601a5f9054906101000a900460ff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091509091565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561166e5750601a5f9054906101000a900460ff165b6116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490613fdb565b60405180910390fd5b600181101580156116c057506103e88111155b6116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f6906142ef565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e493031826040518263ffffffff1660e01b8152600401611759919061433d565b5f604051808303815f87803b158015611770575f5ffd5b505af1158015611782573d5f5f3e3d5ffd5b5050505050565b611791612b3d565b81600881905550806007819055505050565b5f5f5f5f5f5f600e60050154600e6001015f9054906101000a900460ff16600e5f0154600e60020154600e60030154600e60040154955095509550955095509550909192939495565b5f5f60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b81526004016118869190613928565b602060405180830381865afa1580156118a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118c59190613db8565b91509150915091565b600e805f015490806001015f9054906101000a900460ff16908060020154908060030154908060040154908060050154908060060154905087565b611911612b3d565b600954811115611956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194d906143b3565b60405180910390fd5b8060095f8282546119679190614272565b925050819055505f3373ffffffffffffffffffffffffffffffffffffffff16826040516119939061408e565b5f6040518083038185875af1925050503d805f81146119cd576040519150601f19603f3d011682016040523d82523d5f602084013e6119d2565b606091505b5050905080611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d9061441b565b60405180910390fd5b5050565b60185481565b611a28612b3d565b611a315f612bc4565b565b60255481565b60215481565b60208052805f5260405f205f915054906101000a900460ff1681565b611a63612b3d565b6064811115611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e906144a9565b60405180910390fd5b8060198190555050565b5f5f5f600954600a54601854925092509250909192565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6017602052805f5260405f205f915090505481565b611b0d612b3d565b5f60235414611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4890614511565b60405180910390fd5b60215f815480929190611b639061452f565b91905055505f602381905550565b73430000000000000000000000000000000000000281565b60235481565b600381565b60085481565b600a5481565b60075481565b60245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015611c325750601a5f9054906101000a900460ff165b611c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6890613fdb565b60405180910390fd5b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ccc9190613928565b602060405180830381865afa158015611ce7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0b9190613db8565b90505f600e6006015482611d1f9190614272565b905080600a5f828254611d329190614576565b925050819055508060185f828254611d4a9190614576565b92505081905550611d5a81612c87565b5f611d856064611d77601954600954612e5f90919063ffffffff16565b612e7490919063ffffffff16565b9050611d9c81600954612b1f90919063ffffffff16565b6009819055505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516024016040516020818303038152906040527f9b29c418000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611e6c91906145f1565b5f6040518083038185875af1925050503d805f8114611ea6576040519150601f19603f3d011682016040523d82523d5f602084013e611eab565b606091505b5050905080611eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee690614651565b60405180910390fd5b611ef7612e89565b7f5e63f04f01459b14a84df2fde69183c88b8cc3ba2b1a5b7d9e7b6ef5b3c0ad44600e6005015484604051611f2d9291906138c2565b60405180910390a1611f3d6131f6565b5f601a5f6101000a81548160ff0219169083151502179055505f600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b601a5f9054906101000a900460ff1681565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b61200c612b3d565b5f821161204e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612045906146b9565b60405180910390fd5b5f811180156120615750600e5f01548110155b6120a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209790614721565b60405180910390fd5b81600681905550806005819055505050565b6022602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b6120e4612b3d565b60205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612181575060205f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6121c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b790614789565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361222e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222590614189565b60405180910390fd5b5f5f90505b6005811015612308578273ffffffffffffffffffffffffffffffffffffffff16601b8260058110612267576122666147a7565b5b015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036122fb5781601b82600581106122b8576122b76147a7565b5b015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612308565b8080600101915050612233565b505f60205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f2d025324f0a785e8c12d0a0d91a9caa49df4ef20ff87e0df7213a1d4f3157beb82826040516123e39291906147d4565b60405180910390a15050565b6123f7612b3d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90614189565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732536fe9ab3f511540f2f9e2ec2a805005c3dd80073ffffffffffffffffffffffffffffffffffffffff166336b91f2b826040518263ffffffff1660e01b81526004016124f29190613928565b5f604051808303815f87803b158015612509575f5ffd5b505af115801561251b573d5f5f3e3d5ffd5b5050505050565b60205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a290614845565b60405180910390fd5b60225f60215481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263d906148ad565b60405180910390fd5b600160225f60215481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060235f8154809291906126be9061452f565b9190505550565b6126cd612ad2565b5f821161270f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270690614915565b60405180910390fd5b5f6127193361148e565b90505f838260065461272b9190614576565b61273591906141d4565b9050803414612779576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127709061497d565b60405180910390fd5b5f8460065461278891906141d4565b90505f858461279791906141d4565b9050600e6001015f9054906101000a900460ff16156127eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e2906149e5565b60405180910390fd5b60055482600e5f01546127fe9190614576565b111561283f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283690614a4d565b60405180910390fd5b5f5f90505b868110156128c057612858600654876132b9565b3373ffffffffffffffffffffffffffffffffffffffff167f66d462ae7c8e10bbc849bf692fa676566a2457b5fa467244bfa87417a0925e056006548789600e600501546040516128ab9493929190614a6b565b60405180910390a28080600101915050612844565b508060095f8282546128d29190614576565b92505081905550505050506128e5612b34565b5050565b6128f1612b3d565b8060245f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61293c612b3d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129ac575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016129a39190613928565b60405180910390fd5b6129b581612bc4565b50565b6129c0612b3d565b60036023541015612a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fd90614af8565b60405180910390fd5b612a0e61350e565b5f6023819055505f5f90505b6005811015612ac9575f60225f60215481526020019081526020015f205f601b8460058110612a4c57612a4b6147a7565b5b015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050612a1a565b50565b60065481565b60025f5403612b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0d90614b60565b60405180910390fd5b60025f81905550565b5f8183612b2c9190614272565b905092915050565b60015f81905550565b612b456137f8565b73ffffffffffffffffffffffffffffffffffffffff16612b63611ac8565b73ffffffffffffffffffffffffffffffffffffffff1614612bc257612b866137f8565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612bb99190613928565b60405180910390fd5b565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f811480612c9857505f600e5f0154145b612e5c575f5f90505b600e60070180549050811015612e5a575f600e6007018281548110612cc957612cc86147a7565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f811115612e4b575f600e5f01548583612d4e91906141d4565b612d589190614242565b905060245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1984836040518363ffffffff1660e01b8152600401612db6929190613ec3565b5f604051808303815f87803b158015612dcd575f5ffd5b505af1158015612ddf573d5f5f3e3d5ffd5b505050508060255f828254612df49190614576565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea682604051612e419190613850565b60405180910390a2505b50508080600101915050612ca1565b505b50565b5f8183612e6c91906141d4565b905092915050565b5f8183612e819190614242565b905092915050565b5f47905073430000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff1663860043b630306040518363ffffffff1660e01b8152600401612edc9291906147d4565b6020604051808303815f875af1158015612ef8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f1c9190613db8565b505f4790505f8282612f2e9190614272565b905073430000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff1663662aa11d30306040518363ffffffff1660e01b8152600401612f7f9291906147d4565b6020604051808303815f875af1158015612f9b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fbf9190613db8565b505f4790505f8382612fd19190614272565b90505f8184612fe09190614576565b90505f8111156131ee575f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516024016040516020818303038152906040527ff128c717000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516130b491906145f1565b5f6040518083038185875af1925050503d805f81146130ee576040519150601f19603f3d011682016040523d82523d5f602084013e6130f3565b606091505b5050905080613137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312e90614bee565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ec8b426040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561319d575f5ffd5b505af11580156131af573d5f5f3e3d5ffd5b505050507f3842b2195b08a05bc0b797bee80aa3f1bcd53f79cf77b1d4a99bfd41b93ae2a785846040516131e49291906138c2565b60405180910390a1505b505050505050565b600b5f8154809291906132089061452f565b9190505550600e5f5f82015f9055600182015f6101000a81549060ff0219169055600282015f9055600382015f9055600482015f9055600582015f9055600682015f9055600782015f61325b91906137ff565b5050600b54600e600501819055505f600e6001015f6101000a81548160ff021916908315150217905550600e600501547ff883bd997a5ff824fb701f4caaec246151da39606d495d24bf5f8f667093daf560405160405180910390a2565b81600e5f015f8282546132cc9190614576565b925050819055508160175f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461331f9190614576565b92505081905550801561334c5781600e6002015f8282546133409190614576565b92505081905550613368565b81600e6003015f8282546133609190614576565b925050819055505b600e6008015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661348f57600e60070133908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e6008015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600e6004015f8154809291906134899061452f565b91905055505b600554600e5f01541061350a576001600e6001015f6101000a81548160ff0219169083151502179055507f4bc8083dd1c3e5ec0ddbfe5bfa4edcf6a8251f2454b1f76e98d776a58bee40ea600e60050154600e60020154600e60030154600e5f01546040516135019493929190614c0c565b60405180910390a15b5050565b5f4790505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161356d9190613928565b602060405180830381865afa158015613588573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135ac9190613db8565b90505f6135b7611ac8565b73ffffffffffffffffffffffffffffffffffffffff16836040516135da9061408e565b5f6040518083038185875af1925050503d805f8114613614576040519150601f19603f3d011682016040523d82523d5f602084013e613619565b606091505b505090508061365d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161365490614c99565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6136a2611ac8565b846040518363ffffffff1660e01b81526004016136c0929190613ec3565b6020604051808303815f875af11580156136dc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137009190613efe565b61373f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161373690613f73565b60405180910390fd5b7fe1afeafeedce22783df08e2c5f38d287bc3bae1e0ee7d12937dc80ebf7db7a3c602154848460405161377493929190613ba7565b60405180910390a1600e5f5f82015f9055600182015f6101000a81549060ff0219169055600282015f9055600382015f9055600482015f9055600582015f9055600682015f9055600782015f6137ca91906137ff565b50505f600b819055505f6009819055505f600a819055505f6018819055506001600e60050181905550505050565b5f33905090565b5080545f8255905f5260205f209081019061381a919061381d565b50565b5b80821115613834575f815f90555060010161381e565b5090565b5f819050919050565b61384a81613838565b82525050565b5f6020820190506138635f830184613841565b92915050565b5f5ffd5b61387681613838565b8114613880575f5ffd5b50565b5f813590506138918161386d565b92915050565b5f602082840312156138ac576138ab613869565b5b5f6138b984828501613883565b91505092915050565b5f6040820190506138d55f830185613841565b6138e26020830184613841565b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613912826138e9565b9050919050565b61392281613908565b82525050565b5f60208201905061393b5f830184613919565b92915050565b61394a81613908565b8114613954575f5ffd5b50565b5f8135905061396581613941565b92915050565b5f602082840312156139805761397f613869565b5b5f61398d84828501613957565b91505092915050565b5f819050919050565b5f6139b96139b46139af846138e9565b613996565b6138e9565b9050919050565b5f6139ca8261399f565b9050919050565b5f6139db826139c0565b9050919050565b6139eb816139d1565b82525050565b5f602082019050613a045f8301846139e2565b92915050565b5f613a14826139c0565b9050919050565b613a2481613a0a565b82525050565b5f602082019050613a3d5f830184613a1b565b92915050565b5f8115159050919050565b613a5781613a43565b82525050565b5f604082019050613a705f830185613a4e565b613a7d6020830184613919565b9392505050565b5f5f60408385031215613a9a57613a99613869565b5b5f613aa785828601613883565b9250506020613ab885828601613883565b9150509250929050565b5f60c082019050613ad55f830189613841565b613ae26020830188613a4e565b613aef6040830187613841565b613afc6060830186613841565b613b096080830185613841565b613b1660a0830184613841565b979650505050505050565b5f60e082019050613b345f83018a613841565b613b416020830189613a4e565b613b4e6040830188613841565b613b5b6060830187613841565b613b686080830186613841565b613b7560a0830185613841565b613b8260c0830184613841565b98975050505050505050565b5f602082019050613ba15f830184613a4e565b92915050565b5f606082019050613bba5f830186613841565b613bc76020830185613841565b613bd46040830184613841565b949350505050565b5f613be6826139c0565b9050919050565b613bf681613bdc565b82525050565b5f602082019050613c0f5f830184613bed565b92915050565b5f613c1f826139c0565b9050919050565b613c2f81613c15565b82525050565b5f602082019050613c485f830184613c26565b92915050565b5f613c58826139c0565b9050919050565b613c6881613c4e565b82525050565b5f602082019050613c815f830184613c5f565b92915050565b5f613c91826139c0565b9050919050565b613ca181613c87565b82525050565b5f602082019050613cba5f830184613c98565b92915050565b5f5f60408385031215613cd657613cd5613869565b5b5f613ce385828601613883565b9250506020613cf485828601613957565b9150509250929050565b5f5f60408385031215613d1457613d13613869565b5b5f613d2185828601613957565b9250506020613d3285828601613957565b9150509250929050565b613d4581613a43565b8114613d4f575f5ffd5b50565b5f81359050613d6081613d3c565b92915050565b5f5f60408385031215613d7c57613d7b613869565b5b5f613d8985828601613883565b9250506020613d9a85828601613d52565b9150509250929050565b5f81519050613db28161386d565b92915050565b5f60208284031215613dcd57613dcc613869565b5b5f613dda84828501613da4565b91505092915050565b5f82825260208201905092915050565b7f496e73756666696369656e74206b4859504552532062616c616e6365000000005f82015250565b5f613e27601c83613de3565b9150613e3282613df3565b602082019050919050565b5f6020820190508181035f830152613e5481613e1b565b9050919050565b7f496e73756666696369656e742048595045525320696e20706f6f6c00000000005f82015250565b5f613e8f601b83613de3565b9150613e9a82613e5b565b602082019050919050565b5f6020820190508181035f830152613ebc81613e83565b9050919050565b5f604082019050613ed65f830185613919565b613ee36020830184613841565b9392505050565b5f81519050613ef881613d3c565b92915050565b5f60208284031215613f1357613f12613869565b5b5f613f2084828501613eea565b91505092915050565b7f485950455253207472616e73666572206661696c6564000000000000000000005f82015250565b5f613f5d601683613de3565b9150613f6882613f29565b602082019050919050565b5f6020820190508181035f830152613f8a81613f51565b9050919050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f613fc5600e83613de3565b9150613fd082613f91565b602082019050919050565b5f6020820190508181035f830152613ff281613fb9565b9050919050565b7f496e76616c696420706f6f6c20737461746500000000000000000000000000005f82015250565b5f61402d601283613de3565b915061403882613ff9565b602082019050919050565b5f6020820190508181035f83015261405a81614021565b9050919050565b5f81905092915050565b50565b5f6140795f83614061565b91506140848261406b565b5f82019050919050565b5f6140988261406e565b9150819050919050565b7f4661696c656420746f2073656e642066756e647320746f20626f7400000000005f82015250565b5f6140d6601b83613de3565b91506140e1826140a2565b602082019050919050565b5f6020820190508181035f830152614103816140ca565b9050919050565b5f60608201905061411d5f830186613841565b61412a6020830185613841565b6141376040830184613919565b949350505050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f614173600f83613de3565b915061417e8261413f565b602082019050919050565b5f6020820190508181035f8301526141a081614167565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6141de82613838565b91506141e983613838565b92508282026141f781613838565b9150828204841483151761420e5761420d6141a7565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61424c82613838565b915061425783613838565b92508261426757614266614215565b5b828204905092915050565b5f61427c82613838565b915061428783613838565b925082820390508181111561429f5761429e6141a7565b5b92915050565b7f496e76616c69642062617463682073697a6500000000000000000000000000005f82015250565b5f6142d9601283613de3565b91506142e4826142a5565b602082019050919050565b5f6020820190508181035f830152614306816142cd565b9050919050565b5f82825260208201905092915050565b5f6143285f8361430d565b91506143338261406b565b5f82019050919050565b5f6040820190506143505f830184613841565b81810360208301526143618161431d565b905092915050565b7f496e73756666696369656e7420666565730000000000000000000000000000005f82015250565b5f61439d601183613de3565b91506143a882614369565b602082019050919050565b5f6020820190508181035f8301526143ca81614391565b9050919050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f614405600f83613de3565b9150614410826143d1565b602082019050919050565b5f6020820190508181035f830152614432816143f9565b9050919050565b7f50657263656e74616765206d757374206265206265747765656e203020616e645f8201527f2031303000000000000000000000000000000000000000000000000000000000602082015250565b5f614493602483613de3565b915061449e82614439565b604082019050919050565b5f6020820190508181035f8301526144c081614487565b9050919050565b7f50726f706f73616c2070656e64696e67000000000000000000000000000000005f82015250565b5f6144fb601083613de3565b9150614506826144c7565b602082019050919050565b5f6020820190508181035f830152614528816144ef565b9050919050565b5f61453982613838565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361456b5761456a6141a7565b5b600182019050919050565b5f61458082613838565b915061458b83613838565b92508282019050808211156145a3576145a26141a7565b5b92915050565b5f81519050919050565b8281835e5f83830152505050565b5f6145cb826145a9565b6145d58185614061565b93506145e58185602086016145b3565b80840191505092915050565b5f6145fc82846145c1565b915081905092915050565b7f466565207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f61463b601383613de3565b915061464682614607565b602082019050919050565b5f6020820190508181035f8301526146688161462f565b9050919050565b7f496e76616c6964206669786564206465706f7369742076616c756500000000005f82015250565b5f6146a3601b83613de3565b91506146ae8261466f565b602082019050919050565b5f6020820190508181035f8301526146d081614697565b9050919050565b7f496e76616c696420706f6f6c206361702076616c7565000000000000000000005f82015250565b5f61470b601683613de3565b9150614716826146d7565b602082019050919050565b5f6020820190508181035f830152614738816146ff565b9050919050565b7f496e76616c6964207369676e65727300000000000000000000000000000000005f82015250565b5f614773600f83613de3565b915061477e8261473f565b602082019050919050565b5f6020820190508181035f8301526147a081614767565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6040820190506147e75f830185613919565b6147f46020830184613919565b9392505050565b7f4e6f742061207369676e657200000000000000000000000000000000000000005f82015250565b5f61482f600c83613de3565b915061483a826147fb565b602082019050919050565b5f6020820190508181035f83015261485c81614823565b9050919050565b7f416c7265616479207369676e65640000000000000000000000000000000000005f82015250565b5f614897600e83613de3565b91506148a282614863565b602082019050919050565b5f6020820190508181035f8301526148c48161488b565b9050919050565b7f496e76616c6964206465706f73697420636f756e7400000000000000000000005f82015250565b5f6148ff601583613de3565b915061490a826148cb565b602082019050919050565b5f6020820190508181035f83015261492c816148f3565b9050919050565b7f496e636f72726563742045544820616d6f756e740000000000000000000000005f82015250565b5f614967601483613de3565b915061497282614933565b602082019050919050565b5f6020820190508181035f8301526149948161495b565b9050919050565b7f506f6f6c206973206c6f636b65640000000000000000000000000000000000005f82015250565b5f6149cf600e83613de3565b91506149da8261499b565b602082019050919050565b5f6020820190508181035f8301526149fc816149c3565b9050919050565b7f4465706f73697420776f756c642065786365656420706f6f6c206361700000005f82015250565b5f614a37601d83613de3565b9150614a4282614a03565b602082019050919050565b5f6020820190508181035f830152614a6481614a2b565b9050919050565b5f608082019050614a7e5f830187613841565b614a8b6020830186613841565b614a986040830185613a4e565b614aa56060830184613841565b95945050505050565b7f496e73756666696369656e74207369676e6174757265730000000000000000005f82015250565b5f614ae2601783613de3565b9150614aed82614aae565b602082019050919050565b5f6020820190508181035f830152614b0f81614ad6565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f614b4a601f83613de3565b9150614b5582614b16565b602082019050919050565b5f6020820190508181035f830152614b7781614b3e565b9050919050565b7f4661696c656420746f2073656e64207969656c6420616e642067617320746f205f8201527f6d617374657220636f6e74726163740000000000000000000000000000000000602082015250565b5f614bd8602f83613de3565b9150614be382614b7e565b604082019050919050565b5f6020820190508181035f830152614c0581614bcc565b9050919050565b5f608082019050614c1f5f830187613841565b614c2c6020830186613841565b614c396040830185613841565b614c466060830184613841565b95945050505050565b7f455448207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f614c83601383613de3565b9150614c8e82614c4f565b602082019050919050565b5f6020820190508181035f830152614cb081614c77565b905091905056fea2646970667358221220e5c4dfa594edc1ff2eee6dc64719930f86ef214576c5238493bd744ac7bc130564736f6c634300081b00330000000000000000000000003e6109d1a62e16c709444b49004f513b0d5978d2000000000000000000000000f8797db8a9eed416ca14e8dfaede2bf4e1aabfc3000000000000000000000000362cf050550865ed3c5af543dc740c492885ed0d000000000000000000000000f8797db8a9eed416ca14e8dfaede2bf4e1aabfc3000000000000000000000000000000000000000000000000016345785d8a000000000000000000000000000000000000000000000000000000071afd498d000000000000000000000000000000000000000000000000000000002d79883d200000000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000957173f438ccec7f0f22d69b079b66e816df348d00000000000000000000000044127ec6b8dd04c63c58c70276628034d697731b000000000000000000000000705e45c73a854a06fe64c9bd3bbf8be1edd93274000000000000000000000000798ed654f4d9599b99f94f4a61609b7a7cfbd200000000000000000000000000b2d2ecc7d94cfb8e70f60aeb97bf7f4c4cb8ef280000000000000000000000007f448f0435803744bcda76afed4f17b0a6e0fb23

Deployed Bytecode

0x60806040526004361061031d575f3560e01c80638c28efba116101aa578063b6e19e06116100f6578063e72328ce11610094578063ef93de1e1161006e578063ef93de1e14610b2a578063f2fde38b14610b52578063f4993bbd14610b7a578063f76e947b14610b9057610324565b8063e72328ce14610ad0578063e994561814610af8578063ea6c2e8414610b0e57610324565b8063cdd78cfc116100d0578063cdd78cfc14610a1a578063d037125014610a44578063dca7bbe614610a6c578063e3d9109f14610aa857610324565b8063b6e19e061461099c578063b954dc57146109c6578063cd446e22146109f057610324565b80639ac18b1911610163578063acddb1c01161013d578063acddb1c014610908578063b009231c14610932578063b0a8d5ca1461095c578063b3381df61461097257610324565b80639ac18b191461088a5780639ec9ac41146108b4578063a64f9ff6146108de57610324565b80638c28efba1461078e5780638da5cb5b146107ba5780639031d1a8146107e4578063941aef641461082057806397d7577614610836578063992f90751461086057610324565b80634c069a33116102695780636aa214161161022257806379a1800a116101fc57806379a1800a146106d65780637a86b282146107005780637df73e271461072a5780638333903e1461076657610324565b80636aa214161461066e5780636d55669514610696578063715018a6146106c057610324565b80634c069a33146105575780634d4748981461058257806352f7c988146105aa57806360246c88146105d25780636386c1c714610601578063692b69ae1461063e57610324565b80632a150127116102d6578063457fb905116102b0578063457fb9051461049d578063465f5eb8146104c757806347fb4553146105035780634b8f90251461052d57610324565b80632a150127146104215780632d35aaba146104495780633da79c151461047357610324565b8063068ed2f5146103285780630962ef791461035257806316de4d5d1461037a578063194a4e7e146103a55780632079fb9a146103cf57806321b79d981461040b57610324565b3661032457005b5f5ffd5b348015610333575f5ffd5b5061033c610bba565b6040516103499190613850565b60405180910390f35b34801561035d575f5ffd5b5061037860048036038101906103739190613897565b610bc0565b005b348015610385575f5ffd5b5061038e610f56565b60405161039c9291906138c2565b60405180910390f35b3480156103b0575f5ffd5b506103b9610ffa565b6040516103c69190613850565b60405180910390f35b3480156103da575f5ffd5b506103f560048036038101906103f09190613897565b611000565b6040516104029190613928565b60405180910390f35b348015610416575f5ffd5b5061041f611034565b005b34801561042c575f5ffd5b506104476004803603810190610442919061396b565b611386565b005b348015610454575f5ffd5b5061045d61143f565b60405161046a9190613850565b60405180910390f35b34801561047e575f5ffd5b50610487611444565b6040516104949190613928565b60405180910390f35b3480156104a8575f5ffd5b506104b1611469565b6040516104be91906139f1565b60405180910390f35b3480156104d2575f5ffd5b506104ed60048036038101906104e8919061396b565b61148e565b6040516104fa9190613850565b60405180910390f35b34801561050e575f5ffd5b5061051761158f565b6040516105249190613928565b60405180910390f35b348015610538575f5ffd5b506105416115b4565b60405161054e9190613a2a565b60405180910390f35b348015610562575f5ffd5b5061056b6115cc565b604051610579929190613a5d565b60405180910390f35b34801561058d575f5ffd5b506105a860048036038101906105a39190613897565b611607565b005b3480156105b5575f5ffd5b506105d060048036038101906105cb9190613a84565b611789565b005b3480156105dd575f5ffd5b506105e66117a3565b6040516105f896959493929190613ac2565b60405180910390f35b34801561060c575f5ffd5b506106276004803603810190610622919061396b565b6117ec565b6040516106359291906138c2565b60405180910390f35b348015610649575f5ffd5b506106526118ce565b6040516106659796959493929190613b21565b60405180910390f35b348015610679575f5ffd5b50610694600480360381019061068f9190613897565b611909565b005b3480156106a1575f5ffd5b506106aa611a1a565b6040516106b79190613850565b60405180910390f35b3480156106cb575f5ffd5b506106d4611a20565b005b3480156106e1575f5ffd5b506106ea611a33565b6040516106f79190613850565b60405180910390f35b34801561070b575f5ffd5b50610714611a39565b6040516107219190613850565b60405180910390f35b348015610735575f5ffd5b50610750600480360381019061074b919061396b565b611a3f565b60405161075d9190613b8e565b60405180910390f35b348015610771575f5ffd5b5061078c60048036038101906107879190613897565b611a5b565b005b348015610799575f5ffd5b506107a2611ab1565b6040516107b193929190613ba7565b60405180910390f35b3480156107c5575f5ffd5b506107ce611ac8565b6040516107db9190613928565b60405180910390f35b3480156107ef575f5ffd5b5061080a6004803603810190610805919061396b565b611af0565b6040516108179190613850565b60405180910390f35b34801561082b575f5ffd5b50610834611b05565b005b348015610841575f5ffd5b5061084a611b71565b6040516108579190613bfc565b60405180910390f35b34801561086b575f5ffd5b50610874611b89565b6040516108819190613850565b60405180910390f35b348015610895575f5ffd5b5061089e611b8f565b6040516108ab9190613850565b60405180910390f35b3480156108bf575f5ffd5b506108c8611b94565b6040516108d59190613850565b60405180910390f35b3480156108e9575f5ffd5b506108f2611b9a565b6040516108ff9190613850565b60405180910390f35b348015610913575f5ffd5b5061091c611ba0565b6040516109299190613850565b60405180910390f35b34801561093d575f5ffd5b50610946611ba6565b6040516109539190613c35565b60405180910390f35b348015610967575f5ffd5b50610970611bcb565b005b34801561097d575f5ffd5b50610986611f9c565b6040516109939190613b8e565b60405180910390f35b3480156109a7575f5ffd5b506109b0611fae565b6040516109bd9190613c6e565b60405180910390f35b3480156109d1575f5ffd5b506109da611fd3565b6040516109e79190613850565b60405180910390f35b3480156109fb575f5ffd5b50610a04611fd9565b604051610a119190613ca7565b60405180910390f35b348015610a25575f5ffd5b50610a2e611ffe565b604051610a3b9190613850565b60405180910390f35b348015610a4f575f5ffd5b50610a6a6004803603810190610a659190613a84565b612004565b005b348015610a77575f5ffd5b50610a926004803603810190610a8d9190613cc0565b6120b2565b604051610a9f9190613b8e565b60405180910390f35b348015610ab3575f5ffd5b50610ace6004803603810190610ac99190613cfe565b6120dc565b005b348015610adb575f5ffd5b50610af66004803603810190610af1919061396b565b6123ef565b005b348015610b03575f5ffd5b50610b0c612522565b005b610b286004803603810190610b239190613d66565b6126c5565b005b348015610b35575f5ffd5b50610b506004803603810190610b4b919061396b565b6128e9565b005b348015610b5d575f5ffd5b50610b786004803603810190610b73919061396b565b612934565b005b348015610b85575f5ffd5b50610b8e6129b8565b005b348015610b9b575f5ffd5b50610ba4612acc565b604051610bb19190613850565b60405180910390f35b600b5481565b610bc8612ad2565b8060245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610c239190613928565b602060405180830381865afa158015610c3e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c629190613db8565b1015610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9a90613e3d565b60405180910390fd5b8060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cfe9190613928565b602060405180830381865afa158015610d19573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3d9190613db8565b1015610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7590613ea5565b60405180910390fd5b60245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac33836040518363ffffffff1660e01b8152600401610dda929190613ec3565b5f604051808303815f87803b158015610df1575f5ffd5b505af1158015610e03573d5f5f3e3d5ffd5b5050505060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610e63929190613ec3565b6020604051808303815f875af1158015610e7f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea39190613efe565b610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed990613f73565b60405180910390fd5b610ef781601854612b1f90919063ffffffff16565b6018819055503373ffffffffffffffffffffffffffffffffffffffff167ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe82604051610f439190613850565b60405180910390a2610f53612b34565b50565b5f5f4760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fb39190613928565b602060405180830381865afa158015610fce573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff29190613db8565b915091509091565b60095481565b601b816005811061100f575f80fd5b015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632058c3b6336040518263ffffffff1660e01b815260040161108e9190613928565b602060405180830381865afa1580156110a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110cd9190613efe565b61110c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110390613fdb565b60405180910390fd5b600e6001015f9054906101000a900460ff1680156111365750601a5f9054906101000a900460ff16155b611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c90614043565b60405180910390fd5b6001601a5f6101000a81548160ff02191690831515021790555033600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600e5f015490505f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161121d9061408e565b5f6040518083038185875af1925050503d805f8114611257576040519150601f19603f3d011682016040523d82523d5f602084013e61125c565b606091505b50509050806112a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611297906140ec565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112fa9190613928565b602060405180830381865afa158015611315573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113399190613db8565b600e600601819055507f677b28c00e1df8ed0bed5e22ae5a2035f0701672bfa215b9809b6d0155e60c56600e60050154833360405161137a9392919061410a565b60405180910390a15050565b61138e612b3d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f390614189565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634da6a556846040518263ffffffff1660e01b81526004016114ea9190613928565b602060405180830381865afa158015611505573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115299190613db8565b905069012d231c7c593eec00008110611583575f61271060075460085461155091906141d4565b61155a9190614242565b9050806008541161156b575f61157a565b806008546115799190614272565b5b9250505061158a565b6008549150505b919050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b732536fe9ab3f511540f2f9e2ec2a805005c3dd80081565b5f5f601a5f9054906101000a900460ff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091509091565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561166e5750601a5f9054906101000a900460ff165b6116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490613fdb565b60405180910390fd5b600181101580156116c057506103e88111155b6116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f6906142ef565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e493031826040518263ffffffff1660e01b8152600401611759919061433d565b5f604051808303815f87803b158015611770575f5ffd5b505af1158015611782573d5f5f3e3d5ffd5b5050505050565b611791612b3d565b81600881905550806007819055505050565b5f5f5f5f5f5f600e60050154600e6001015f9054906101000a900460ff16600e5f0154600e60020154600e60030154600e60040154955095509550955095509550909192939495565b5f5f60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b81526004016118869190613928565b602060405180830381865afa1580156118a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118c59190613db8565b91509150915091565b600e805f015490806001015f9054906101000a900460ff16908060020154908060030154908060040154908060050154908060060154905087565b611911612b3d565b600954811115611956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194d906143b3565b60405180910390fd5b8060095f8282546119679190614272565b925050819055505f3373ffffffffffffffffffffffffffffffffffffffff16826040516119939061408e565b5f6040518083038185875af1925050503d805f81146119cd576040519150601f19603f3d011682016040523d82523d5f602084013e6119d2565b606091505b5050905080611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d9061441b565b60405180910390fd5b5050565b60185481565b611a28612b3d565b611a315f612bc4565b565b60255481565b60215481565b60208052805f5260405f205f915054906101000a900460ff1681565b611a63612b3d565b6064811115611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e906144a9565b60405180910390fd5b8060198190555050565b5f5f5f600954600a54601854925092509250909192565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6017602052805f5260405f205f915090505481565b611b0d612b3d565b5f60235414611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4890614511565b60405180910390fd5b60215f815480929190611b639061452f565b91905055505f602381905550565b73430000000000000000000000000000000000000281565b60235481565b600381565b60085481565b600a5481565b60075481565b60245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015611c325750601a5f9054906101000a900460ff165b611c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6890613fdb565b60405180910390fd5b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ccc9190613928565b602060405180830381865afa158015611ce7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0b9190613db8565b90505f600e6006015482611d1f9190614272565b905080600a5f828254611d329190614576565b925050819055508060185f828254611d4a9190614576565b92505081905550611d5a81612c87565b5f611d856064611d77601954600954612e5f90919063ffffffff16565b612e7490919063ffffffff16565b9050611d9c81600954612b1f90919063ffffffff16565b6009819055505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516024016040516020818303038152906040527f9b29c418000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611e6c91906145f1565b5f6040518083038185875af1925050503d805f8114611ea6576040519150601f19603f3d011682016040523d82523d5f602084013e611eab565b606091505b5050905080611eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee690614651565b60405180910390fd5b611ef7612e89565b7f5e63f04f01459b14a84df2fde69183c88b8cc3ba2b1a5b7d9e7b6ef5b3c0ad44600e6005015484604051611f2d9291906138c2565b60405180910390a1611f3d6131f6565b5f601a5f6101000a81548160ff0219169083151502179055505f600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b601a5f9054906101000a900460ff1681565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b61200c612b3d565b5f821161204e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612045906146b9565b60405180910390fd5b5f811180156120615750600e5f01548110155b6120a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209790614721565b60405180910390fd5b81600681905550806005819055505050565b6022602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b6120e4612b3d565b60205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612181575060205f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6121c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b790614789565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361222e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222590614189565b60405180910390fd5b5f5f90505b6005811015612308578273ffffffffffffffffffffffffffffffffffffffff16601b8260058110612267576122666147a7565b5b015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036122fb5781601b82600581106122b8576122b76147a7565b5b015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612308565b8080600101915050612233565b505f60205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f2d025324f0a785e8c12d0a0d91a9caa49df4ef20ff87e0df7213a1d4f3157beb82826040516123e39291906147d4565b60405180910390a15050565b6123f7612b3d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90614189565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732536fe9ab3f511540f2f9e2ec2a805005c3dd80073ffffffffffffffffffffffffffffffffffffffff166336b91f2b826040518263ffffffff1660e01b81526004016124f29190613928565b5f604051808303815f87803b158015612509575f5ffd5b505af115801561251b573d5f5f3e3d5ffd5b5050505050565b60205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a290614845565b60405180910390fd5b60225f60215481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263d906148ad565b60405180910390fd5b600160225f60215481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060235f8154809291906126be9061452f565b9190505550565b6126cd612ad2565b5f821161270f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270690614915565b60405180910390fd5b5f6127193361148e565b90505f838260065461272b9190614576565b61273591906141d4565b9050803414612779576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127709061497d565b60405180910390fd5b5f8460065461278891906141d4565b90505f858461279791906141d4565b9050600e6001015f9054906101000a900460ff16156127eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e2906149e5565b60405180910390fd5b60055482600e5f01546127fe9190614576565b111561283f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283690614a4d565b60405180910390fd5b5f5f90505b868110156128c057612858600654876132b9565b3373ffffffffffffffffffffffffffffffffffffffff167f66d462ae7c8e10bbc849bf692fa676566a2457b5fa467244bfa87417a0925e056006548789600e600501546040516128ab9493929190614a6b565b60405180910390a28080600101915050612844565b508060095f8282546128d29190614576565b92505081905550505050506128e5612b34565b5050565b6128f1612b3d565b8060245f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61293c612b3d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129ac575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016129a39190613928565b60405180910390fd5b6129b581612bc4565b50565b6129c0612b3d565b60036023541015612a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fd90614af8565b60405180910390fd5b612a0e61350e565b5f6023819055505f5f90505b6005811015612ac9575f60225f60215481526020019081526020015f205f601b8460058110612a4c57612a4b6147a7565b5b015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050612a1a565b50565b60065481565b60025f5403612b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0d90614b60565b60405180910390fd5b60025f81905550565b5f8183612b2c9190614272565b905092915050565b60015f81905550565b612b456137f8565b73ffffffffffffffffffffffffffffffffffffffff16612b63611ac8565b73ffffffffffffffffffffffffffffffffffffffff1614612bc257612b866137f8565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612bb99190613928565b60405180910390fd5b565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f811480612c9857505f600e5f0154145b612e5c575f5f90505b600e60070180549050811015612e5a575f600e6007018281548110612cc957612cc86147a7565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f811115612e4b575f600e5f01548583612d4e91906141d4565b612d589190614242565b905060245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1984836040518363ffffffff1660e01b8152600401612db6929190613ec3565b5f604051808303815f87803b158015612dcd575f5ffd5b505af1158015612ddf573d5f5f3e3d5ffd5b505050508060255f828254612df49190614576565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea682604051612e419190613850565b60405180910390a2505b50508080600101915050612ca1565b505b50565b5f8183612e6c91906141d4565b905092915050565b5f8183612e819190614242565b905092915050565b5f47905073430000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff1663860043b630306040518363ffffffff1660e01b8152600401612edc9291906147d4565b6020604051808303815f875af1158015612ef8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f1c9190613db8565b505f4790505f8282612f2e9190614272565b905073430000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff1663662aa11d30306040518363ffffffff1660e01b8152600401612f7f9291906147d4565b6020604051808303815f875af1158015612f9b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fbf9190613db8565b505f4790505f8382612fd19190614272565b90505f8184612fe09190614576565b90505f8111156131ee575f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516024016040516020818303038152906040527ff128c717000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516130b491906145f1565b5f6040518083038185875af1925050503d805f81146130ee576040519150601f19603f3d011682016040523d82523d5f602084013e6130f3565b606091505b5050905080613137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312e90614bee565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ec8b426040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561319d575f5ffd5b505af11580156131af573d5f5f3e3d5ffd5b505050507f3842b2195b08a05bc0b797bee80aa3f1bcd53f79cf77b1d4a99bfd41b93ae2a785846040516131e49291906138c2565b60405180910390a1505b505050505050565b600b5f8154809291906132089061452f565b9190505550600e5f5f82015f9055600182015f6101000a81549060ff0219169055600282015f9055600382015f9055600482015f9055600582015f9055600682015f9055600782015f61325b91906137ff565b5050600b54600e600501819055505f600e6001015f6101000a81548160ff021916908315150217905550600e600501547ff883bd997a5ff824fb701f4caaec246151da39606d495d24bf5f8f667093daf560405160405180910390a2565b81600e5f015f8282546132cc9190614576565b925050819055508160175f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461331f9190614576565b92505081905550801561334c5781600e6002015f8282546133409190614576565b92505081905550613368565b81600e6003015f8282546133609190614576565b925050819055505b600e6008015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661348f57600e60070133908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e6008015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600e6004015f8154809291906134899061452f565b91905055505b600554600e5f01541061350a576001600e6001015f6101000a81548160ff0219169083151502179055507f4bc8083dd1c3e5ec0ddbfe5bfa4edcf6a8251f2454b1f76e98d776a58bee40ea600e60050154600e60020154600e60030154600e5f01546040516135019493929190614c0c565b60405180910390a15b5050565b5f4790505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161356d9190613928565b602060405180830381865afa158015613588573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135ac9190613db8565b90505f6135b7611ac8565b73ffffffffffffffffffffffffffffffffffffffff16836040516135da9061408e565b5f6040518083038185875af1925050503d805f8114613614576040519150601f19603f3d011682016040523d82523d5f602084013e613619565b606091505b505090508061365d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161365490614c99565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6136a2611ac8565b846040518363ffffffff1660e01b81526004016136c0929190613ec3565b6020604051808303815f875af11580156136dc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137009190613efe565b61373f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161373690613f73565b60405180910390fd5b7fe1afeafeedce22783df08e2c5f38d287bc3bae1e0ee7d12937dc80ebf7db7a3c602154848460405161377493929190613ba7565b60405180910390a1600e5f5f82015f9055600182015f6101000a81549060ff0219169055600282015f9055600382015f9055600482015f9055600582015f9055600682015f9055600782015f6137ca91906137ff565b50505f600b819055505f6009819055505f600a819055505f6018819055506001600e60050181905550505050565b5f33905090565b5080545f8255905f5260205f209081019061381a919061381d565b50565b5b80821115613834575f815f90555060010161381e565b5090565b5f819050919050565b61384a81613838565b82525050565b5f6020820190506138635f830184613841565b92915050565b5f5ffd5b61387681613838565b8114613880575f5ffd5b50565b5f813590506138918161386d565b92915050565b5f602082840312156138ac576138ab613869565b5b5f6138b984828501613883565b91505092915050565b5f6040820190506138d55f830185613841565b6138e26020830184613841565b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613912826138e9565b9050919050565b61392281613908565b82525050565b5f60208201905061393b5f830184613919565b92915050565b61394a81613908565b8114613954575f5ffd5b50565b5f8135905061396581613941565b92915050565b5f602082840312156139805761397f613869565b5b5f61398d84828501613957565b91505092915050565b5f819050919050565b5f6139b96139b46139af846138e9565b613996565b6138e9565b9050919050565b5f6139ca8261399f565b9050919050565b5f6139db826139c0565b9050919050565b6139eb816139d1565b82525050565b5f602082019050613a045f8301846139e2565b92915050565b5f613a14826139c0565b9050919050565b613a2481613a0a565b82525050565b5f602082019050613a3d5f830184613a1b565b92915050565b5f8115159050919050565b613a5781613a43565b82525050565b5f604082019050613a705f830185613a4e565b613a7d6020830184613919565b9392505050565b5f5f60408385031215613a9a57613a99613869565b5b5f613aa785828601613883565b9250506020613ab885828601613883565b9150509250929050565b5f60c082019050613ad55f830189613841565b613ae26020830188613a4e565b613aef6040830187613841565b613afc6060830186613841565b613b096080830185613841565b613b1660a0830184613841565b979650505050505050565b5f60e082019050613b345f83018a613841565b613b416020830189613a4e565b613b4e6040830188613841565b613b5b6060830187613841565b613b686080830186613841565b613b7560a0830185613841565b613b8260c0830184613841565b98975050505050505050565b5f602082019050613ba15f830184613a4e565b92915050565b5f606082019050613bba5f830186613841565b613bc76020830185613841565b613bd46040830184613841565b949350505050565b5f613be6826139c0565b9050919050565b613bf681613bdc565b82525050565b5f602082019050613c0f5f830184613bed565b92915050565b5f613c1f826139c0565b9050919050565b613c2f81613c15565b82525050565b5f602082019050613c485f830184613c26565b92915050565b5f613c58826139c0565b9050919050565b613c6881613c4e565b82525050565b5f602082019050613c815f830184613c5f565b92915050565b5f613c91826139c0565b9050919050565b613ca181613c87565b82525050565b5f602082019050613cba5f830184613c98565b92915050565b5f5f60408385031215613cd657613cd5613869565b5b5f613ce385828601613883565b9250506020613cf485828601613957565b9150509250929050565b5f5f60408385031215613d1457613d13613869565b5b5f613d2185828601613957565b9250506020613d3285828601613957565b9150509250929050565b613d4581613a43565b8114613d4f575f5ffd5b50565b5f81359050613d6081613d3c565b92915050565b5f5f60408385031215613d7c57613d7b613869565b5b5f613d8985828601613883565b9250506020613d9a85828601613d52565b9150509250929050565b5f81519050613db28161386d565b92915050565b5f60208284031215613dcd57613dcc613869565b5b5f613dda84828501613da4565b91505092915050565b5f82825260208201905092915050565b7f496e73756666696369656e74206b4859504552532062616c616e6365000000005f82015250565b5f613e27601c83613de3565b9150613e3282613df3565b602082019050919050565b5f6020820190508181035f830152613e5481613e1b565b9050919050565b7f496e73756666696369656e742048595045525320696e20706f6f6c00000000005f82015250565b5f613e8f601b83613de3565b9150613e9a82613e5b565b602082019050919050565b5f6020820190508181035f830152613ebc81613e83565b9050919050565b5f604082019050613ed65f830185613919565b613ee36020830184613841565b9392505050565b5f81519050613ef881613d3c565b92915050565b5f60208284031215613f1357613f12613869565b5b5f613f2084828501613eea565b91505092915050565b7f485950455253207472616e73666572206661696c6564000000000000000000005f82015250565b5f613f5d601683613de3565b9150613f6882613f29565b602082019050919050565b5f6020820190508181035f830152613f8a81613f51565b9050919050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f613fc5600e83613de3565b9150613fd082613f91565b602082019050919050565b5f6020820190508181035f830152613ff281613fb9565b9050919050565b7f496e76616c696420706f6f6c20737461746500000000000000000000000000005f82015250565b5f61402d601283613de3565b915061403882613ff9565b602082019050919050565b5f6020820190508181035f83015261405a81614021565b9050919050565b5f81905092915050565b50565b5f6140795f83614061565b91506140848261406b565b5f82019050919050565b5f6140988261406e565b9150819050919050565b7f4661696c656420746f2073656e642066756e647320746f20626f7400000000005f82015250565b5f6140d6601b83613de3565b91506140e1826140a2565b602082019050919050565b5f6020820190508181035f830152614103816140ca565b9050919050565b5f60608201905061411d5f830186613841565b61412a6020830185613841565b6141376040830184613919565b949350505050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f614173600f83613de3565b915061417e8261413f565b602082019050919050565b5f6020820190508181035f8301526141a081614167565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6141de82613838565b91506141e983613838565b92508282026141f781613838565b9150828204841483151761420e5761420d6141a7565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61424c82613838565b915061425783613838565b92508261426757614266614215565b5b828204905092915050565b5f61427c82613838565b915061428783613838565b925082820390508181111561429f5761429e6141a7565b5b92915050565b7f496e76616c69642062617463682073697a6500000000000000000000000000005f82015250565b5f6142d9601283613de3565b91506142e4826142a5565b602082019050919050565b5f6020820190508181035f830152614306816142cd565b9050919050565b5f82825260208201905092915050565b5f6143285f8361430d565b91506143338261406b565b5f82019050919050565b5f6040820190506143505f830184613841565b81810360208301526143618161431d565b905092915050565b7f496e73756666696369656e7420666565730000000000000000000000000000005f82015250565b5f61439d601183613de3565b91506143a882614369565b602082019050919050565b5f6020820190508181035f8301526143ca81614391565b9050919050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f614405600f83613de3565b9150614410826143d1565b602082019050919050565b5f6020820190508181035f830152614432816143f9565b9050919050565b7f50657263656e74616765206d757374206265206265747765656e203020616e645f8201527f2031303000000000000000000000000000000000000000000000000000000000602082015250565b5f614493602483613de3565b915061449e82614439565b604082019050919050565b5f6020820190508181035f8301526144c081614487565b9050919050565b7f50726f706f73616c2070656e64696e67000000000000000000000000000000005f82015250565b5f6144fb601083613de3565b9150614506826144c7565b602082019050919050565b5f6020820190508181035f830152614528816144ef565b9050919050565b5f61453982613838565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361456b5761456a6141a7565b5b600182019050919050565b5f61458082613838565b915061458b83613838565b92508282019050808211156145a3576145a26141a7565b5b92915050565b5f81519050919050565b8281835e5f83830152505050565b5f6145cb826145a9565b6145d58185614061565b93506145e58185602086016145b3565b80840191505092915050565b5f6145fc82846145c1565b915081905092915050565b7f466565207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f61463b601383613de3565b915061464682614607565b602082019050919050565b5f6020820190508181035f8301526146688161462f565b9050919050565b7f496e76616c6964206669786564206465706f7369742076616c756500000000005f82015250565b5f6146a3601b83613de3565b91506146ae8261466f565b602082019050919050565b5f6020820190508181035f8301526146d081614697565b9050919050565b7f496e76616c696420706f6f6c206361702076616c7565000000000000000000005f82015250565b5f61470b601683613de3565b9150614716826146d7565b602082019050919050565b5f6020820190508181035f830152614738816146ff565b9050919050565b7f496e76616c6964207369676e65727300000000000000000000000000000000005f82015250565b5f614773600f83613de3565b915061477e8261473f565b602082019050919050565b5f6020820190508181035f8301526147a081614767565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6040820190506147e75f830185613919565b6147f46020830184613919565b9392505050565b7f4e6f742061207369676e657200000000000000000000000000000000000000005f82015250565b5f61482f600c83613de3565b915061483a826147fb565b602082019050919050565b5f6020820190508181035f83015261485c81614823565b9050919050565b7f416c7265616479207369676e65640000000000000000000000000000000000005f82015250565b5f614897600e83613de3565b91506148a282614863565b602082019050919050565b5f6020820190508181035f8301526148c48161488b565b9050919050565b7f496e76616c6964206465706f73697420636f756e7400000000000000000000005f82015250565b5f6148ff601583613de3565b915061490a826148cb565b602082019050919050565b5f6020820190508181035f83015261492c816148f3565b9050919050565b7f496e636f72726563742045544820616d6f756e740000000000000000000000005f82015250565b5f614967601483613de3565b915061497282614933565b602082019050919050565b5f6020820190508181035f8301526149948161495b565b9050919050565b7f506f6f6c206973206c6f636b65640000000000000000000000000000000000005f82015250565b5f6149cf600e83613de3565b91506149da8261499b565b602082019050919050565b5f6020820190508181035f8301526149fc816149c3565b9050919050565b7f4465706f73697420776f756c642065786365656420706f6f6c206361700000005f82015250565b5f614a37601d83613de3565b9150614a4282614a03565b602082019050919050565b5f6020820190508181035f830152614a6481614a2b565b9050919050565b5f608082019050614a7e5f830187613841565b614a8b6020830186613841565b614a986040830185613a4e565b614aa56060830184613841565b95945050505050565b7f496e73756666696369656e74207369676e6174757265730000000000000000005f82015250565b5f614ae2601783613de3565b9150614aed82614aae565b602082019050919050565b5f6020820190508181035f830152614b0f81614ad6565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f614b4a601f83613de3565b9150614b5582614b16565b602082019050919050565b5f6020820190508181035f830152614b7781614b3e565b9050919050565b7f4661696c656420746f2073656e64207969656c6420616e642067617320746f205f8201527f6d617374657220636f6e74726163740000000000000000000000000000000000602082015250565b5f614bd8602f83613de3565b9150614be382614b7e565b604082019050919050565b5f6020820190508181035f830152614c0581614bcc565b9050919050565b5f608082019050614c1f5f830187613841565b614c2c6020830186613841565b614c396040830185613841565b614c466060830184613841565b95945050505050565b7f455448207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f614c83601383613de3565b9150614c8e82614c4f565b602082019050919050565b5f6020820190508181035f830152614cb081614c77565b905091905056fea2646970667358221220e5c4dfa594edc1ff2eee6dc64719930f86ef214576c5238493bd744ac7bc130564736f6c634300081b0033

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

0000000000000000000000003e6109d1a62e16c709444b49004f513b0d5978d2000000000000000000000000f8797db8a9eed416ca14e8dfaede2bf4e1aabfc3000000000000000000000000362cf050550865ed3c5af543dc740c492885ed0d000000000000000000000000f8797db8a9eed416ca14e8dfaede2bf4e1aabfc3000000000000000000000000000000000000000000000000016345785d8a000000000000000000000000000000000000000000000000000000071afd498d000000000000000000000000000000000000000000000000000000002d79883d200000000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000957173f438ccec7f0f22d69b079b66e816df348d00000000000000000000000044127ec6b8dd04c63c58c70276628034d697731b000000000000000000000000705e45c73a854a06fe64c9bd3bbf8be1edd93274000000000000000000000000798ed654f4d9599b99f94f4a61609b7a7cfbd200000000000000000000000000b2d2ecc7d94cfb8e70f60aeb97bf7f4c4cb8ef280000000000000000000000007f448f0435803744bcda76afed4f17b0a6e0fb23

-----Decoded View---------------
Arg [0] : _pointsOperator (address): 0x3e6109D1A62E16C709444B49004f513B0D5978d2
Arg [1] : _hypersound (address): 0xF8797dB8a9EeD416Ca14e8dFaEde2BF4E1aabFC3
Arg [2] : _masterContract (address): 0x362cf050550865Ed3C5aF543dC740C492885Ed0d
Arg [3] : _hypersToken (address): 0xF8797dB8a9EeD416Ca14e8dFaEde2BF4E1aabFC3
Arg [4] : _poolCap (uint256): 100000000000000000
Arg [5] : _fixedDeposit (uint256): 2000000000000000
Arg [6] : _fixedFeeAmount (uint256): 50000000000000
Arg [7] : _stakerDiscount (uint256): 500
Arg [8] : _kHypersTokenAddress (address): 0x957173F438cCeC7f0F22d69b079b66e816Df348d
Arg [9] : _initialSigners (address[5]): 0x44127ec6b8dd04C63C58c70276628034D697731b,0x705E45c73A854A06fE64c9bD3bbf8Be1edD93274,0x798ed654F4D9599B99f94F4A61609b7A7cFBD200,0xB2D2ECC7d94CFb8e70F60AeB97Bf7F4C4cB8eF28,0x7F448F0435803744Bcda76afED4F17B0A6E0FB23

-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000003e6109d1a62e16c709444b49004f513b0d5978d2
Arg [1] : 000000000000000000000000f8797db8a9eed416ca14e8dfaede2bf4e1aabfc3
Arg [2] : 000000000000000000000000362cf050550865ed3c5af543dc740c492885ed0d
Arg [3] : 000000000000000000000000f8797db8a9eed416ca14e8dfaede2bf4e1aabfc3
Arg [4] : 000000000000000000000000000000000000000000000000016345785d8a0000
Arg [5] : 00000000000000000000000000000000000000000000000000071afd498d0000
Arg [6] : 00000000000000000000000000000000000000000000000000002d79883d2000
Arg [7] : 00000000000000000000000000000000000000000000000000000000000001f4
Arg [8] : 000000000000000000000000957173f438ccec7f0f22d69b079b66e816df348d
Arg [9] : 00000000000000000000000044127ec6b8dd04c63c58c70276628034d697731b
Arg [10] : 000000000000000000000000705e45c73a854a06fe64c9bd3bbf8be1edd93274
Arg [11] : 000000000000000000000000798ed654f4d9599b99f94f4a61609b7a7cfbd200
Arg [12] : 000000000000000000000000b2d2ecc7d94cfb8e70f60aeb97bf7f4c4cb8ef28
Arg [13] : 0000000000000000000000007f448f0435803744bcda76afed4f17b0a6e0fb23


Deployed Bytecode Sourcemap

315:16041:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;923:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10381:539;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15527:243;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;851:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1674:25;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6488:656;;;;;;;;;;;;;:::i;:::-;;11438:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;963:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1060:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;644;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5294:383;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1024:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;497:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15295:224;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;7152:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4208:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14769:518;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;16072:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;1421:23;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;10928:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1507:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1773:103:8;;;;;;;;;;;;;:::i;:::-;;2029:33:7;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1807:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1760:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11215:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15778:286;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;1098:87:8;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1453:47:7;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11966:225;;;;;;;;;;;;;:::i;:::-;;409:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1936:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1706:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;815:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;885:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;779:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1989:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7430:1005;;;;;;;;;;;;;:::i;:::-;;1603:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;682:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;716:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;604:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1555:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14191:362;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1858:71;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12933:539;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11661:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12199:333;;;;;;;;;;;;;:::i;:::-;;4395:891;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14632:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2031:220:8;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12540:385:7;;;;;;;;;;;;;:::i;:::-;;745:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;923:33;;;;:::o;10381:539::-;1462:21:9;:19;:21::i;:::-;10498:6:7::1;10460:12;;;;;;;;;;;:22;;;10483:10;10460:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;10452:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10596:6;10556:11;;;;;;;;;;;:21;;;10586:4;10556:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;10548:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;10655:12;;;;;;;;;;;:17;;;10673:10;10685:6;10655:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10711:11;;;;;;;;;;;:20;;;10732:10;10744:6;10711:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10703:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;10826:36;10855:6;10826:24;;:28;;:36;;;;:::i;:::-;10799:24;:63;;;;10893:10;10878:34;;;10905:6;10878:34;;;;;;:::i;:::-;;;;;;;;1506:20:9::0;:18;:20::i;:::-;10381:539:7;:::o;15527:243::-;15591:15;15617:21;15679;15715:11;;;;;;;;;;;:21;;;15745:4;15715:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15657:105;;;;15527:243;;:::o;851:27::-;;;;:::o;1674:25::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6488:656::-;6539:14;;;;;;;;;;;:35;;;6575:10;6539:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6531:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6624:11;:18;;;;;;;;;;;;:46;;;;;6647:23;;;;;;;;;;;6646:24;6624:46;6616:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;6732:4;6706:23;;:30;;;;;;;;;;;;;;;;;;6766:10;6747:16;;:29;;;;;;;;;;;;;;;;;;6797:18;6818:11;:25;;;6797:46;;6855:12;6873:16;;;;;;;;;;;:21;;6902:10;6873:44;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6854:63;;;6936:7;6928:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;7015:11;;;;;;;;;;;:21;;;7045:4;7015:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6988:11;:24;;:63;;;;7069:67;7090:11;:21;;;7113:10;7125;7069:67;;;;;;;;:::i;:::-;;;;;;;;6520:624;;6488:656::o;11438:215::-;984:13:8;:11;:13::i;:::-;11564:1:7::1;11534:32;;:18;:32;;::::0;11526:60:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11626:18;11597:14;;:48;;;;;;;;;;;;;;;;;;11438:215:::0;:::o;963:52::-;1014:1;963:52;:::o;1060:31::-;;;;;;;;;;;;;:::o;644:::-;;;;;;;;;;;;;:::o;5294:383::-;5351:7;5371:20;5394:14;;;;;;;;;;;:30;;;5425:4;5394:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5371:59;;5461:11;5445:12;:27;5441:197;;5489:16;5542:5;5525:14;;5508;;:31;;;;:::i;:::-;:39;;;;:::i;:::-;5489:58;;5586:8;5569:14;;:25;:57;;5625:1;5569:57;;;5614:8;5597:14;;:25;;;;:::i;:::-;5569:57;5562:64;;;;;;5441:197;5655:14;;5648:21;;;5294:383;;;;:::o;1024:29::-;;;;;;;;;;;;;:::o;497:100::-;554:42;497:100;:::o;15295:224::-;15355:21;15387:18;15446:23;;;;;;;;;;;15484:16;;;;;;;;;;;15424:87;;;;15295:224;;:::o;7152:270::-;7227:16;;;;;;;;;;;7213:30;;:10;:30;;;:57;;;;;7247:23;;;;;;;;;;;7213:57;7205:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;7321:1;7308:9;:14;;:35;;;;;7339:4;7326:9;:17;;7308:35;7300:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;7379:10;;;;;;;;;;;:20;;;7400:9;7379:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7152:270;:::o;4208:179::-;984:13:8;:11;:13::i;:::-;4321:15:7::1;4304:14;:32;;;;4364:15;4347:14;:32;;;;4208:179:::0;;:::o;14769:518::-;14825:24;14860:13;14884:21;14916:22;14949:23;14983:24;15048:11;:21;;;15084:11;:18;;;;;;;;;;;;15117:11;:25;;;15157:11;:26;;;15198:11;:27;;;15240:11;:28;;;15026:253;;;;;;;;;;;;14769:518;;;;;;:::o;16072:244::-;16140:22;16173;16236:12;:18;16249:4;16236:18;;;;;;;;;;;;;;;;16269:12;;;;;;;;;;;:22;;;16292:4;16269:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16214:94;;;;16072:244;;;:::o;1421:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10928:279::-;984:13:8;:11;:13::i;:::-;11022:12:7::1;;11012:6;:22;;11004:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11083:6;11067:12;;:22;;;;;;;:::i;:::-;;;;;;;;11101:12;11119:10;:15;;11142:6;11119:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11100:53;;;11172:7;11164:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;10993:214;10928:279:::0;:::o;1507:39::-;;;;:::o;1773:103:8:-;984:13;:11;:13::i;:::-;1838:30:::1;1865:1;1838:18;:30::i;:::-;1773:103::o:0;2029:33:7:-;;;;:::o;1807:44::-;;;;:::o;1760:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;11215:215::-;984:13:8;:11;:13::i;:::-;11329:3:7::1;11311:14;:21;;11303:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11408:14;11384:21;:38;;;;11215:215:::0;:::o;15778:286::-;15839:17;15867:18;15896:26;15963:12;;15990:16;;16021:24;;15941:115;;;;;;15778:286;;;:::o;1098:87:8:-;1144:7;1171:6;;;;;;;;;;;1164:13;;1098:87;:::o;1453:47:7:-;;;;;;;;;;;;;;;;;:::o;11966:225::-;984:13:8;:11;:13::i;:::-;12075:1:7::1;12042:29;;:34;12034:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;12108:29;;:31;;;;;;;;;:::i;:::-;;;;;;12182:1;12150:29;:33;;;;11966:225::o:0;409:81::-;447:42;409:81;:::o;1936:44::-;;;;:::o;1706:47::-;1752:1;1706:47;:::o;815:29::-;;;;:::o;885:31::-;;;;:::o;779:29::-;;;;:::o;1989:33::-;;;;;;;;;;;;;:::o;7430:1005::-;7498:16;;;;;;;;;;;7484:30;;:10;:30;;;:57;;;;;7518:23;;;;;;;;;;;7484:57;7476:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;7573:26;7602:11;;;;;;;;;;;:21;;;7632:4;7602:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7573:65;;7649:18;7691:11;:24;;;7670:18;:45;;;;:::i;:::-;7649:66;;7746:10;7726:16;;:30;;;;;;;:::i;:::-;;;;;;;;7795:10;7767:24;;:38;;;;;;;:::i;:::-;;;;;;;;7818:29;7836:10;7818:17;:29::i;:::-;7860:21;7884:48;7928:3;7884:39;7901:21;;7884:12;;:16;;:39;;;;:::i;:::-;:43;;:48;;;;:::i;:::-;7860:72;;7958:31;7975:13;7958:12;;:16;;:31;;;;:::i;:::-;7943:12;:46;;;;8011:15;8040:14;;;;;;;;;;;8032:28;;8068:13;8097:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8032:124;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8010:146;;;8175:10;8167:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;8222:32;:30;:32::i;:::-;8272:49;8287:11;:21;;;8310:10;8272:49;;;;;;;:::i;:::-;;;;;;;;8334:11;:9;:11::i;:::-;8382:5;8356:23;;:31;;;;;;;;;;;;;;;;;;8425:1;8398:16;;:29;;;;;;;;;;;;;;;;;;7465:970;;;;7430:1005::o;1603:35::-;;;;;;;;;;;;;:::o;682:25::-;;;;;;;;;;;;;:::o;716:22::-;;;;:::o;604:33::-;;;;;;;;;;;;;:::o;1555:41::-;;;;:::o;14191:362::-;984:13:8;:11;:13::i;:::-;14323:1:7::1;14304:16;:20;14296:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;14389:1;14375:11;:15;:59;;;;;14409:11;:25;;;14394:11;:40;;14375:59;14367:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;14497:16;14482:12;:31;;;;14534:11;14524:7;:21;;;;14191:362:::0;;:::o;1858:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12933:539::-;984:13:8;:11;:13::i;:::-;13032:8:7::1;:19;13041:9;13032:19;;;;;;;;;;;;;;;;;;;;;;;;;:43;;;;;13056:8;:19;13065:9;13056:19;;;;;;;;;;;;;;;;;;;;;;;;;13055:20;13032:43;13024:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13135:1;13114:23;;:9;:23;;::::0;13106:51:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13175:6;13184:1;13175:10;;13170:165;13191:1;13187;:5;13170:165;;;13232:9;13218:23;;:7;13226:1;13218:10;;;;;;;:::i;:::-;;;;;;;;;;;;;:23;;::::0;13214:110:::1;;13275:9;13262:7;13270:1;13262:10;;;;;;;:::i;:::-;;;;:22;;;;;;;;;;;;;;;;;;13303:5;;13214:110;13194:3;;;;;;;13170:165;;;;13369:5;13347:8;:19;13356:9;13347:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;13407:4;13385:8;:19;13394:9;13385:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;13429:35;13443:9;13454;13429:35;;;;;;;:::i;:::-;;;;;;;;12933:539:::0;;:::o;11661:245::-;984:13:8;:11;:13::i;:::-;11775:1:7::1;11751:26;;:12;:26;;::::0;11743:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11825:12;11808:14;;:29;;;;;;;;;;;;;;;;;;554:42;11848:36;;;11885:12;11848:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11661:245:::0;:::o;12199:333::-;12262:8;:20;12271:10;12262:20;;;;;;;;;;;;;;;;;;;;;;;;;12254:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;12319:19;:50;12339:29;;12319:50;;;;;;;;;;;:62;12370:10;12319:62;;;;;;;;;;;;;;;;;;;;;;;;;12318:63;12310:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;12478:4;12413:19;:50;12433:29;;12413:50;;;;;;;;;;;:62;12464:10;12413:62;;;;;;;;;;;;;;;;:69;;;;;;;;;;;;;;;;;;12493:29;;:31;;;;;;;;;:::i;:::-;;;;;;12199:333::o;4395:891::-;1462:21:9;:19;:21::i;:::-;4507:1:7::1;4499:5;:9;4491:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;4545:21;4569:24;4582:10;4569:12;:24::i;:::-;4545:48;;4604:27;4667:5;4650:13;4635:12;;:28;;;;:::i;:::-;4634:38;;;;:::i;:::-;4604:68;;4704:19;4691:9;:32;4683:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;4761:20;4799:5;4784:12;;:20;;;;:::i;:::-;4761:43;;4815:17;4851:5;4835:13;:21;;;;:::i;:::-;4815:41;;4878:11;:18;;;;;;;;;;;;4877:19;4869:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4978:7;;4962:12;4934:11;:25;;;:40;;;;:::i;:::-;:51;;4926:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;5037:6;5046:1;5037:10;;5032:209;5053:5;5049:1;:9;5032:209;;;5080:43;5097:12;;5111:11;5080:16;:43::i;:::-;5153:10;5143:86;;;5165:12;;5179:13;5194:11;5207;:21;;;5143:86;;;;;;;;;:::i;:::-;;;;;;;;5060:3;;;;;;;5032:209;;;;5269:9;5253:12;;:25;;;;;;;:::i;:::-;;;;;;;;4480:806;;;;1506:20:9::0;:18;:20::i;:::-;4395:891:7;;:::o;14632:129::-;984:13:8;:11;:13::i;:::-;14737:15:7::1;14708:12;;:45;;;;;;;;;;;;;;;;;;14632:129:::0;:::o;2031:220:8:-;984:13;:11;:13::i;:::-;2136:1:::1;2116:22;;:8;:22;;::::0;2112:93:::1;;2190:1;2162:31;;;;;;;;;;;:::i;:::-;;;;;;;;2112:93;2215:28;2234:8;2215:18;:28::i;:::-;2031:220:::0;:::o;12540:385:7:-;984:13:8;:11;:13::i;:::-;1752:1:7::1;12616:29;;:52;;12608:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;12707:20;:18;:20::i;:::-;12780:1;12748:29;:33;;;;12797:6;12806:1;12797:10;;12792:126;12813:1;12809;:5;12792:126;;;12901:5;12836:19;:50;12856:29;;12836:50;;;;;;;;;;;:62;12887:7;12895:1;12887:10;;;;;;;:::i;:::-;;;;;;;;;;;;;12836:62;;;;;;;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;12816:3;;;;;;;12792:126;;;;12540:385::o:0;745:27::-;;;;:::o;1542:293:9:-;944:1;1676:7;;:19;1668:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;944:1;1809:7;:18;;;;1542:293::o;2791:98:10:-;2849:7;2880:1;2876;:5;;;;:::i;:::-;2869:12;;2791:98;;;;:::o;1843:213:9:-;900:1;2026:7;:22;;;;1843:213::o;1263:166:8:-;1334:12;:10;:12::i;:::-;1323:23;;:7;:5;:7::i;:::-;:23;;;1319:103;;1397:12;:10;:12::i;:::-;1370:40;;;;;;;;;;;:::i;:::-;;;;;;;;1319:103;1263:166::o;2411:191::-;2485:16;2504:6;;;;;;;;;;;2485:25;;2530:8;2521:6;;:17;;;;;;;;;;;;;;;;;;2585:8;2554:40;;2575:8;2554:40;;;;;;;;;;;;2474:128;2411:191;:::o;8443:685:7:-;8534:1;8517:13;:18;:52;;;;8568:1;8539:11;:25;;;:30;8517:52;8571:7;8513:65;8595:6;8604:1;8595:10;;8590:531;8611:11;:22;;:29;;;;8607:1;:33;8590:531;;;8662:17;8682:11;:22;;8705:1;8682:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8662:45;;8722:19;8744:12;:23;8757:9;8744:23;;;;;;;;;;;;;;;;8722:45;;8800:1;8786:11;:15;8782:328;;;8822:23;8880:11;:25;;;8863:13;8849:11;:27;;;;:::i;:::-;8848:57;;;;:::i;:::-;8822:83;;8924:12;;;;;;;;;;;:17;;;8942:9;8953:15;8924:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9010:15;8988:18;;:37;;;;;;;:::i;:::-;;;;;;;;9067:9;9049:45;;;9078:15;9049:45;;;;;;:::i;:::-;;;;;;;;8803:307;8782:328;8647:474;;8642:3;;;;;;;8590:531;;;;8443:685;;:::o;3148:98:10:-;3206:7;3237:1;3233;:5;;;;:::i;:::-;3226:12;;3148:98;;;;:::o;3547:::-;3605:7;3636:1;3632;:5;;;;:::i;:::-;3625:12;;3547:98;;;;:::o;9136:973:7:-;9198:22;9223:21;9198:46;;447:42;9257:19;;;9285:4;9300;9257:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9317:25;9345:21;9317:49;;9377:19;9419:14;9399:17;:34;;;;:::i;:::-;9377:56;;447:42;9446:17;;;9472:4;9487;9446:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9504:20;9527:21;9504:44;;9559:17;9594;9579:12;:32;;;;:::i;:::-;9559:52;;9624:19;9660:9;9646:11;:23;;;;:::i;:::-;9624:45;;9700:1;9686:11;:15;9682:420;;;9719:12;9745:14;;;;;;;;;;;9737:28;;9773:11;9804:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9737:129;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9718:148;;;9889:7;9881:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9977:14;;;;;;;;;;;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10044:46;10067:11;10080:9;10044:46;;;;;;;:::i;:::-;;;;;;;;9703:399;9682:420;9187:922;;;;;;9136:973::o;10117:256::-;10158:18;;:20;;;;;;;;;:::i;:::-;;;;;;10206:11;;10199:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;10252;;10228:11;:21;;:42;;;;10302:5;10281:11;:18;;;:26;;;;;;;;;;;;;;;;;;10343:11;:21;;;10333:32;;;;;;;;;;10117:256::o;5685:795::-;5794:6;5765:11;:25;;;:35;;;;;;;:::i;:::-;;;;;;;;5839:6;5811:12;:24;5824:10;5811:24;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;5862:11;5858:150;;;5920:6;5890:11;:26;;;:36;;;;;;;:::i;:::-;;;;;;;;5858:150;;;5990:6;5959:11;:27;;;:37;;;;;;;:::i;:::-;;;;;;;;5858:150;6025:11;:23;;:35;6049:10;6025:35;;;;;;;;;;;;;;;;;;;;;;;;;6020:210;;6077:11;:22;;6105:10;6077:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6169:4;6131:11;:23;;:35;6155:10;6131:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;6188:11;:28;;;:30;;;;;;;;;:::i;:::-;;;;;;6020:210;6275:7;;6246:11;:25;;;:36;6242:231;;6320:4;6299:11;:18;;;:25;;;;;;;;;;;;;;;;;;6344:117;6355:11;:21;;;6378:11;:26;;;6406:11;:27;;;6435:11;:25;;;6344:117;;;;;;;;;:::i;:::-;;;;;;;;6242:231;5685:795;;:::o;13480:703::-;13529:18;13550:21;13529:42;;13582:21;13606:11;;;;;;;;;;;:21;;;13636:4;13606:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13582:60;;13664:12;13682:7;:5;:7::i;:::-;:12;;13702:10;13682:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13663:54;;;13736:7;13728:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;13796:11;;;;;;;;;;;:20;;;13817:7;:5;:7::i;:::-;13826:13;13796:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13788:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;13893:85;13921:29;;13952:10;13964:13;13893:85;;;;;;;;:::i;:::-;;;;;;;;13998:11;;13991:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14041:1;14020:18;:22;;;;14068:1;14053:12;:16;;;;14099:1;14080:16;:20;;;;14138:1;14111:24;:28;;;;14174:1;14150:11;:21;;:25;;;;13518:665;;;13480:703::o;93:98:0:-;146:7;173:10;166:17;;93:98;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:77:11:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:332::-;1498:4;1536:2;1525:9;1521:18;1513:26;;1549:71;1617:1;1606:9;1602:17;1593:6;1549:71;:::i;:::-;1630:72;1698:2;1687:9;1683:18;1674:6;1630:72;:::i;:::-;1377:332;;;;;:::o;1715:126::-;1752:7;1792:42;1785:5;1781:54;1770:65;;1715:126;;;:::o;1847:96::-;1884:7;1913:24;1931:5;1913:24;:::i;:::-;1902:35;;1847:96;;;:::o;1949:118::-;2036:24;2054:5;2036:24;:::i;:::-;2031:3;2024:37;1949:118;;:::o;2073:222::-;2166:4;2204:2;2193:9;2189:18;2181:26;;2217:71;2285:1;2274:9;2270:17;2261:6;2217:71;:::i;:::-;2073:222;;;;:::o;2301:122::-;2374:24;2392:5;2374:24;:::i;:::-;2367:5;2364:35;2354:63;;2413:1;2410;2403:12;2354:63;2301:122;:::o;2429:139::-;2475:5;2513:6;2500:20;2491:29;;2529:33;2556:5;2529:33;:::i;:::-;2429:139;;;;:::o;2574:329::-;2633:6;2682:2;2670:9;2661:7;2657:23;2653:32;2650:119;;;2688:79;;:::i;:::-;2650:119;2808:1;2833:53;2878:7;2869:6;2858:9;2854:22;2833:53;:::i;:::-;2823:63;;2779:117;2574:329;;;;:::o;2909:60::-;2937:3;2958:5;2951:12;;2909:60;;;:::o;2975:142::-;3025:9;3058:53;3076:34;3085:24;3103:5;3085:24;:::i;:::-;3076:34;:::i;:::-;3058:53;:::i;:::-;3045:66;;2975:142;;;:::o;3123:126::-;3173:9;3206:37;3237:5;3206:37;:::i;:::-;3193:50;;3123:126;;;:::o;3255:147::-;3326:9;3359:37;3390:5;3359:37;:::i;:::-;3346:50;;3255:147;;;:::o;3408:173::-;3516:58;3568:5;3516:58;:::i;:::-;3511:3;3504:71;3408:173;;:::o;3587:264::-;3701:4;3739:2;3728:9;3724:18;3716:26;;3752:92;3841:1;3830:9;3826:17;3817:6;3752:92;:::i;:::-;3587:264;;;;:::o;3857:145::-;3926:9;3959:37;3990:5;3959:37;:::i;:::-;3946:50;;3857:145;;;:::o;4008:169::-;4114:56;4164:5;4114:56;:::i;:::-;4109:3;4102:69;4008:169;;:::o;4183:260::-;4295:4;4333:2;4322:9;4318:18;4310:26;;4346:90;4433:1;4422:9;4418:17;4409:6;4346:90;:::i;:::-;4183:260;;;;:::o;4449:90::-;4483:7;4526:5;4519:13;4512:21;4501:32;;4449:90;;;:::o;4545:109::-;4626:21;4641:5;4626:21;:::i;:::-;4621:3;4614:34;4545:109;;:::o;4660:320::-;4775:4;4813:2;4802:9;4798:18;4790:26;;4826:65;4888:1;4877:9;4873:17;4864:6;4826:65;:::i;:::-;4901:72;4969:2;4958:9;4954:18;4945:6;4901:72;:::i;:::-;4660:320;;;;;:::o;4986:474::-;5054:6;5062;5111:2;5099:9;5090:7;5086:23;5082:32;5079:119;;;5117:79;;:::i;:::-;5079:119;5237:1;5262:53;5307:7;5298:6;5287:9;5283:22;5262:53;:::i;:::-;5252:63;;5208:117;5364:2;5390:53;5435:7;5426:6;5415:9;5411:22;5390:53;:::i;:::-;5380:63;;5335:118;4986:474;;;;;:::o;5466:763::-;5693:4;5731:3;5720:9;5716:19;5708:27;;5745:71;5813:1;5802:9;5798:17;5789:6;5745:71;:::i;:::-;5826:66;5888:2;5877:9;5873:18;5864:6;5826:66;:::i;:::-;5902:72;5970:2;5959:9;5955:18;5946:6;5902:72;:::i;:::-;5984;6052:2;6041:9;6037:18;6028:6;5984:72;:::i;:::-;6066:73;6134:3;6123:9;6119:19;6110:6;6066:73;:::i;:::-;6149;6217:3;6206:9;6202:19;6193:6;6149:73;:::i;:::-;5466:763;;;;;;;;;:::o;6235:874::-;6490:4;6528:3;6517:9;6513:19;6505:27;;6542:71;6610:1;6599:9;6595:17;6586:6;6542:71;:::i;:::-;6623:66;6685:2;6674:9;6670:18;6661:6;6623:66;:::i;:::-;6699:72;6767:2;6756:9;6752:18;6743:6;6699:72;:::i;:::-;6781;6849:2;6838:9;6834:18;6825:6;6781:72;:::i;:::-;6863:73;6931:3;6920:9;6916:19;6907:6;6863:73;:::i;:::-;6946;7014:3;7003:9;6999:19;6990:6;6946:73;:::i;:::-;7029;7097:3;7086:9;7082:19;7073:6;7029:73;:::i;:::-;6235:874;;;;;;;;;;:::o;7115:210::-;7202:4;7240:2;7229:9;7225:18;7217:26;;7253:65;7315:1;7304:9;7300:17;7291:6;7253:65;:::i;:::-;7115:210;;;;:::o;7331:442::-;7480:4;7518:2;7507:9;7503:18;7495:26;;7531:71;7599:1;7588:9;7584:17;7575:6;7531:71;:::i;:::-;7612:72;7680:2;7669:9;7665:18;7656:6;7612:72;:::i;:::-;7694;7762:2;7751:9;7747:18;7738:6;7694:72;:::i;:::-;7331:442;;;;;;:::o;7779:139::-;7842:9;7875:37;7906:5;7875:37;:::i;:::-;7862:50;;7779:139;;;:::o;7924:157::-;8024:50;8068:5;8024:50;:::i;:::-;8019:3;8012:63;7924:157;;:::o;8087:248::-;8193:4;8231:2;8220:9;8216:18;8208:26;;8244:84;8325:1;8314:9;8310:17;8301:6;8244:84;:::i;:::-;8087:248;;;;:::o;8341:147::-;8412:9;8445:37;8476:5;8445:37;:::i;:::-;8432:50;;8341:147;;;:::o;8494:173::-;8602:58;8654:5;8602:58;:::i;:::-;8597:3;8590:71;8494:173;;:::o;8673:264::-;8787:4;8825:2;8814:9;8810:18;8802:26;;8838:92;8927:1;8916:9;8912:17;8903:6;8838:92;:::i;:::-;8673:264;;;;:::o;8943:140::-;9007:9;9040:37;9071:5;9040:37;:::i;:::-;9027:50;;8943:140;;;:::o;9089:159::-;9190:51;9235:5;9190:51;:::i;:::-;9185:3;9178:64;9089:159;;:::o;9254:250::-;9361:4;9399:2;9388:9;9384:18;9376:26;;9412:85;9494:1;9483:9;9479:17;9470:6;9412:85;:::i;:::-;9254:250;;;;:::o;9510:145::-;9579:9;9612:37;9643:5;9612:37;:::i;:::-;9599:50;;9510:145;;;:::o;9661:169::-;9767:56;9817:5;9767:56;:::i;:::-;9762:3;9755:69;9661:169;;:::o;9836:260::-;9948:4;9986:2;9975:9;9971:18;9963:26;;9999:90;10086:1;10075:9;10071:17;10062:6;9999:90;:::i;:::-;9836:260;;;;:::o;10102:474::-;10170:6;10178;10227:2;10215:9;10206:7;10202:23;10198:32;10195:119;;;10233:79;;:::i;:::-;10195:119;10353:1;10378:53;10423:7;10414:6;10403:9;10399:22;10378:53;:::i;:::-;10368:63;;10324:117;10480:2;10506:53;10551:7;10542:6;10531:9;10527:22;10506:53;:::i;:::-;10496:63;;10451:118;10102:474;;;;;:::o;10582:::-;10650:6;10658;10707:2;10695:9;10686:7;10682:23;10678:32;10675:119;;;10713:79;;:::i;:::-;10675:119;10833:1;10858:53;10903:7;10894:6;10883:9;10879:22;10858:53;:::i;:::-;10848:63;;10804:117;10960:2;10986:53;11031:7;11022:6;11011:9;11007:22;10986:53;:::i;:::-;10976:63;;10931:118;10582:474;;;;;:::o;11062:116::-;11132:21;11147:5;11132:21;:::i;:::-;11125:5;11122:32;11112:60;;11168:1;11165;11158:12;11112:60;11062:116;:::o;11184:133::-;11227:5;11265:6;11252:20;11243:29;;11281:30;11305:5;11281:30;:::i;:::-;11184:133;;;;:::o;11323:468::-;11388:6;11396;11445:2;11433:9;11424:7;11420:23;11416:32;11413:119;;;11451:79;;:::i;:::-;11413:119;11571:1;11596:53;11641:7;11632:6;11621:9;11617:22;11596:53;:::i;:::-;11586:63;;11542:117;11698:2;11724:50;11766:7;11757:6;11746:9;11742:22;11724:50;:::i;:::-;11714:60;;11669:115;11323:468;;;;;:::o;11797:143::-;11854:5;11885:6;11879:13;11870:22;;11901:33;11928:5;11901:33;:::i;:::-;11797:143;;;;:::o;11946:351::-;12016:6;12065:2;12053:9;12044:7;12040:23;12036:32;12033:119;;;12071:79;;:::i;:::-;12033:119;12191:1;12216:64;12272:7;12263:6;12252:9;12248:22;12216:64;:::i;:::-;12206:74;;12162:128;11946:351;;;;:::o;12303:169::-;12387:11;12421:6;12416:3;12409:19;12461:4;12456:3;12452:14;12437:29;;12303:169;;;;:::o;12478:178::-;12618:30;12614:1;12606:6;12602:14;12595:54;12478:178;:::o;12662:366::-;12804:3;12825:67;12889:2;12884:3;12825:67;:::i;:::-;12818:74;;12901:93;12990:3;12901:93;:::i;:::-;13019:2;13014:3;13010:12;13003:19;;12662:366;;;:::o;13034:419::-;13200:4;13238:2;13227:9;13223:18;13215:26;;13287:9;13281:4;13277:20;13273:1;13262:9;13258:17;13251:47;13315:131;13441:4;13315:131;:::i;:::-;13307:139;;13034:419;;;:::o;13459:177::-;13599:29;13595:1;13587:6;13583:14;13576:53;13459:177;:::o;13642:366::-;13784:3;13805:67;13869:2;13864:3;13805:67;:::i;:::-;13798:74;;13881:93;13970:3;13881:93;:::i;:::-;13999:2;13994:3;13990:12;13983:19;;13642:366;;;:::o;14014:419::-;14180:4;14218:2;14207:9;14203:18;14195:26;;14267:9;14261:4;14257:20;14253:1;14242:9;14238:17;14231:47;14295:131;14421:4;14295:131;:::i;:::-;14287:139;;14014:419;;;:::o;14439:332::-;14560:4;14598:2;14587:9;14583:18;14575:26;;14611:71;14679:1;14668:9;14664:17;14655:6;14611:71;:::i;:::-;14692:72;14760:2;14749:9;14745:18;14736:6;14692:72;:::i;:::-;14439:332;;;;;:::o;14777:137::-;14831:5;14862:6;14856:13;14847:22;;14878:30;14902:5;14878:30;:::i;:::-;14777:137;;;;:::o;14920:345::-;14987:6;15036:2;15024:9;15015:7;15011:23;15007:32;15004:119;;;15042:79;;:::i;:::-;15004:119;15162:1;15187:61;15240:7;15231:6;15220:9;15216:22;15187:61;:::i;:::-;15177:71;;15133:125;14920:345;;;;:::o;15271:172::-;15411:24;15407:1;15399:6;15395:14;15388:48;15271:172;:::o;15449:366::-;15591:3;15612:67;15676:2;15671:3;15612:67;:::i;:::-;15605:74;;15688:93;15777:3;15688:93;:::i;:::-;15806:2;15801:3;15797:12;15790:19;;15449:366;;;:::o;15821:419::-;15987:4;16025:2;16014:9;16010:18;16002:26;;16074:9;16068:4;16064:20;16060:1;16049:9;16045:17;16038:47;16102:131;16228:4;16102:131;:::i;:::-;16094:139;;15821:419;;;:::o;16246:164::-;16386:16;16382:1;16374:6;16370:14;16363:40;16246:164;:::o;16416:366::-;16558:3;16579:67;16643:2;16638:3;16579:67;:::i;:::-;16572:74;;16655:93;16744:3;16655:93;:::i;:::-;16773:2;16768:3;16764:12;16757:19;;16416:366;;;:::o;16788:419::-;16954:4;16992:2;16981:9;16977:18;16969:26;;17041:9;17035:4;17031:20;17027:1;17016:9;17012:17;17005:47;17069:131;17195:4;17069:131;:::i;:::-;17061:139;;16788:419;;;:::o;17213:168::-;17353:20;17349:1;17341:6;17337:14;17330:44;17213:168;:::o;17387:366::-;17529:3;17550:67;17614:2;17609:3;17550:67;:::i;:::-;17543:74;;17626:93;17715:3;17626:93;:::i;:::-;17744:2;17739:3;17735:12;17728:19;;17387:366;;;:::o;17759:419::-;17925:4;17963:2;17952:9;17948:18;17940:26;;18012:9;18006:4;18002:20;17998:1;17987:9;17983:17;17976:47;18040:131;18166:4;18040:131;:::i;:::-;18032:139;;17759:419;;;:::o;18184:147::-;18285:11;18322:3;18307:18;;18184:147;;;;:::o;18337:114::-;;:::o;18457:398::-;18616:3;18637:83;18718:1;18713:3;18637:83;:::i;:::-;18630:90;;18729:93;18818:3;18729:93;:::i;:::-;18847:1;18842:3;18838:11;18831:18;;18457:398;;;:::o;18861:379::-;19045:3;19067:147;19210:3;19067:147;:::i;:::-;19060:154;;19231:3;19224:10;;18861:379;;;:::o;19246:177::-;19386:29;19382:1;19374:6;19370:14;19363:53;19246:177;:::o;19429:366::-;19571:3;19592:67;19656:2;19651:3;19592:67;:::i;:::-;19585:74;;19668:93;19757:3;19668:93;:::i;:::-;19786:2;19781:3;19777:12;19770:19;;19429:366;;;:::o;19801:419::-;19967:4;20005:2;19994:9;19990:18;19982:26;;20054:9;20048:4;20044:20;20040:1;20029:9;20025:17;20018:47;20082:131;20208:4;20082:131;:::i;:::-;20074:139;;19801:419;;;:::o;20226:442::-;20375:4;20413:2;20402:9;20398:18;20390:26;;20426:71;20494:1;20483:9;20479:17;20470:6;20426:71;:::i;:::-;20507:72;20575:2;20564:9;20560:18;20551:6;20507:72;:::i;:::-;20589;20657:2;20646:9;20642:18;20633:6;20589:72;:::i;:::-;20226:442;;;;;;:::o;20674:165::-;20814:17;20810:1;20802:6;20798:14;20791:41;20674:165;:::o;20845:366::-;20987:3;21008:67;21072:2;21067:3;21008:67;:::i;:::-;21001:74;;21084:93;21173:3;21084:93;:::i;:::-;21202:2;21197:3;21193:12;21186:19;;20845:366;;;:::o;21217:419::-;21383:4;21421:2;21410:9;21406:18;21398:26;;21470:9;21464:4;21460:20;21456:1;21445:9;21441:17;21434:47;21498:131;21624:4;21498:131;:::i;:::-;21490:139;;21217:419;;;:::o;21642:180::-;21690:77;21687:1;21680:88;21787:4;21784:1;21777:15;21811:4;21808:1;21801:15;21828:410;21868:7;21891:20;21909:1;21891:20;:::i;:::-;21886:25;;21925:20;21943:1;21925:20;:::i;:::-;21920:25;;21980:1;21977;21973:9;22002:30;22020:11;22002:30;:::i;:::-;21991:41;;22181:1;22172:7;22168:15;22165:1;22162:22;22142:1;22135:9;22115:83;22092:139;;22211:18;;:::i;:::-;22092:139;21876:362;21828:410;;;;:::o;22244:180::-;22292:77;22289:1;22282:88;22389:4;22386:1;22379:15;22413:4;22410:1;22403:15;22430:185;22470:1;22487:20;22505:1;22487:20;:::i;:::-;22482:25;;22521:20;22539:1;22521:20;:::i;:::-;22516:25;;22560:1;22550:35;;22565:18;;:::i;:::-;22550:35;22607:1;22604;22600:9;22595:14;;22430:185;;;;:::o;22621:194::-;22661:4;22681:20;22699:1;22681:20;:::i;:::-;22676:25;;22715:20;22733:1;22715:20;:::i;:::-;22710:25;;22759:1;22756;22752:9;22744:17;;22783:1;22777:4;22774:11;22771:37;;;22788:18;;:::i;:::-;22771:37;22621:194;;;;:::o;22821:168::-;22961:20;22957:1;22949:6;22945:14;22938:44;22821:168;:::o;22995:366::-;23137:3;23158:67;23222:2;23217:3;23158:67;:::i;:::-;23151:74;;23234:93;23323:3;23234:93;:::i;:::-;23352:2;23347:3;23343:12;23336:19;;22995:366;;;:::o;23367:419::-;23533:4;23571:2;23560:9;23556:18;23548:26;;23620:9;23614:4;23610:20;23606:1;23595:9;23591:17;23584:47;23648:131;23774:4;23648:131;:::i;:::-;23640:139;;23367:419;;;:::o;23792:168::-;23875:11;23909:6;23904:3;23897:19;23949:4;23944:3;23940:14;23925:29;;23792:168;;;;:::o;23966:362::-;24107:3;24128:65;24191:1;24186:3;24128:65;:::i;:::-;24121:72;;24202:93;24291:3;24202:93;:::i;:::-;24320:1;24315:3;24311:11;24304:18;;23966:362;;;:::o;24334:527::-;24527:4;24565:2;24554:9;24550:18;24542:26;;24578:71;24646:1;24635:9;24631:17;24622:6;24578:71;:::i;:::-;24696:9;24690:4;24686:20;24681:2;24670:9;24666:18;24659:48;24724:130;24849:4;24724:130;:::i;:::-;24716:138;;24334:527;;;;:::o;24867:167::-;25007:19;25003:1;24995:6;24991:14;24984:43;24867:167;:::o;25040:366::-;25182:3;25203:67;25267:2;25262:3;25203:67;:::i;:::-;25196:74;;25279:93;25368:3;25279:93;:::i;:::-;25397:2;25392:3;25388:12;25381:19;;25040:366;;;:::o;25412:419::-;25578:4;25616:2;25605:9;25601:18;25593:26;;25665:9;25659:4;25655:20;25651:1;25640:9;25636:17;25629:47;25693:131;25819:4;25693:131;:::i;:::-;25685:139;;25412:419;;;:::o;25837:165::-;25977:17;25973:1;25965:6;25961:14;25954:41;25837:165;:::o;26008:366::-;26150:3;26171:67;26235:2;26230:3;26171:67;:::i;:::-;26164:74;;26247:93;26336:3;26247:93;:::i;:::-;26365:2;26360:3;26356:12;26349:19;;26008:366;;;:::o;26380:419::-;26546:4;26584:2;26573:9;26569:18;26561:26;;26633:9;26627:4;26623:20;26619:1;26608:9;26604:17;26597:47;26661:131;26787:4;26661:131;:::i;:::-;26653:139;;26380:419;;;:::o;26805:223::-;26945:34;26941:1;26933:6;26929:14;26922:58;27014:6;27009:2;27001:6;26997:15;26990:31;26805:223;:::o;27034:366::-;27176:3;27197:67;27261:2;27256:3;27197:67;:::i;:::-;27190:74;;27273:93;27362:3;27273:93;:::i;:::-;27391:2;27386:3;27382:12;27375:19;;27034:366;;;:::o;27406:419::-;27572:4;27610:2;27599:9;27595:18;27587:26;;27659:9;27653:4;27649:20;27645:1;27634:9;27630:17;27623:47;27687:131;27813:4;27687:131;:::i;:::-;27679:139;;27406:419;;;:::o;27831:166::-;27971:18;27967:1;27959:6;27955:14;27948:42;27831:166;:::o;28003:366::-;28145:3;28166:67;28230:2;28225:3;28166:67;:::i;:::-;28159:74;;28242:93;28331:3;28242:93;:::i;:::-;28360:2;28355:3;28351:12;28344:19;;28003:366;;;:::o;28375:419::-;28541:4;28579:2;28568:9;28564:18;28556:26;;28628:9;28622:4;28618:20;28614:1;28603:9;28599:17;28592:47;28656:131;28782:4;28656:131;:::i;:::-;28648:139;;28375:419;;;:::o;28800:233::-;28839:3;28862:24;28880:5;28862:24;:::i;:::-;28853:33;;28908:66;28901:5;28898:77;28895:103;;28978:18;;:::i;:::-;28895:103;29025:1;29018:5;29014:13;29007:20;;28800:233;;;:::o;29039:191::-;29079:3;29098:20;29116:1;29098:20;:::i;:::-;29093:25;;29132:20;29150:1;29132:20;:::i;:::-;29127:25;;29175:1;29172;29168:9;29161:16;;29196:3;29193:1;29190:10;29187:36;;;29203:18;;:::i;:::-;29187:36;29039:191;;;;:::o;29236:98::-;29287:6;29321:5;29315:12;29305:22;;29236:98;;;:::o;29340:139::-;29429:6;29424:3;29419;29413:23;29470:1;29461:6;29456:3;29452:16;29445:27;29340:139;;;:::o;29485:386::-;29589:3;29617:38;29649:5;29617:38;:::i;:::-;29671:88;29752:6;29747:3;29671:88;:::i;:::-;29664:95;;29768:65;29826:6;29821:3;29814:4;29807:5;29803:16;29768:65;:::i;:::-;29858:6;29853:3;29849:16;29842:23;;29593:278;29485:386;;;;:::o;29877:271::-;30007:3;30029:93;30118:3;30109:6;30029:93;:::i;:::-;30022:100;;30139:3;30132:10;;29877:271;;;;:::o;30154:169::-;30294:21;30290:1;30282:6;30278:14;30271:45;30154:169;:::o;30329:366::-;30471:3;30492:67;30556:2;30551:3;30492:67;:::i;:::-;30485:74;;30568:93;30657:3;30568:93;:::i;:::-;30686:2;30681:3;30677:12;30670:19;;30329:366;;;:::o;30701:419::-;30867:4;30905:2;30894:9;30890:18;30882:26;;30954:9;30948:4;30944:20;30940:1;30929:9;30925:17;30918:47;30982:131;31108:4;30982:131;:::i;:::-;30974:139;;30701:419;;;:::o;31126:177::-;31266:29;31262:1;31254:6;31250:14;31243:53;31126:177;:::o;31309:366::-;31451:3;31472:67;31536:2;31531:3;31472:67;:::i;:::-;31465:74;;31548:93;31637:3;31548:93;:::i;:::-;31666:2;31661:3;31657:12;31650:19;;31309:366;;;:::o;31681:419::-;31847:4;31885:2;31874:9;31870:18;31862:26;;31934:9;31928:4;31924:20;31920:1;31909:9;31905:17;31898:47;31962:131;32088:4;31962:131;:::i;:::-;31954:139;;31681:419;;;:::o;32106:172::-;32246:24;32242:1;32234:6;32230:14;32223:48;32106:172;:::o;32284:366::-;32426:3;32447:67;32511:2;32506:3;32447:67;:::i;:::-;32440:74;;32523:93;32612:3;32523:93;:::i;:::-;32641:2;32636:3;32632:12;32625:19;;32284:366;;;:::o;32656:419::-;32822:4;32860:2;32849:9;32845:18;32837:26;;32909:9;32903:4;32899:20;32895:1;32884:9;32880:17;32873:47;32937:131;33063:4;32937:131;:::i;:::-;32929:139;;32656:419;;;:::o;33081:165::-;33221:17;33217:1;33209:6;33205:14;33198:41;33081:165;:::o;33252:366::-;33394:3;33415:67;33479:2;33474:3;33415:67;:::i;:::-;33408:74;;33491:93;33580:3;33491:93;:::i;:::-;33609:2;33604:3;33600:12;33593:19;;33252:366;;;:::o;33624:419::-;33790:4;33828:2;33817:9;33813:18;33805:26;;33877:9;33871:4;33867:20;33863:1;33852:9;33848:17;33841:47;33905:131;34031:4;33905:131;:::i;:::-;33897:139;;33624:419;;;:::o;34049:180::-;34097:77;34094:1;34087:88;34194:4;34191:1;34184:15;34218:4;34215:1;34208:15;34235:332;34356:4;34394:2;34383:9;34379:18;34371:26;;34407:71;34475:1;34464:9;34460:17;34451:6;34407:71;:::i;:::-;34488:72;34556:2;34545:9;34541:18;34532:6;34488:72;:::i;:::-;34235:332;;;;;:::o;34573:162::-;34713:14;34709:1;34701:6;34697:14;34690:38;34573:162;:::o;34741:366::-;34883:3;34904:67;34968:2;34963:3;34904:67;:::i;:::-;34897:74;;34980:93;35069:3;34980:93;:::i;:::-;35098:2;35093:3;35089:12;35082:19;;34741:366;;;:::o;35113:419::-;35279:4;35317:2;35306:9;35302:18;35294:26;;35366:9;35360:4;35356:20;35352:1;35341:9;35337:17;35330:47;35394:131;35520:4;35394:131;:::i;:::-;35386:139;;35113:419;;;:::o;35538:164::-;35678:16;35674:1;35666:6;35662:14;35655:40;35538:164;:::o;35708:366::-;35850:3;35871:67;35935:2;35930:3;35871:67;:::i;:::-;35864:74;;35947:93;36036:3;35947:93;:::i;:::-;36065:2;36060:3;36056:12;36049:19;;35708:366;;;:::o;36080:419::-;36246:4;36284:2;36273:9;36269:18;36261:26;;36333:9;36327:4;36323:20;36319:1;36308:9;36304:17;36297:47;36361:131;36487:4;36361:131;:::i;:::-;36353:139;;36080:419;;;:::o;36505:171::-;36645:23;36641:1;36633:6;36629:14;36622:47;36505:171;:::o;36682:366::-;36824:3;36845:67;36909:2;36904:3;36845:67;:::i;:::-;36838:74;;36921:93;37010:3;36921:93;:::i;:::-;37039:2;37034:3;37030:12;37023:19;;36682:366;;;:::o;37054:419::-;37220:4;37258:2;37247:9;37243:18;37235:26;;37307:9;37301:4;37297:20;37293:1;37282:9;37278:17;37271:47;37335:131;37461:4;37335:131;:::i;:::-;37327:139;;37054:419;;;:::o;37479:170::-;37619:22;37615:1;37607:6;37603:14;37596:46;37479:170;:::o;37655:366::-;37797:3;37818:67;37882:2;37877:3;37818:67;:::i;:::-;37811:74;;37894:93;37983:3;37894:93;:::i;:::-;38012:2;38007:3;38003:12;37996:19;;37655:366;;;:::o;38027:419::-;38193:4;38231:2;38220:9;38216:18;38208:26;;38280:9;38274:4;38270:20;38266:1;38255:9;38251:17;38244:47;38308:131;38434:4;38308:131;:::i;:::-;38300:139;;38027:419;;;:::o;38452:164::-;38592:16;38588:1;38580:6;38576:14;38569:40;38452:164;:::o;38622:366::-;38764:3;38785:67;38849:2;38844:3;38785:67;:::i;:::-;38778:74;;38861:93;38950:3;38861:93;:::i;:::-;38979:2;38974:3;38970:12;38963:19;;38622:366;;;:::o;38994:419::-;39160:4;39198:2;39187:9;39183:18;39175:26;;39247:9;39241:4;39237:20;39233:1;39222:9;39218:17;39211:47;39275:131;39401:4;39275:131;:::i;:::-;39267:139;;38994:419;;;:::o;39419:179::-;39559:31;39555:1;39547:6;39543:14;39536:55;39419:179;:::o;39604:366::-;39746:3;39767:67;39831:2;39826:3;39767:67;:::i;:::-;39760:74;;39843:93;39932:3;39843:93;:::i;:::-;39961:2;39956:3;39952:12;39945:19;;39604:366;;;:::o;39976:419::-;40142:4;40180:2;40169:9;40165:18;40157:26;;40229:9;40223:4;40219:20;40215:1;40204:9;40200:17;40193:47;40257:131;40383:4;40257:131;:::i;:::-;40249:139;;39976:419;;;:::o;40401:541::-;40572:4;40610:3;40599:9;40595:19;40587:27;;40624:71;40692:1;40681:9;40677:17;40668:6;40624:71;:::i;:::-;40705:72;40773:2;40762:9;40758:18;40749:6;40705:72;:::i;:::-;40787:66;40849:2;40838:9;40834:18;40825:6;40787:66;:::i;:::-;40863:72;40931:2;40920:9;40916:18;40907:6;40863:72;:::i;:::-;40401:541;;;;;;;:::o;40948:173::-;41088:25;41084:1;41076:6;41072:14;41065:49;40948:173;:::o;41127:366::-;41269:3;41290:67;41354:2;41349:3;41290:67;:::i;:::-;41283:74;;41366:93;41455:3;41366:93;:::i;:::-;41484:2;41479:3;41475:12;41468:19;;41127:366;;;:::o;41499:419::-;41665:4;41703:2;41692:9;41688:18;41680:26;;41752:9;41746:4;41742:20;41738:1;41727:9;41723:17;41716:47;41780:131;41906:4;41780:131;:::i;:::-;41772:139;;41499:419;;;:::o;41924:181::-;42064:33;42060:1;42052:6;42048:14;42041:57;41924:181;:::o;42111:366::-;42253:3;42274:67;42338:2;42333:3;42274:67;:::i;:::-;42267:74;;42350:93;42439:3;42350:93;:::i;:::-;42468:2;42463:3;42459:12;42452:19;;42111:366;;;:::o;42483:419::-;42649:4;42687:2;42676:9;42672:18;42664:26;;42736:9;42730:4;42726:20;42722:1;42711:9;42707:17;42700:47;42764:131;42890:4;42764:131;:::i;:::-;42756:139;;42483:419;;;:::o;42908:234::-;43048:34;43044:1;43036:6;43032:14;43025:58;43117:17;43112:2;43104:6;43100:15;43093:42;42908:234;:::o;43148:366::-;43290:3;43311:67;43375:2;43370:3;43311:67;:::i;:::-;43304:74;;43387:93;43476:3;43387:93;:::i;:::-;43505:2;43500:3;43496:12;43489:19;;43148:366;;;:::o;43520:419::-;43686:4;43724:2;43713:9;43709:18;43701:26;;43773:9;43767:4;43763:20;43759:1;43748:9;43744:17;43737:47;43801:131;43927:4;43801:131;:::i;:::-;43793:139;;43520:419;;;:::o;43945:553::-;44122:4;44160:3;44149:9;44145:19;44137:27;;44174:71;44242:1;44231:9;44227:17;44218:6;44174:71;:::i;:::-;44255:72;44323:2;44312:9;44308:18;44299:6;44255:72;:::i;:::-;44337;44405:2;44394:9;44390:18;44381:6;44337:72;:::i;:::-;44419;44487:2;44476:9;44472:18;44463:6;44419:72;:::i;:::-;43945:553;;;;;;;:::o;44504:169::-;44644:21;44640:1;44632:6;44628:14;44621:45;44504:169;:::o;44679:366::-;44821:3;44842:67;44906:2;44901:3;44842:67;:::i;:::-;44835:74;;44918:93;45007:3;44918:93;:::i;:::-;45036:2;45031:3;45027:12;45020:19;;44679:366;;;:::o;45051:419::-;45217:4;45255:2;45244:9;45240:18;45232:26;;45304:9;45298:4;45294:20;45290:1;45279:9;45275:17;45268:47;45332:131;45458:4;45332:131;:::i;:::-;45324:139;;45051:419;;;:::o

Swarm Source

ipfs://e5c4dfa594edc1ff2eee6dc64719930f86ef214576c5238493bd744ac7bc1305

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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