ETH Price: $2,551.61 (-4.88%)

Contract

0x2Def5bd2F5b8637580f6BF97f9e4fB1a54cDC619
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Buy Token184076192023-10-22 18:28:35374 days ago1697999315IN
0x2Def5bd2...a54cDC619
0 ETH0.0022474713.15219343
Buy Token184072652023-10-22 17:16:59374 days ago1697995019IN
0x2Def5bd2...a54cDC619
0.005 ETH0.001159019.17684862
Buy Token184056012023-10-22 11:40:23375 days ago1697974823IN
0x2Def5bd2...a54cDC619
0.072 ETH0.000361686.41004618
Buy Token184016472023-10-21 22:24:59375 days ago1697927099IN
0x2Def5bd2...a54cDC619
0.017 ETH0.000994477.87401128
Buy Token184014372023-10-21 21:42:35375 days ago1697924555IN
0x2Def5bd2...a54cDC619
0.175 ETH0.00045998.14734054
Buy Token183831542023-10-19 8:20:59378 days ago1697703659IN
0x2Def5bd2...a54cDC619
0.002 ETH0.000674915.34437604
Buy Token183807052023-10-19 0:06:59378 days ago1697674019IN
0x2Def5bd2...a54cDC619
0.019 ETH0.001123018.89180787
Buy Token183795312023-10-18 20:10:23378 days ago1697659823IN
0x2Def5bd2...a54cDC619
0.07 ETH0.001159569.18205035
Buy Token183792832023-10-18 19:20:35378 days ago1697656835IN
0x2Def5bd2...a54cDC619
0.15 ETH0.0014387911.39209455
Set Sale Token183646962023-10-16 18:21:59380 days ago1697480519IN
0x2Def5bd2...a54cDC619
0 ETH0.0004863513.24963226
Add Payable Toke...183646772023-10-16 18:18:11380 days ago1697480291IN
0x2Def5bd2...a54cDC619
0 ETH0.0004802914.0479217
Buy Token183627562023-10-16 11:52:23381 days ago1697457143IN
0x2Def5bd2...a54cDC619
0.02 ETH0.000838986.64354615
Buy Token183557312023-10-15 12:19:11382 days ago1697372351IN
0x2Def5bd2...a54cDC619
0.05 ETH0.000675965.3526546
Buy Token183434912023-10-13 19:14:59383 days ago1697224499IN
0x2Def5bd2...a54cDC619
0.084 ETH0.001058448.38054834
Buy Token183414952023-10-13 12:32:35384 days ago1697200355IN
0x2Def5bd2...a54cDC619
0.084 ETH0.001210899.58759037
Buy Token183362942023-10-12 19:02:59384 days ago1697137379IN
0x2Def5bd2...a54cDC619
0.0653 ETH0.0014275111.30278842
Buy Token183360532023-10-12 18:14:35384 days ago1697134475IN
0x2Def5bd2...a54cDC619
0.17 ETH0.0014879311.78110937
Buy Token183348612023-10-12 14:13:35385 days ago1697120015IN
0x2Def5bd2...a54cDC619
0.03 ETH0.0006587211.67432918
Buy Token183343132023-10-12 12:23:47385 days ago1697113427IN
0x2Def5bd2...a54cDC619
0 ETH0.001248848.1208737
Buy Token183340672023-10-12 11:34:23385 days ago1697110463IN
0x2Def5bd2...a54cDC619
0 ETH0.001046296.12247774
Buy Token183339892023-10-12 11:18:35385 days ago1697109515IN
0x2Def5bd2...a54cDC619
0.078 ETH0.00073525.8211964
Buy Token183338302023-10-12 10:46:35385 days ago1697107595IN
0x2Def5bd2...a54cDC619
0.05 ETH0.000776686.15018673
Buy Token183336492023-10-12 10:09:47385 days ago1697105387IN
0x2Def5bd2...a54cDC619
0.012 ETH0.000431167.64138165
Buy Token183334272023-10-12 9:25:11385 days ago1697102711IN
0x2Def5bd2...a54cDC619
0.001 ETH0.000419437.43184686
Buy Token183334032023-10-12 9:20:23385 days ago1697102423IN
0x2Def5bd2...a54cDC619
0.0001 ETH0.000401367.11319011
View all transactions

Latest 22 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
184072652023-10-22 17:16:59374 days ago1697995019
0x2Def5bd2...a54cDC619
0.005 ETH
184056012023-10-22 11:40:23375 days ago1697974823
0x2Def5bd2...a54cDC619
0.072 ETH
184016472023-10-21 22:24:59375 days ago1697927099
0x2Def5bd2...a54cDC619
0.017 ETH
184014372023-10-21 21:42:35375 days ago1697924555
0x2Def5bd2...a54cDC619
0.175 ETH
183831542023-10-19 8:20:59378 days ago1697703659
0x2Def5bd2...a54cDC619
0.002 ETH
183807052023-10-19 0:06:59378 days ago1697674019
0x2Def5bd2...a54cDC619
0.019 ETH
183795312023-10-18 20:10:23378 days ago1697659823
0x2Def5bd2...a54cDC619
0.07 ETH
183792832023-10-18 19:20:35378 days ago1697656835
0x2Def5bd2...a54cDC619
0.15 ETH
183627562023-10-16 11:52:23381 days ago1697457143
0x2Def5bd2...a54cDC619
0.02 ETH
183557312023-10-15 12:19:11382 days ago1697372351
0x2Def5bd2...a54cDC619
0.05 ETH
183434912023-10-13 19:14:59383 days ago1697224499
0x2Def5bd2...a54cDC619
0.084 ETH
183414952023-10-13 12:32:35384 days ago1697200355
0x2Def5bd2...a54cDC619
0.084 ETH
183362942023-10-12 19:02:59384 days ago1697137379
0x2Def5bd2...a54cDC619
0.0653 ETH
183360532023-10-12 18:14:35384 days ago1697134475
0x2Def5bd2...a54cDC619
0.17 ETH
183348612023-10-12 14:13:35385 days ago1697120015
0x2Def5bd2...a54cDC619
0.03 ETH
183339892023-10-12 11:18:35385 days ago1697109515
0x2Def5bd2...a54cDC619
0.078 ETH
183338302023-10-12 10:46:35385 days ago1697107595
0x2Def5bd2...a54cDC619
0.05 ETH
183336492023-10-12 10:09:47385 days ago1697105387
0x2Def5bd2...a54cDC619
0.012 ETH
183334272023-10-12 9:25:11385 days ago1697102711
0x2Def5bd2...a54cDC619
0.001 ETH
183334032023-10-12 9:20:23385 days ago1697102423
0x2Def5bd2...a54cDC619
0.0001 ETH
183333862023-10-12 9:16:59385 days ago1697102219
0x2Def5bd2...a54cDC619
0.001 ETH
183262822023-10-11 9:23:35386 days ago1697016215
0x2Def5bd2...a54cDC619
0.001 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Presale

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-11
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

library SafeMath {
    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);
        }
    }

    function trySub(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

pragma solidity ^0.8.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

pragma solidity ^0.8.0;

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

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

pragma solidity ^0.8.0;

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

pragma solidity ^0.8.0;

contract OwnerWithdrawable is Ownable {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    receive() external payable {}

    fallback() external payable {}

    function withdraw(address token, uint256 amt) public onlyOwner {
        IERC20(token).safeTransfer(msg.sender, amt);
    }

    function withdrawAll(address token) public onlyOwner {
        uint256 amt = IERC20(token).balanceOf(address(this));
        withdraw(token, amt);
    }

    function withdrawCurrency(uint256 amt) public onlyOwner {
        payable(msg.sender).transfer(amt);
    }

    // function deposit(address token, uint256 amt) public onlyOwner {
    //     uint256 allowance = IERC20(token).allowance(msg.sender, address(this));
    //     require(allowance >= amt, "Check the token allowance");
    //     IERC20(token).transferFrom(owner(), address(this), amt);
    // }
}

pragma solidity ^0.8.0;

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    function functionCall(
        address target,
        bytes memory data
    ) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(
        address target,
        bytes memory data
    ) internal view returns (bytes memory) {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(
        address target,
        bytes memory data
    ) internal returns (bytes memory) {
        return
            functionDelegateCall(
                target,
                data,
                "Address: low-level delegate call failed"
            );
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

pragma solidity ^0.8.0;

library SafeERC20 {
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transfer.selector, to, value)
        );
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transferFrom.selector, from, to, value)
        );
    }

    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.approve.selector, spender, value)
        );
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender) + value;
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(
                token.approve.selector,
                spender,
                newAllowance
            )
        );
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        unchecked {
            uint256 oldAllowance = token.allowance(address(this), spender);
            require(
                oldAllowance >= value,
                "SafeERC20: decreased allowance below zero"
            );
            uint256 newAllowance = oldAllowance - value;
            _callOptionalReturn(
                token,
                abi.encodeWithSelector(
                    token.approve.selector,
                    spender,
                    newAllowance
                )
            );
        }
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(
            data,
            "SafeERC20: low-level call failed"
        );
        if (returndata.length > 0) {
            require(
                abi.decode(returndata, (bool)),
                "SafeERC20: ERC20 operation did not succeed"
            );
        }
    }
}

pragma solidity ^0.8.0;

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

pragma solidity ^0.8.0;

contract Presale is OwnerWithdrawable {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;
    using SafeERC20 for IERC20Metadata;

    uint256 public rate;

    address public saleToken;

    uint public saleTokenDec;

    uint256 public totalTokensforSale;

    mapping(address => bool) public payableTokens;

    mapping(address => uint256) public tokenPrices;

    bool public saleStatus;

    address[] public buyers;
    mapping(address => BuyerDetails) public buyersDetails;

    uint256 public totalBuyers;
    uint256 public totalTokensSold;

    struct BuyerDetails {
        uint amount;
        bool exists;
    }

    struct BuyerAmount {
        uint amount;
        address buyer;
    }

    constructor() {
        saleStatus = false;
    }

    modifier saleEnabled() {
        require(saleStatus == true, "Presale: is not enabled");
        _;
    }

    modifier saleStoped() {
        require(saleStatus == false, "Presale: is not stopped");
        _;
    }

    function setSaleToken(
        uint256 _decimals,
        uint256 _totalTokensforSale,
        uint256 _rate,
        bool _saleStatus
    ) external onlyOwner {
        require(_rate != 0);
        rate = _rate;
        saleStatus = _saleStatus;
        saleTokenDec = _decimals;
        totalTokensforSale = _totalTokensforSale;
    }

    function stopSale() external onlyOwner saleEnabled {
        saleStatus = false;
    }

    function resumeSale() external onlyOwner saleStoped {
        saleStatus = true;
    }

    function addPayableTokens(
        address[] memory _tokens,
        uint256[] memory _prices
    ) external onlyOwner {
        require(
            _tokens.length == _prices.length,
            "Presale: tokens & prices arrays length mismatch"
        );

        for (uint256 i = 0; i < _tokens.length; i++) {
            require(_prices[i] != 0);
            payableTokens[_tokens[i]] = true;
            tokenPrices[_tokens[i]] = _prices[i];
        }
    }

    function payableTokenStatus(
        address _token,
        bool _status
    ) external onlyOwner {
        require(payableTokens[_token] != _status);

        payableTokens[_token] = _status;
    }

    function updateTokenRate(
        address[] memory _tokens,
        uint256[] memory _prices,
        uint256 _rate
    ) external onlyOwner {
        require(
            _tokens.length == _prices.length,
            "Presale: tokens & prices arrays length mismatch"
        );

        if (_rate != 0) {
            rate = _rate;
        }

        for (uint256 i = 0; i < _tokens.length; i += 1) {
            require(payableTokens[_tokens[i]] == true);
            require(_prices[i] != 0);
            tokenPrices[_tokens[i]] = _prices[i];
        }
    }

    function getTokenAmount(
        address token,
        uint256 amount
    ) public view returns (uint256) {
        uint256 amtOut;
        if (token != address(0)) {
            require(payableTokens[token] == true, "Presale: Token not allowed");
            uint256 price = tokenPrices[token];
            amtOut = amount.mul(10 ** saleTokenDec).div(price);
        } else {
            amtOut = amount.mul(10 ** saleTokenDec).div(rate);
        }
        return amtOut;
    }

    function transferETH() private {
        payable(owner()).transfer(msg.value);
    }

    function transferToken(address _token, uint256 _amount) private {
        IERC20(_token).safeTransferFrom(
            msg.sender,
            owner(),
            _amount
        );
    }

    function buyToken(
        address _token,
        uint256 _amount
    ) external payable saleEnabled {
        uint256 saleTokenAmt = _token != address(0)
            ? getTokenAmount(_token, _amount)
            : getTokenAmount(address(0), msg.value);

        require(saleTokenAmt != 0, "Presale: Amount is 0");
        require(
            (totalTokensSold + saleTokenAmt) < totalTokensforSale,
            "Presale: Not enough tokens to be sale"
        );

        if (_token != address(0)) {
            transferToken(_token, _amount);
        } else {
            transferETH();
        }

        totalTokensSold += saleTokenAmt;

        if (!buyersDetails[msg.sender].exists) {
            buyers.push(msg.sender);
            buyersDetails[msg.sender].exists = true;
            totalBuyers += 1;
        }

        buyersDetails[msg.sender].amount += saleTokenAmt;
    }

    function buyersAmountList(
        uint _from,
        uint _to
    ) external view returns (BuyerAmount[] memory) {
        require(_from < _to, "Presale: _from should be less than _to");

        uint to = _to > totalBuyers ? totalBuyers : _to;
        uint from = _from > totalBuyers ? totalBuyers : _from;

        BuyerAmount[] memory buyersAmt = new BuyerAmount[](to - from);

        for (uint i = from; i < to; i += 1) {
            buyersAmt[i].amount = buyersDetails[buyers[i]].amount;
            buyersAmt[i].buyer = buyers[i];
        }

        return buyersAmt;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"}],"name":"addPayableTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"buyToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"buyers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"}],"name":"buyersAmountList","outputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct Presale.BuyerAmount[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"buyersDetails","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"payableTokenStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"payableTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resumeSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleTokenDec","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_decimals","type":"uint256"},{"internalType":"uint256","name":"_totalTokensforSale","type":"uint256"},{"internalType":"uint256","name":"_rate","type":"uint256"},{"internalType":"bool","name":"_saleStatus","type":"bool"}],"name":"setSaleToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensforSale","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":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"},{"internalType":"uint256","name":"_rate","type":"uint256"}],"name":"updateTokenRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"withdrawCurrency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5062000032620000266200005360201b60201c565b6200005b60201b60201c565b6000600760006101000a81548160ff0219169083151502179055506200011f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61329f806200012f6000396000f3fe6080604052600436106101855760003560e01c806380655eef116100d1578063e985e3671161008a578063f3fef3a311610064578063f3fef3a314610543578063f4739ee31461056c578063f9020e33146105aa578063fa09e630146105d55761018c565b8063e985e367146104b2578063f2aa8218146104dd578063f2fde38b1461051a5761018c565b806380655eef146103a2578063807ea425146103df5780638da5cb5b14610408578063ace1741c14610433578063c76a0f111461045e578063e36b0b371461049b5761018c565b80633abd01361161013e57806363b201171161011857806363b201171461031957806368f8fc10146103445780636bcedf9c14610360578063715018a61461038b5761018c565b80633abd01361461029c5780633c00a36c146102c75780635413c1c8146102f05761018c565b8063115ece4c1461018e578063204120bc146101cb57806329d429a8146102085780632c4e722e146102315780633115329e1461025c57806333e364cb146102855761018c565b3661018c57005b005b34801561019a57600080fd5b506101b560048036038101906101b09190612307565b6105fe565b6040516101c29190612cf7565b60405180910390f35b3480156101d757600080fd5b506101f260048036038101906101ed91906122a2565b610789565b6040516101ff9190612cf7565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906122cb565b6107a1565b005b34801561023d57600080fd5b506102466108d5565b6040516102539190612cf7565b60405180910390f35b34801561026857600080fd5b50610283600480360381019061027e91906123af565b6108db565b005b34801561029157600080fd5b5061029a610b80565b005b3480156102a857600080fd5b506102b1610c6f565b6040516102be9190612cf7565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190612457565b610c75565b005b3480156102fc57600080fd5b5061031760048036038101906103129190612343565b610d3b565b005b34801561032557600080fd5b5061032e610fc9565b60405161033b9190612cf7565b60405180910390f35b61035e60048036038101906103599190612307565b610fcf565b005b34801561036c57600080fd5b506103756112fd565b6040516103829190612cf7565b60405180910390f35b34801561039757600080fd5b506103a0611303565b005b3480156103ae57600080fd5b506103c960048036038101906103c491906122a2565b61138b565b6040516103d69190612b3a565b60405180910390f35b3480156103eb57600080fd5b50610406600480360381019061040191906124e5565b6113ab565b005b34801561041457600080fd5b5061041d61146a565b60405161042a9190612a9d565b60405180910390f35b34801561043f57600080fd5b50610448611493565b6040516104559190612cf7565b60405180910390f35b34801561046a57600080fd5b50610485600480360381019061048091906124a9565b611499565b6040516104929190612b18565b60405180910390f35b3480156104a757600080fd5b506104b061178f565b005b3480156104be57600080fd5b506104c761187e565b6040516104d49190612a9d565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff9190612457565b6118a4565b6040516105119190612a9d565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c91906122a2565b6118e3565b005b34801561054f57600080fd5b5061056a60048036038101906105659190612307565b6119db565b005b34801561057857600080fd5b50610593600480360381019061058e91906122a2565b611a86565b6040516105a1929190612d12565b60405180910390f35b3480156105b657600080fd5b506105bf611ab7565b6040516105cc9190612b3a565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f791906122a2565b611aca565b005b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146107475760011515600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf90612b97565b60405180910390fd5b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061073f81610731600354600a6107229190612f09565b87611be190919063ffffffff16565b611bf790919063ffffffff16565b91505061077f565b61077c60015461076e600354600a61075f9190612f09565b86611be190919063ffffffff16565b611bf790919063ffffffff16565b90505b8091505092915050565b60066020528060005260406000206000915090505481565b6107a9611c0d565b73ffffffffffffffffffffffffffffffffffffffff166107c761146a565b73ffffffffffffffffffffffffffffffffffffffff161461081d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081490612c77565b60405180910390fd5b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561087a57600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60015481565b6108e3611c0d565b73ffffffffffffffffffffffffffffffffffffffff1661090161146a565b73ffffffffffffffffffffffffffffffffffffffff1614610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90612c77565b60405180910390fd5b815183511461099b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099290612c17565b60405180910390fd5b600081146109ab57806001819055505b60005b8351811015610b7a5760011515600560008684815181106109f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610a5457600080fd5b6000838281518110610a8f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610aa257600080fd5b828181518110610adb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160066000868481518110610b20577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600181610b739190612e2f565b90506109ae565b50505050565b610b88611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610ba661146a565b73ffffffffffffffffffffffffffffffffffffffff1614610bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf390612c77565b60405180910390fd5b60001515600760009054906101000a900460ff16151514610c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4990612bd7565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550565b600a5481565b610c7d611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610c9b61146a565b73ffffffffffffffffffffffffffffffffffffffff1614610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce890612c77565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d37573d6000803e3d6000fd5b5050565b610d43611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610d6161146a565b73ffffffffffffffffffffffffffffffffffffffff1614610db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dae90612c77565b60405180910390fd5b8051825114610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df290612c17565b60405180910390fd5b60005b8251811015610fc4576000828281518110610e42577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610e5557600080fd5b600160056000858481518110610e94577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818181518110610f26577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160066000858481518110610f6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080610fbc90613130565b915050610dfe565b505050565b600b5481565b60011515600760009054906101000a900460ff16151514611025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101c90612cb7565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561106b576110666000346105fe565b611076565b61107583836105fe565b5b905060008114156110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b390612c37565b60405180910390fd5b60045481600b546110cd9190612e2f565b1061110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490612c57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146111505761114b8383611c15565b611159565b611158611c4d565b5b80600b600082825461116b9190612e2f565b92505081905550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1661129f576008339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001600a60008282546112979190612e2f565b925050819055505b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546112f19190612e2f565b92505081905550505050565b60045481565b61130b611c0d565b73ffffffffffffffffffffffffffffffffffffffff1661132961146a565b73ffffffffffffffffffffffffffffffffffffffff161461137f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137690612c77565b60405180910390fd5b6113896000611c9d565b565b60056020528060005260406000206000915054906101000a900460ff1681565b6113b3611c0d565b73ffffffffffffffffffffffffffffffffffffffff166113d161146a565b73ffffffffffffffffffffffffffffffffffffffff1614611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e90612c77565b60405180910390fd5b600082141561143557600080fd5b8160018190555080600760006101000a81548160ff021916908315150217905550836003819055508260048190555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b60608183106114dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d490612bb7565b60405180910390fd5b6000600a5483116114ee57826114f2565b600a545b90506000600a5485116115055784611509565b600a545b9050600081836115199190613081565b67ffffffffffffffff811115611558577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561159157816020015b61157e6120dd565b8152602001906001900390816115765790505b50905060008290505b838110156117825760096000600883815481106115e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154828281518110611682577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516000018181525050600881815481106116cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110611730577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060018161177b9190612e2f565b905061159a565b5080935050505092915050565b611797611c0d565b73ffffffffffffffffffffffffffffffffffffffff166117b561146a565b73ffffffffffffffffffffffffffffffffffffffff161461180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180290612c77565b60405180910390fd5b60011515600760009054906101000a900460ff16151514611861576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185890612cb7565b60405180910390fd5b6000600760006101000a81548160ff021916908315150217905550565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600881815481106118b457600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118eb611c0d565b73ffffffffffffffffffffffffffffffffffffffff1661190961146a565b73ffffffffffffffffffffffffffffffffffffffff161461195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690612c77565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c690612b77565b60405180910390fd5b6119d881611c9d565b50565b6119e3611c0d565b73ffffffffffffffffffffffffffffffffffffffff16611a0161146a565b73ffffffffffffffffffffffffffffffffffffffff1614611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e90612c77565b60405180910390fd5b611a8233828473ffffffffffffffffffffffffffffffffffffffff16611d619092919063ffffffff16565b5050565b60096020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16905082565b600760009054906101000a900460ff1681565b611ad2611c0d565b73ffffffffffffffffffffffffffffffffffffffff16611af061146a565b73ffffffffffffffffffffffffffffffffffffffff1614611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d90612c77565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b819190612a9d565b60206040518083038186803b158015611b9957600080fd5b505afa158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd19190612480565b9050611bdd82826119db565b5050565b60008183611bef9190613027565b905092915050565b60008183611c059190612e85565b905092915050565b600033905090565b611c4933611c2161146a565b838573ffffffffffffffffffffffffffffffffffffffff16611de7909392919063ffffffff16565b5050565b611c5561146a565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611c9a573d6000803e3d6000fd5b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611de28363a9059cbb60e01b8484604051602401611d80929190612aef565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e70565b505050565b611e6a846323b872dd60e01b858585604051602401611e0893929190612ab8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e70565b50505050565b6000611ed2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611f379092919063ffffffff16565b9050600081511115611f325780806020019051810190611ef2919061242e565b611f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2890612cd7565b60405180910390fd5b5b505050565b6060611f468484600085611f4f565b90509392505050565b606082471015611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b90612bf7565b60405180910390fd5b611f9d85612063565b611fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd390612c97565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516120059190612a86565b60006040518083038185875af1925050503d8060008114612042576040519150601f19603f3d011682016040523d82523d6000602084013e612047565b606091505b5091509150612057828286612076565b92505050949350505050565b600080823b905060008111915050919050565b60608315612086578290506120d6565b6000835111156120995782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd9190612b55565b60405180910390fd5b9392505050565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600061212061211b84612d6c565b612d3b565b9050808382526020820190508285602086028201111561213f57600080fd5b60005b8581101561216f578161215588826121e5565b845260208401935060208301925050600181019050612142565b5050509392505050565b600061218c61218784612d98565b612d3b565b905080838252602082019050828560208602820111156121ab57600080fd5b60005b858110156121db57816121c18882612278565b8452602084019350602083019250506001810190506121ae565b5050509392505050565b6000813590506121f481613224565b92915050565b600082601f83011261220b57600080fd5b813561221b84826020860161210d565b91505092915050565b600082601f83011261223557600080fd5b8135612245848260208601612179565b91505092915050565b60008135905061225d8161323b565b92915050565b6000815190506122728161323b565b92915050565b60008135905061228781613252565b92915050565b60008151905061229c81613252565b92915050565b6000602082840312156122b457600080fd5b60006122c2848285016121e5565b91505092915050565b600080604083850312156122de57600080fd5b60006122ec858286016121e5565b92505060206122fd8582860161224e565b9150509250929050565b6000806040838503121561231a57600080fd5b6000612328858286016121e5565b925050602061233985828601612278565b9150509250929050565b6000806040838503121561235657600080fd5b600083013567ffffffffffffffff81111561237057600080fd5b61237c858286016121fa565b925050602083013567ffffffffffffffff81111561239957600080fd5b6123a585828601612224565b9150509250929050565b6000806000606084860312156123c457600080fd5b600084013567ffffffffffffffff8111156123de57600080fd5b6123ea868287016121fa565b935050602084013567ffffffffffffffff81111561240757600080fd5b61241386828701612224565b925050604061242486828701612278565b9150509250925092565b60006020828403121561244057600080fd5b600061244e84828501612263565b91505092915050565b60006020828403121561246957600080fd5b600061247784828501612278565b91505092915050565b60006020828403121561249257600080fd5b60006124a08482850161228d565b91505092915050565b600080604083850312156124bc57600080fd5b60006124ca85828601612278565b92505060206124db85828601612278565b9150509250929050565b600080600080608085870312156124fb57600080fd5b600061250987828801612278565b945050602061251a87828801612278565b935050604061252b87828801612278565b925050606061253c8782880161224e565b91505092959194509250565b60006125548383612a39565b60408301905092915050565b612569816130b5565b82525050565b612578816130b5565b82525050565b600061258982612dd4565b6125938185612e02565b935061259e83612dc4565b8060005b838110156125cf5781516125b68882612548565b97506125c183612df5565b9250506001810190506125a2565b5085935050505092915050565b6125e5816130c7565b82525050565b60006125f682612ddf565b6126008185612e13565b93506126108185602086016130fd565b80840191505092915050565b600061262782612dea565b6126318185612e1e565b93506126418185602086016130fd565b61264a81613206565b840191505092915050565b6000612662602683612e1e565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006126c8601a83612e1e565b91507f50726573616c653a20546f6b656e206e6f7420616c6c6f7765640000000000006000830152602082019050919050565b6000612708602683612e1e565b91507f50726573616c653a205f66726f6d2073686f756c64206265206c65737320746860008301527f616e205f746f00000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061276e601783612e1e565b91507f50726573616c653a206973206e6f742073746f707065640000000000000000006000830152602082019050919050565b60006127ae602683612e1e565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612814602f83612e1e565b91507f50726573616c653a20746f6b656e73202620707269636573206172726179732060008301527f6c656e677468206d69736d6174636800000000000000000000000000000000006020830152604082019050919050565b600061287a601483612e1e565b91507f50726573616c653a20416d6f756e7420697320300000000000000000000000006000830152602082019050919050565b60006128ba602583612e1e565b91507f50726573616c653a204e6f7420656e6f75676820746f6b656e7320746f20626560008301527f2073616c650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612920602083612e1e565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612960601d83612e1e565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b60006129a0601783612e1e565b91507f50726573616c653a206973206e6f7420656e61626c65640000000000000000006000830152602082019050919050565b60006129e0602a83612e1e565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b604082016000820151612a4f6000850182612a68565b506020820151612a626020850182612560565b50505050565b612a71816130f3565b82525050565b612a80816130f3565b82525050565b6000612a9282846125eb565b915081905092915050565b6000602082019050612ab2600083018461256f565b92915050565b6000606082019050612acd600083018661256f565b612ada602083018561256f565b612ae76040830184612a77565b949350505050565b6000604082019050612b04600083018561256f565b612b116020830184612a77565b9392505050565b60006020820190508181036000830152612b32818461257e565b905092915050565b6000602082019050612b4f60008301846125dc565b92915050565b60006020820190508181036000830152612b6f818461261c565b905092915050565b60006020820190508181036000830152612b9081612655565b9050919050565b60006020820190508181036000830152612bb0816126bb565b9050919050565b60006020820190508181036000830152612bd0816126fb565b9050919050565b60006020820190508181036000830152612bf081612761565b9050919050565b60006020820190508181036000830152612c10816127a1565b9050919050565b60006020820190508181036000830152612c3081612807565b9050919050565b60006020820190508181036000830152612c508161286d565b9050919050565b60006020820190508181036000830152612c70816128ad565b9050919050565b60006020820190508181036000830152612c9081612913565b9050919050565b60006020820190508181036000830152612cb081612953565b9050919050565b60006020820190508181036000830152612cd081612993565b9050919050565b60006020820190508181036000830152612cf0816129d3565b9050919050565b6000602082019050612d0c6000830184612a77565b92915050565b6000604082019050612d276000830185612a77565b612d3460208301846125dc565b9392505050565b6000604051905081810181811067ffffffffffffffff82111715612d6257612d616131d7565b5b8060405250919050565b600067ffffffffffffffff821115612d8757612d866131d7565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612db357612db26131d7565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612e3a826130f3565b9150612e45836130f3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e7a57612e79613179565b5b828201905092915050565b6000612e90826130f3565b9150612e9b836130f3565b925082612eab57612eaa6131a8565b5b828204905092915050565b6000808291508390505b6001851115612f0057808604811115612edc57612edb613179565b5b6001851615612eeb5780820291505b8081029050612ef985613217565b9450612ec0565b94509492505050565b6000612f14826130f3565b9150612f1f836130f3565b9250612f4c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f54565b905092915050565b600082612f645760019050613020565b81612f725760009050613020565b8160018114612f885760028114612f9257612fc1565b6001915050613020565b60ff841115612fa457612fa3613179565b5b8360020a915084821115612fbb57612fba613179565b5b50613020565b5060208310610133831016604e8410600b8410161715612ff65782820a905083811115612ff157612ff0613179565b5b613020565b6130038484846001612eb6565b9250905081840481111561301a57613019613179565b5b81810290505b9392505050565b6000613032826130f3565b915061303d836130f3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561307657613075613179565b5b828202905092915050565b600061308c826130f3565b9150613097836130f3565b9250828210156130aa576130a9613179565b5b828203905092915050565b60006130c0826130d3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561311b578082015181840152602081019050613100565b8381111561312a576000848401525b50505050565b600061313b826130f3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561316e5761316d613179565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b61322d816130b5565b811461323857600080fd5b50565b613244816130c7565b811461324f57600080fd5b50565b61325b816130f3565b811461326657600080fd5b5056fea26469706673582212205034f30d91c1d82585b273b6817ccd3f01bc8689be010534c4239986ab7a4fe564736f6c63430008000033

Deployed Bytecode

0x6080604052600436106101855760003560e01c806380655eef116100d1578063e985e3671161008a578063f3fef3a311610064578063f3fef3a314610543578063f4739ee31461056c578063f9020e33146105aa578063fa09e630146105d55761018c565b8063e985e367146104b2578063f2aa8218146104dd578063f2fde38b1461051a5761018c565b806380655eef146103a2578063807ea425146103df5780638da5cb5b14610408578063ace1741c14610433578063c76a0f111461045e578063e36b0b371461049b5761018c565b80633abd01361161013e57806363b201171161011857806363b201171461031957806368f8fc10146103445780636bcedf9c14610360578063715018a61461038b5761018c565b80633abd01361461029c5780633c00a36c146102c75780635413c1c8146102f05761018c565b8063115ece4c1461018e578063204120bc146101cb57806329d429a8146102085780632c4e722e146102315780633115329e1461025c57806333e364cb146102855761018c565b3661018c57005b005b34801561019a57600080fd5b506101b560048036038101906101b09190612307565b6105fe565b6040516101c29190612cf7565b60405180910390f35b3480156101d757600080fd5b506101f260048036038101906101ed91906122a2565b610789565b6040516101ff9190612cf7565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906122cb565b6107a1565b005b34801561023d57600080fd5b506102466108d5565b6040516102539190612cf7565b60405180910390f35b34801561026857600080fd5b50610283600480360381019061027e91906123af565b6108db565b005b34801561029157600080fd5b5061029a610b80565b005b3480156102a857600080fd5b506102b1610c6f565b6040516102be9190612cf7565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190612457565b610c75565b005b3480156102fc57600080fd5b5061031760048036038101906103129190612343565b610d3b565b005b34801561032557600080fd5b5061032e610fc9565b60405161033b9190612cf7565b60405180910390f35b61035e60048036038101906103599190612307565b610fcf565b005b34801561036c57600080fd5b506103756112fd565b6040516103829190612cf7565b60405180910390f35b34801561039757600080fd5b506103a0611303565b005b3480156103ae57600080fd5b506103c960048036038101906103c491906122a2565b61138b565b6040516103d69190612b3a565b60405180910390f35b3480156103eb57600080fd5b50610406600480360381019061040191906124e5565b6113ab565b005b34801561041457600080fd5b5061041d61146a565b60405161042a9190612a9d565b60405180910390f35b34801561043f57600080fd5b50610448611493565b6040516104559190612cf7565b60405180910390f35b34801561046a57600080fd5b50610485600480360381019061048091906124a9565b611499565b6040516104929190612b18565b60405180910390f35b3480156104a757600080fd5b506104b061178f565b005b3480156104be57600080fd5b506104c761187e565b6040516104d49190612a9d565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff9190612457565b6118a4565b6040516105119190612a9d565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c91906122a2565b6118e3565b005b34801561054f57600080fd5b5061056a60048036038101906105659190612307565b6119db565b005b34801561057857600080fd5b50610593600480360381019061058e91906122a2565b611a86565b6040516105a1929190612d12565b60405180910390f35b3480156105b657600080fd5b506105bf611ab7565b6040516105cc9190612b3a565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f791906122a2565b611aca565b005b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146107475760011515600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf90612b97565b60405180910390fd5b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061073f81610731600354600a6107229190612f09565b87611be190919063ffffffff16565b611bf790919063ffffffff16565b91505061077f565b61077c60015461076e600354600a61075f9190612f09565b86611be190919063ffffffff16565b611bf790919063ffffffff16565b90505b8091505092915050565b60066020528060005260406000206000915090505481565b6107a9611c0d565b73ffffffffffffffffffffffffffffffffffffffff166107c761146a565b73ffffffffffffffffffffffffffffffffffffffff161461081d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081490612c77565b60405180910390fd5b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561087a57600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60015481565b6108e3611c0d565b73ffffffffffffffffffffffffffffffffffffffff1661090161146a565b73ffffffffffffffffffffffffffffffffffffffff1614610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90612c77565b60405180910390fd5b815183511461099b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099290612c17565b60405180910390fd5b600081146109ab57806001819055505b60005b8351811015610b7a5760011515600560008684815181106109f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610a5457600080fd5b6000838281518110610a8f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610aa257600080fd5b828181518110610adb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160066000868481518110610b20577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600181610b739190612e2f565b90506109ae565b50505050565b610b88611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610ba661146a565b73ffffffffffffffffffffffffffffffffffffffff1614610bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf390612c77565b60405180910390fd5b60001515600760009054906101000a900460ff16151514610c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4990612bd7565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550565b600a5481565b610c7d611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610c9b61146a565b73ffffffffffffffffffffffffffffffffffffffff1614610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce890612c77565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d37573d6000803e3d6000fd5b5050565b610d43611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610d6161146a565b73ffffffffffffffffffffffffffffffffffffffff1614610db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dae90612c77565b60405180910390fd5b8051825114610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df290612c17565b60405180910390fd5b60005b8251811015610fc4576000828281518110610e42577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610e5557600080fd5b600160056000858481518110610e94577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818181518110610f26577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160066000858481518110610f6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080610fbc90613130565b915050610dfe565b505050565b600b5481565b60011515600760009054906101000a900460ff16151514611025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101c90612cb7565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561106b576110666000346105fe565b611076565b61107583836105fe565b5b905060008114156110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b390612c37565b60405180910390fd5b60045481600b546110cd9190612e2f565b1061110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490612c57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146111505761114b8383611c15565b611159565b611158611c4d565b5b80600b600082825461116b9190612e2f565b92505081905550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1661129f576008339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001600a60008282546112979190612e2f565b925050819055505b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546112f19190612e2f565b92505081905550505050565b60045481565b61130b611c0d565b73ffffffffffffffffffffffffffffffffffffffff1661132961146a565b73ffffffffffffffffffffffffffffffffffffffff161461137f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137690612c77565b60405180910390fd5b6113896000611c9d565b565b60056020528060005260406000206000915054906101000a900460ff1681565b6113b3611c0d565b73ffffffffffffffffffffffffffffffffffffffff166113d161146a565b73ffffffffffffffffffffffffffffffffffffffff1614611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e90612c77565b60405180910390fd5b600082141561143557600080fd5b8160018190555080600760006101000a81548160ff021916908315150217905550836003819055508260048190555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b60608183106114dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d490612bb7565b60405180910390fd5b6000600a5483116114ee57826114f2565b600a545b90506000600a5485116115055784611509565b600a545b9050600081836115199190613081565b67ffffffffffffffff811115611558577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561159157816020015b61157e6120dd565b8152602001906001900390816115765790505b50905060008290505b838110156117825760096000600883815481106115e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154828281518110611682577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516000018181525050600881815481106116cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110611730577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060018161177b9190612e2f565b905061159a565b5080935050505092915050565b611797611c0d565b73ffffffffffffffffffffffffffffffffffffffff166117b561146a565b73ffffffffffffffffffffffffffffffffffffffff161461180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180290612c77565b60405180910390fd5b60011515600760009054906101000a900460ff16151514611861576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185890612cb7565b60405180910390fd5b6000600760006101000a81548160ff021916908315150217905550565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600881815481106118b457600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118eb611c0d565b73ffffffffffffffffffffffffffffffffffffffff1661190961146a565b73ffffffffffffffffffffffffffffffffffffffff161461195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690612c77565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c690612b77565b60405180910390fd5b6119d881611c9d565b50565b6119e3611c0d565b73ffffffffffffffffffffffffffffffffffffffff16611a0161146a565b73ffffffffffffffffffffffffffffffffffffffff1614611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e90612c77565b60405180910390fd5b611a8233828473ffffffffffffffffffffffffffffffffffffffff16611d619092919063ffffffff16565b5050565b60096020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16905082565b600760009054906101000a900460ff1681565b611ad2611c0d565b73ffffffffffffffffffffffffffffffffffffffff16611af061146a565b73ffffffffffffffffffffffffffffffffffffffff1614611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d90612c77565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b819190612a9d565b60206040518083038186803b158015611b9957600080fd5b505afa158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd19190612480565b9050611bdd82826119db565b5050565b60008183611bef9190613027565b905092915050565b60008183611c059190612e85565b905092915050565b600033905090565b611c4933611c2161146a565b838573ffffffffffffffffffffffffffffffffffffffff16611de7909392919063ffffffff16565b5050565b611c5561146a565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611c9a573d6000803e3d6000fd5b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611de28363a9059cbb60e01b8484604051602401611d80929190612aef565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e70565b505050565b611e6a846323b872dd60e01b858585604051602401611e0893929190612ab8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e70565b50505050565b6000611ed2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611f379092919063ffffffff16565b9050600081511115611f325780806020019051810190611ef2919061242e565b611f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2890612cd7565b60405180910390fd5b5b505050565b6060611f468484600085611f4f565b90509392505050565b606082471015611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b90612bf7565b60405180910390fd5b611f9d85612063565b611fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd390612c97565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516120059190612a86565b60006040518083038185875af1925050503d8060008114612042576040519150601f19603f3d011682016040523d82523d6000602084013e612047565b606091505b5091509150612057828286612076565b92505050949350505050565b600080823b905060008111915050919050565b60608315612086578290506120d6565b6000835111156120995782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd9190612b55565b60405180910390fd5b9392505050565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600061212061211b84612d6c565b612d3b565b9050808382526020820190508285602086028201111561213f57600080fd5b60005b8581101561216f578161215588826121e5565b845260208401935060208301925050600181019050612142565b5050509392505050565b600061218c61218784612d98565b612d3b565b905080838252602082019050828560208602820111156121ab57600080fd5b60005b858110156121db57816121c18882612278565b8452602084019350602083019250506001810190506121ae565b5050509392505050565b6000813590506121f481613224565b92915050565b600082601f83011261220b57600080fd5b813561221b84826020860161210d565b91505092915050565b600082601f83011261223557600080fd5b8135612245848260208601612179565b91505092915050565b60008135905061225d8161323b565b92915050565b6000815190506122728161323b565b92915050565b60008135905061228781613252565b92915050565b60008151905061229c81613252565b92915050565b6000602082840312156122b457600080fd5b60006122c2848285016121e5565b91505092915050565b600080604083850312156122de57600080fd5b60006122ec858286016121e5565b92505060206122fd8582860161224e565b9150509250929050565b6000806040838503121561231a57600080fd5b6000612328858286016121e5565b925050602061233985828601612278565b9150509250929050565b6000806040838503121561235657600080fd5b600083013567ffffffffffffffff81111561237057600080fd5b61237c858286016121fa565b925050602083013567ffffffffffffffff81111561239957600080fd5b6123a585828601612224565b9150509250929050565b6000806000606084860312156123c457600080fd5b600084013567ffffffffffffffff8111156123de57600080fd5b6123ea868287016121fa565b935050602084013567ffffffffffffffff81111561240757600080fd5b61241386828701612224565b925050604061242486828701612278565b9150509250925092565b60006020828403121561244057600080fd5b600061244e84828501612263565b91505092915050565b60006020828403121561246957600080fd5b600061247784828501612278565b91505092915050565b60006020828403121561249257600080fd5b60006124a08482850161228d565b91505092915050565b600080604083850312156124bc57600080fd5b60006124ca85828601612278565b92505060206124db85828601612278565b9150509250929050565b600080600080608085870312156124fb57600080fd5b600061250987828801612278565b945050602061251a87828801612278565b935050604061252b87828801612278565b925050606061253c8782880161224e565b91505092959194509250565b60006125548383612a39565b60408301905092915050565b612569816130b5565b82525050565b612578816130b5565b82525050565b600061258982612dd4565b6125938185612e02565b935061259e83612dc4565b8060005b838110156125cf5781516125b68882612548565b97506125c183612df5565b9250506001810190506125a2565b5085935050505092915050565b6125e5816130c7565b82525050565b60006125f682612ddf565b6126008185612e13565b93506126108185602086016130fd565b80840191505092915050565b600061262782612dea565b6126318185612e1e565b93506126418185602086016130fd565b61264a81613206565b840191505092915050565b6000612662602683612e1e565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006126c8601a83612e1e565b91507f50726573616c653a20546f6b656e206e6f7420616c6c6f7765640000000000006000830152602082019050919050565b6000612708602683612e1e565b91507f50726573616c653a205f66726f6d2073686f756c64206265206c65737320746860008301527f616e205f746f00000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061276e601783612e1e565b91507f50726573616c653a206973206e6f742073746f707065640000000000000000006000830152602082019050919050565b60006127ae602683612e1e565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612814602f83612e1e565b91507f50726573616c653a20746f6b656e73202620707269636573206172726179732060008301527f6c656e677468206d69736d6174636800000000000000000000000000000000006020830152604082019050919050565b600061287a601483612e1e565b91507f50726573616c653a20416d6f756e7420697320300000000000000000000000006000830152602082019050919050565b60006128ba602583612e1e565b91507f50726573616c653a204e6f7420656e6f75676820746f6b656e7320746f20626560008301527f2073616c650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612920602083612e1e565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612960601d83612e1e565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b60006129a0601783612e1e565b91507f50726573616c653a206973206e6f7420656e61626c65640000000000000000006000830152602082019050919050565b60006129e0602a83612e1e565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b604082016000820151612a4f6000850182612a68565b506020820151612a626020850182612560565b50505050565b612a71816130f3565b82525050565b612a80816130f3565b82525050565b6000612a9282846125eb565b915081905092915050565b6000602082019050612ab2600083018461256f565b92915050565b6000606082019050612acd600083018661256f565b612ada602083018561256f565b612ae76040830184612a77565b949350505050565b6000604082019050612b04600083018561256f565b612b116020830184612a77565b9392505050565b60006020820190508181036000830152612b32818461257e565b905092915050565b6000602082019050612b4f60008301846125dc565b92915050565b60006020820190508181036000830152612b6f818461261c565b905092915050565b60006020820190508181036000830152612b9081612655565b9050919050565b60006020820190508181036000830152612bb0816126bb565b9050919050565b60006020820190508181036000830152612bd0816126fb565b9050919050565b60006020820190508181036000830152612bf081612761565b9050919050565b60006020820190508181036000830152612c10816127a1565b9050919050565b60006020820190508181036000830152612c3081612807565b9050919050565b60006020820190508181036000830152612c508161286d565b9050919050565b60006020820190508181036000830152612c70816128ad565b9050919050565b60006020820190508181036000830152612c9081612913565b9050919050565b60006020820190508181036000830152612cb081612953565b9050919050565b60006020820190508181036000830152612cd081612993565b9050919050565b60006020820190508181036000830152612cf0816129d3565b9050919050565b6000602082019050612d0c6000830184612a77565b92915050565b6000604082019050612d276000830185612a77565b612d3460208301846125dc565b9392505050565b6000604051905081810181811067ffffffffffffffff82111715612d6257612d616131d7565b5b8060405250919050565b600067ffffffffffffffff821115612d8757612d866131d7565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612db357612db26131d7565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612e3a826130f3565b9150612e45836130f3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e7a57612e79613179565b5b828201905092915050565b6000612e90826130f3565b9150612e9b836130f3565b925082612eab57612eaa6131a8565b5b828204905092915050565b6000808291508390505b6001851115612f0057808604811115612edc57612edb613179565b5b6001851615612eeb5780820291505b8081029050612ef985613217565b9450612ec0565b94509492505050565b6000612f14826130f3565b9150612f1f836130f3565b9250612f4c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f54565b905092915050565b600082612f645760019050613020565b81612f725760009050613020565b8160018114612f885760028114612f9257612fc1565b6001915050613020565b60ff841115612fa457612fa3613179565b5b8360020a915084821115612fbb57612fba613179565b5b50613020565b5060208310610133831016604e8410600b8410161715612ff65782820a905083811115612ff157612ff0613179565b5b613020565b6130038484846001612eb6565b9250905081840481111561301a57613019613179565b5b81810290505b9392505050565b6000613032826130f3565b915061303d836130f3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561307657613075613179565b5b828202905092915050565b600061308c826130f3565b9150613097836130f3565b9250828210156130aa576130a9613179565b5b828203905092915050565b60006130c0826130d3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561311b578082015181840152602081019050613100565b8381111561312a576000848401525b50505050565b600061313b826130f3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561316e5761316d613179565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b61322d816130b5565b811461323857600080fd5b50565b613244816130c7565b811461324f57600080fd5b50565b61325b816130f3565b811461326657600080fd5b5056fea26469706673582212205034f30d91c1d82585b273b6817ccd3f01bc8689be010534c4239986ab7a4fe564736f6c63430008000033

Deployed Bytecode Sourcemap

12597:5197:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15475:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12941:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14674:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12751:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14888:579;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14094:88;;;;;;;;;;;;;:::i;:::-;;13119:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5289:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14190:476;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13152:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16271:913;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12845:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4223:103;;;;;;;;;;;;;:::i;:::-;;12887:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13643:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4000:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12812:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17192:599;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13998:88;;;;;;;;;;;;;:::i;:::-;;12779:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13027:23;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4334:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4993:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13057:53;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;12996:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5126:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15475:492;15576:7;15596:14;15642:1;15625:19;;:5;:19;;;15621:315;;15693:4;15669:28;;:13;:20;15683:5;15669:20;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;15661:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15743:13;15759:11;:18;15771:5;15759:18;;;;;;;;;;;;;;;;15743:34;;15801:41;15836:5;15801:30;15818:12;;15812:2;:18;;;;:::i;:::-;15801:6;:10;;:30;;;;:::i;:::-;:34;;:41;;;;:::i;:::-;15792:50;;15621:315;;;;15884:40;15919:4;;15884:30;15901:12;;15895:2;:18;;;;:::i;:::-;15884:6;:10;;:30;;;;:::i;:::-;:34;;:40;;;;:::i;:::-;15875:49;;15621:315;15953:6;15946:13;;;15475:492;;;;:::o;12941:46::-;;;;;;;;;;;;;;;;;:::o;14674:206::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14820:7:::1;14795:32;;:13;:21;14809:6;14795:21;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;14787:41;;;::::0;::::1;;14865:7;14841:13;:21;14855:6;14841:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;14674:206:::0;;:::o;12751:19::-;;;;:::o;14888:579::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15084:7:::1;:14;15066:7;:14;:32;15044:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;15199:1;15190:5;:10;15186:55;;15224:5;15217:4;:12;;;;15186:55;15258:9;15253:207;15277:7;:14;15273:1;:18;15253:207;;;15353:4;15324:33;;:13;:25;15338:7;15346:1;15338:10;;;;;;;;;;;;;;;;;;;;;;15324:25;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;15316:42;;;::::0;::::1;;15395:1;15381:7;15389:1;15381:10;;;;;;;;;;;;;;;;;;;;;;:15;;15373:24;;;::::0;::::1;;15438:7;15446:1;15438:10;;;;;;;;;;;;;;;;;;;;;;15412:11;:23;15424:7;15432:1;15424:10;;;;;;;;;;;;;;;;;;;;;;15412:23;;;;;;;;;;;;;;;:36;;;;15298:1;15293:6;;;;;:::i;:::-;;;15253:207;;;;14888:579:::0;;;:::o;14094:88::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13582:5:::1;13568:19;;:10;;;;;;;;;;;:19;;;13560:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;14170:4:::2;14157:10;;:17;;;;;;;;;;;;;;;;;;14094:88::o:0;13119:26::-;;;;:::o;5289:108::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5364:10:::1;5356:28;;:33;5385:3;5356:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;5289:108:::0;:::o;14190:476::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14363:7:::1;:14;14345:7;:14;:32;14323:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;14470:9;14465:194;14489:7;:14;14485:1;:18;14465:194;;;14547:1;14533:7;14541:1;14533:10;;;;;;;;;;;;;;;;;;;;;;:15;;14525:24;;;::::0;::::1;;14592:4;14564:13;:25;14578:7;14586:1;14578:10;;;;;;;;;;;;;;;;;;;;;;14564:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14637:7;14645:1;14637:10;;;;;;;;;;;;;;;;;;;;;;14611:11;:23;14623:7;14631:1;14623:10;;;;;;;;;;;;;;;;;;;;;;14611:23;;;;;;;;;;;;;;;:36;;;;14505:3;;;;;:::i;:::-;;;;14465:194;;;;14190:476:::0;;:::o;13152:30::-;;;;:::o;16271:913::-;13467:4;13453:18;;:10;;;;;;;;;;;:18;;;13445:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;16387:20:::1;16428:1:::0;16410:20:::1;;:6;:20;;;;:120;;16493:37;16516:1;16520:9;16493:14;:37::i;:::-;16410:120;;;16446:31;16461:6;16469:7;16446:14;:31::i;:::-;16410:120;16387:143;;16567:1;16551:12;:17;;16543:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;16661:18;;16645:12;16627:15;;:30;;;;:::i;:::-;16626:53;16604:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;16779:1;16761:20;;:6;:20;;;16757:129;;16798:30;16812:6;16820:7;16798:13;:30::i;:::-;16757:129;;;16861:13;:11;:13::i;:::-;16757:129;16917:12;16898:15;;:31;;;;;;;:::i;:::-;;;;;;;;16947:13;:25;16961:10;16947:25;;;;;;;;;;;;;;;:32;;;;;;;;;;;;16942:174;;16996:6;17008:10;16996:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17069:4;17034:13;:25;17048:10;17034:25;;;;;;;;;;;;;;;:32;;;:39;;;;;;;;;;;;;;;;;;17103:1;17088:11;;:16;;;;;;;:::i;:::-;;;;;;;;16942:174;17164:12;17128:13;:25;17142:10;17128:25;;;;;;;;;;;;;;;:32;;;:48;;;;;;;:::i;:::-;;;;;;;;13510:1;16271:913:::0;;:::o;12845:33::-;;;;:::o;4223:103::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4288:30:::1;4315:1;4288:18;:30::i;:::-;4223:103::o:0;12887:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;13643:347::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13836:1:::1;13827:5;:10;;13819:19;;;::::0;::::1;;13856:5;13849:4;:12;;;;13885:11;13872:10;;:24;;;;;;;;;;;;;;;;;;13922:9;13907:12;:24;;;;13963:19;13942:18;:40;;;;13643:347:::0;;;;:::o;4000:87::-;4046:7;4073:6;;;;;;;;;;;4066:13;;4000:87;:::o;12812:24::-;;;;:::o;17192:599::-;17288:20;17337:3;17329:5;:11;17321:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;17396:7;17412:11;;17406:3;:17;:37;;17440:3;17406:37;;;17426:11;;17406:37;17396:47;;17454:9;17474:11;;17466:5;:19;:41;;17502:5;17466:41;;;17488:11;;17466:41;17454:53;;17520:30;17576:4;17571:2;:9;;;;:::i;:::-;17553:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;17520:61;;17599:6;17608:4;17599:13;;17594:161;17618:2;17614:1;:6;17594:161;;;17667:13;:24;17681:6;17688:1;17681:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17667:24;;;;;;;;;;;;;;;:31;;;17645:9;17655:1;17645:12;;;;;;;;;;;;;;;;;;;;;;:19;;:53;;;;;17734:6;17741:1;17734:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17713;17723:1;17713:12;;;;;;;;;;;;;;;;;;;;;;:18;;:30;;;;;;;;;;;17627:1;17622:6;;;;;:::i;:::-;;;17594:161;;;;17774:9;17767:16;;;;;17192:599;;;;:::o;13998:88::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13467:4:::1;13453:18;;:10;;;;;;;;;;;:18;;;13445:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;14073:5:::2;14060:10;;:18;;;;;;;;;;;;;;;;;;13998:88::o:0;12779:24::-;;;;;;;;;;;;;:::o;13027:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4334:238::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4457:1:::1;4437:22;;:8;:22;;;;4415:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;4536:28;4555:8;4536:18;:28::i;:::-;4334:238:::0;:::o;4993:125::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5067:43:::1;5094:10;5106:3;5074:5;5067:26;;;;:43;;;;;:::i;:::-;4993:125:::0;;:::o;13057:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12996:22::-;;;;;;;;;;;;;:::o;5126:155::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5190:11:::1;5211:5;5204:23;;;5236:4;5204:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5190:52;;5253:20;5262:5;5269:3;5253:8;:20::i;:::-;4206:1;5126:155:::0;:::o;1539:98::-;1597:7;1628:1;1624;:5;;;;:::i;:::-;1617:12;;1539:98;;;;:::o;1645:::-;1703:7;1734:1;1730;:5;;;;:::i;:::-;1723:12;;1645:98;;;;:::o;3494:::-;3547:7;3574:10;3567:17;;3494:98;:::o;16069:194::-;16144:111;16190:10;16215:7;:5;:7::i;:::-;16237;16151:6;16144:31;;;;:111;;;;;;:::i;:::-;16069:194;;:::o;15975:86::-;16025:7;:5;:7::i;:::-;16017:25;;:36;16043:9;16017:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15975:86::o;4580:191::-;4654:16;4673:6;;;;;;;;;;;4654:25;;4699:8;4690:6;;:17;;;;;;;;;;;;;;;;;;4754:8;4723:40;;4744:8;4723:40;;;;;;;;;;;;4580:191;;:::o;9823:214::-;9906:123;9940:5;9983:23;;;10008:2;10012:5;9960:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9906:19;:123::i;:::-;9823:214;;;:::o;10045:285::-;10189:133;10223:5;10266:27;;;10295:4;10301:2;10305:5;10243:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10189:19;:133::i;:::-;10045:285;;;;:::o;11892:419::-;11973:23;11999:106;12041:4;11999:106;;;;;;;;;;;;;;;;;12007:5;11999:27;;;;:106;;;;;:::i;:::-;11973:132;;12140:1;12120:10;:17;:21;12116:188;;;12195:10;12184:30;;;;;;;;;;;;:::i;:::-;12158:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;12116:188;11892:419;;;:::o;6570:229::-;6707:12;6739:52;6761:6;6769:4;6775:1;6778:12;6739:21;:52::i;:::-;6732:59;;6570:229;;;;;:::o;7171:571::-;7341:12;7413:5;7388:21;:30;;7366:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;7503:18;7514:6;7503:10;:18::i;:::-;7495:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7569:12;7583:23;7610:6;:11;;7629:5;7650:4;7610:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7568:97;;;;7683:51;7700:7;7709:10;7721:12;7683:16;:51::i;:::-;7676:58;;;;7171:571;;;;;;:::o;5759:196::-;5819:4;5836:12;5903:7;5891:20;5883:28;;5946:1;5939:4;:8;5932:15;;;5759:196;;;:::o;9180:550::-;9330:12;9359:7;9355:368;;;9390:10;9383:17;;;;9355:368;9457:1;9437:10;:17;:21;9433:279;;;9540:10;9534:17;9601:15;9588:10;9584:2;9580:19;9573:44;9488:148;9683:12;9676:20;;;;;;;;;;;:::i;:::-;;;;;;;;9180:550;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;669:622::-;;790:80;805:64;862:6;805:64;:::i;:::-;790:80;:::i;:::-;781:89;;890:5;918:6;911:5;904:21;944:4;937:5;933:16;926:23;;969:6;1019:3;1011:4;1003:6;999:17;994:3;990:27;987:36;984:2;;;1036:1;1033;1026:12;984:2;1064:1;1049:236;1074:6;1071:1;1068:13;1049:236;;;1141:3;1169:37;1202:3;1190:10;1169:37;:::i;:::-;1164:3;1157:50;1236:4;1231:3;1227:14;1220:21;;1270:4;1265:3;1261:14;1254:21;;1109:176;1096:1;1093;1089:9;1084:14;;1049:236;;;1053:14;771:520;;;;;;;:::o;1297:139::-;;1381:6;1368:20;1359:29;;1397:33;1424:5;1397:33;:::i;:::-;1349:87;;;;:::o;1459:303::-;;1579:3;1572:4;1564:6;1560:17;1556:27;1546:2;;1597:1;1594;1587:12;1546:2;1637:6;1624:20;1662:94;1752:3;1744:6;1737:4;1729:6;1725:17;1662:94;:::i;:::-;1653:103;;1536:226;;;;;:::o;1785:303::-;;1905:3;1898:4;1890:6;1886:17;1882:27;1872:2;;1923:1;1920;1913:12;1872:2;1963:6;1950:20;1988:94;2078:3;2070:6;2063:4;2055:6;2051:17;1988:94;:::i;:::-;1979:103;;1862:226;;;;;:::o;2094:133::-;;2175:6;2162:20;2153:29;;2191:30;2215:5;2191:30;:::i;:::-;2143:84;;;;:::o;2233:137::-;;2318:6;2312:13;2303:22;;2334:30;2358:5;2334:30;:::i;:::-;2293:77;;;;:::o;2376:139::-;;2460:6;2447:20;2438:29;;2476:33;2503:5;2476:33;:::i;:::-;2428:87;;;;:::o;2521:143::-;;2609:6;2603:13;2594:22;;2625:33;2652:5;2625:33;:::i;:::-;2584:80;;;;:::o;2670:262::-;;2778:2;2766:9;2757:7;2753:23;2749:32;2746:2;;;2794:1;2791;2784:12;2746:2;2837:1;2862:53;2907:7;2898:6;2887:9;2883:22;2862:53;:::i;:::-;2852:63;;2808:117;2736:196;;;;:::o;2938:401::-;;;3060:2;3048:9;3039:7;3035:23;3031:32;3028:2;;;3076:1;3073;3066:12;3028:2;3119:1;3144:53;3189:7;3180:6;3169:9;3165:22;3144:53;:::i;:::-;3134:63;;3090:117;3246:2;3272:50;3314:7;3305:6;3294:9;3290:22;3272:50;:::i;:::-;3262:60;;3217:115;3018:321;;;;;:::o;3345:407::-;;;3470:2;3458:9;3449:7;3445:23;3441:32;3438:2;;;3486:1;3483;3476:12;3438:2;3529:1;3554:53;3599:7;3590:6;3579:9;3575:22;3554:53;:::i;:::-;3544:63;;3500:117;3656:2;3682:53;3727:7;3718:6;3707:9;3703:22;3682:53;:::i;:::-;3672:63;;3627:118;3428:324;;;;;:::o;3758:693::-;;;3933:2;3921:9;3912:7;3908:23;3904:32;3901:2;;;3949:1;3946;3939:12;3901:2;4020:1;4009:9;4005:17;3992:31;4050:18;4042:6;4039:30;4036:2;;;4082:1;4079;4072:12;4036:2;4110:78;4180:7;4171:6;4160:9;4156:22;4110:78;:::i;:::-;4100:88;;3963:235;4265:2;4254:9;4250:18;4237:32;4296:18;4288:6;4285:30;4282:2;;;4328:1;4325;4318:12;4282:2;4356:78;4426:7;4417:6;4406:9;4402:22;4356:78;:::i;:::-;4346:88;;4208:236;3891:560;;;;;:::o;4457:838::-;;;;4649:2;4637:9;4628:7;4624:23;4620:32;4617:2;;;4665:1;4662;4655:12;4617:2;4736:1;4725:9;4721:17;4708:31;4766:18;4758:6;4755:30;4752:2;;;4798:1;4795;4788:12;4752:2;4826:78;4896:7;4887:6;4876:9;4872:22;4826:78;:::i;:::-;4816:88;;4679:235;4981:2;4970:9;4966:18;4953:32;5012:18;5004:6;5001:30;4998:2;;;5044:1;5041;5034:12;4998:2;5072:78;5142:7;5133:6;5122:9;5118:22;5072:78;:::i;:::-;5062:88;;4924:236;5199:2;5225:53;5270:7;5261:6;5250:9;5246:22;5225:53;:::i;:::-;5215:63;;5170:118;4607:688;;;;;:::o;5301:278::-;;5417:2;5405:9;5396:7;5392:23;5388:32;5385:2;;;5433:1;5430;5423:12;5385:2;5476:1;5501:61;5554:7;5545:6;5534:9;5530:22;5501:61;:::i;:::-;5491:71;;5447:125;5375:204;;;;:::o;5585:262::-;;5693:2;5681:9;5672:7;5668:23;5664:32;5661:2;;;5709:1;5706;5699:12;5661:2;5752:1;5777:53;5822:7;5813:6;5802:9;5798:22;5777:53;:::i;:::-;5767:63;;5723:117;5651:196;;;;:::o;5853:284::-;;5972:2;5960:9;5951:7;5947:23;5943:32;5940:2;;;5988:1;5985;5978:12;5940:2;6031:1;6056:64;6112:7;6103:6;6092:9;6088:22;6056:64;:::i;:::-;6046:74;;6002:128;5930:207;;;;:::o;6143:407::-;;;6268:2;6256:9;6247:7;6243:23;6239:32;6236:2;;;6284:1;6281;6274:12;6236:2;6327:1;6352:53;6397:7;6388:6;6377:9;6373:22;6352:53;:::i;:::-;6342:63;;6298:117;6454:2;6480:53;6525:7;6516:6;6505:9;6501:22;6480:53;:::i;:::-;6470:63;;6425:118;6226:324;;;;;:::o;6556:692::-;;;;;6712:3;6700:9;6691:7;6687:23;6683:33;6680:2;;;6729:1;6726;6719:12;6680:2;6772:1;6797:53;6842:7;6833:6;6822:9;6818:22;6797:53;:::i;:::-;6787:63;;6743:117;6899:2;6925:53;6970:7;6961:6;6950:9;6946:22;6925:53;:::i;:::-;6915:63;;6870:118;7027:2;7053:53;7098:7;7089:6;7078:9;7074:22;7053:53;:::i;:::-;7043:63;;6998:118;7155:2;7181:50;7223:7;7214:6;7203:9;7199:22;7181:50;:::i;:::-;7171:60;;7126:115;6670:578;;;;;;;:::o;7254:295::-;;7402:104;7502:3;7494:6;7402:104;:::i;:::-;7538:4;7533:3;7529:14;7515:28;;7392:157;;;;:::o;7555:108::-;7632:24;7650:5;7632:24;:::i;:::-;7627:3;7620:37;7610:53;;:::o;7669:118::-;7756:24;7774:5;7756:24;:::i;:::-;7751:3;7744:37;7734:53;;:::o;7861:964::-;;8067:83;8144:5;8067:83;:::i;:::-;8166:115;8274:6;8269:3;8166:115;:::i;:::-;8159:122;;8305:85;8384:5;8305:85;:::i;:::-;8413:7;8444:1;8429:371;8454:6;8451:1;8448:13;8429:371;;;8530:6;8524:13;8557:121;8674:3;8659:13;8557:121;:::i;:::-;8550:128;;8701:89;8783:6;8701:89;:::i;:::-;8691:99;;8489:311;8476:1;8473;8469:9;8464:14;;8429:371;;;8433:14;8816:3;8809:10;;8043:782;;;;;;;:::o;8831:109::-;8912:21;8927:5;8912:21;:::i;:::-;8907:3;8900:34;8890:50;;:::o;8946:373::-;;9078:38;9110:5;9078:38;:::i;:::-;9132:88;9213:6;9208:3;9132:88;:::i;:::-;9125:95;;9229:52;9274:6;9269:3;9262:4;9255:5;9251:16;9229:52;:::i;:::-;9306:6;9301:3;9297:16;9290:23;;9054:265;;;;;:::o;9325:364::-;;9441:39;9474:5;9441:39;:::i;:::-;9496:71;9560:6;9555:3;9496:71;:::i;:::-;9489:78;;9576:52;9621:6;9616:3;9609:4;9602:5;9598:16;9576:52;:::i;:::-;9653:29;9675:6;9653:29;:::i;:::-;9648:3;9644:39;9637:46;;9417:272;;;;;:::o;9695:370::-;;9858:67;9922:2;9917:3;9858:67;:::i;:::-;9851:74;;9955:34;9951:1;9946:3;9942:11;9935:55;10021:8;10016:2;10011:3;10007:12;10000:30;10056:2;10051:3;10047:12;10040:19;;9841:224;;;:::o;10071:324::-;;10234:67;10298:2;10293:3;10234:67;:::i;:::-;10227:74;;10331:28;10327:1;10322:3;10318:11;10311:49;10386:2;10381:3;10377:12;10370:19;;10217:178;;;:::o;10401:370::-;;10564:67;10628:2;10623:3;10564:67;:::i;:::-;10557:74;;10661:34;10657:1;10652:3;10648:11;10641:55;10727:8;10722:2;10717:3;10713:12;10706:30;10762:2;10757:3;10753:12;10746:19;;10547:224;;;:::o;10777:321::-;;10940:67;11004:2;10999:3;10940:67;:::i;:::-;10933:74;;11037:25;11033:1;11028:3;11024:11;11017:46;11089:2;11084:3;11080:12;11073:19;;10923:175;;;:::o;11104:370::-;;11267:67;11331:2;11326:3;11267:67;:::i;:::-;11260:74;;11364:34;11360:1;11355:3;11351:11;11344:55;11430:8;11425:2;11420:3;11416:12;11409:30;11465:2;11460:3;11456:12;11449:19;;11250:224;;;:::o;11480:379::-;;11643:67;11707:2;11702:3;11643:67;:::i;:::-;11636:74;;11740:34;11736:1;11731:3;11727:11;11720:55;11806:17;11801:2;11796:3;11792:12;11785:39;11850:2;11845:3;11841:12;11834:19;;11626:233;;;:::o;11865:318::-;;12028:67;12092:2;12087:3;12028:67;:::i;:::-;12021:74;;12125:22;12121:1;12116:3;12112:11;12105:43;12174:2;12169:3;12165:12;12158:19;;12011:172;;;:::o;12189:369::-;;12352:67;12416:2;12411:3;12352:67;:::i;:::-;12345:74;;12449:34;12445:1;12440:3;12436:11;12429:55;12515:7;12510:2;12505:3;12501:12;12494:29;12549:2;12544:3;12540:12;12533:19;;12335:223;;;:::o;12564:330::-;;12727:67;12791:2;12786:3;12727:67;:::i;:::-;12720:74;;12824:34;12820:1;12815:3;12811:11;12804:55;12885:2;12880:3;12876:12;12869:19;;12710:184;;;:::o;12900:327::-;;13063:67;13127:2;13122:3;13063:67;:::i;:::-;13056:74;;13160:31;13156:1;13151:3;13147:11;13140:52;13218:2;13213:3;13209:12;13202:19;;13046:181;;;:::o;13233:321::-;;13396:67;13460:2;13455:3;13396:67;:::i;:::-;13389:74;;13493:25;13489:1;13484:3;13480:11;13473:46;13545:2;13540:3;13536:12;13529:19;;13379:175;;;:::o;13560:374::-;;13723:67;13787:2;13782:3;13723:67;:::i;:::-;13716:74;;13820:34;13816:1;13811:3;13807:11;13800:55;13886:12;13881:2;13876:3;13872:12;13865:34;13925:2;13920:3;13916:12;13909:19;;13706:228;;;:::o;14004:508::-;14149:4;14144:3;14140:14;14238:4;14231:5;14227:16;14221:23;14257:63;14314:4;14309:3;14305:14;14291:12;14257:63;:::i;:::-;14164:166;14413:4;14406:5;14402:16;14396:23;14432:63;14489:4;14484:3;14480:14;14466:12;14432:63;:::i;:::-;14340:165;14118:394;;;:::o;14518:108::-;14595:24;14613:5;14595:24;:::i;:::-;14590:3;14583:37;14573:53;;:::o;14632:118::-;14719:24;14737:5;14719:24;:::i;:::-;14714:3;14707:37;14697:53;;:::o;14756:271::-;;14908:93;14997:3;14988:6;14908:93;:::i;:::-;14901:100;;15018:3;15011:10;;14890:137;;;;:::o;15033:222::-;;15164:2;15153:9;15149:18;15141:26;;15177:71;15245:1;15234:9;15230:17;15221:6;15177:71;:::i;:::-;15131:124;;;;:::o;15261:442::-;;15448:2;15437:9;15433:18;15425:26;;15461:71;15529:1;15518:9;15514:17;15505:6;15461:71;:::i;:::-;15542:72;15610:2;15599:9;15595:18;15586:6;15542:72;:::i;:::-;15624;15692:2;15681:9;15677:18;15668:6;15624:72;:::i;:::-;15415:288;;;;;;:::o;15709:332::-;;15868:2;15857:9;15853:18;15845:26;;15881:71;15949:1;15938:9;15934:17;15925:6;15881:71;:::i;:::-;15962:72;16030:2;16019:9;16015:18;16006:6;15962:72;:::i;:::-;15835:206;;;;;:::o;16047:489::-;;16286:2;16275:9;16271:18;16263:26;;16335:9;16329:4;16325:20;16321:1;16310:9;16306:17;16299:47;16363:166;16524:4;16515:6;16363:166;:::i;:::-;16355:174;;16253:283;;;;:::o;16542:210::-;;16667:2;16656:9;16652:18;16644:26;;16680:65;16742:1;16731:9;16727:17;16718:6;16680:65;:::i;:::-;16634:118;;;;:::o;16758:313::-;;16909:2;16898:9;16894:18;16886:26;;16958:9;16952:4;16948:20;16944:1;16933:9;16929:17;16922:47;16986:78;17059:4;17050:6;16986:78;:::i;:::-;16978:86;;16876:195;;;;:::o;17077:419::-;;17281:2;17270:9;17266:18;17258:26;;17330:9;17324:4;17320:20;17316:1;17305:9;17301:17;17294:47;17358:131;17484:4;17358:131;:::i;:::-;17350:139;;17248:248;;;:::o;17502:419::-;;17706:2;17695:9;17691:18;17683:26;;17755:9;17749:4;17745:20;17741:1;17730:9;17726:17;17719:47;17783:131;17909:4;17783:131;:::i;:::-;17775:139;;17673:248;;;:::o;17927:419::-;;18131:2;18120:9;18116:18;18108:26;;18180:9;18174:4;18170:20;18166:1;18155:9;18151:17;18144:47;18208:131;18334:4;18208:131;:::i;:::-;18200:139;;18098:248;;;:::o;18352:419::-;;18556:2;18545:9;18541:18;18533:26;;18605:9;18599:4;18595:20;18591:1;18580:9;18576:17;18569:47;18633:131;18759:4;18633:131;:::i;:::-;18625:139;;18523:248;;;:::o;18777:419::-;;18981:2;18970:9;18966:18;18958:26;;19030:9;19024:4;19020:20;19016:1;19005:9;19001:17;18994:47;19058:131;19184:4;19058:131;:::i;:::-;19050:139;;18948:248;;;:::o;19202:419::-;;19406:2;19395:9;19391:18;19383:26;;19455:9;19449:4;19445:20;19441:1;19430:9;19426:17;19419:47;19483:131;19609:4;19483:131;:::i;:::-;19475:139;;19373:248;;;:::o;19627:419::-;;19831:2;19820:9;19816:18;19808:26;;19880:9;19874:4;19870:20;19866:1;19855:9;19851:17;19844:47;19908:131;20034:4;19908:131;:::i;:::-;19900:139;;19798:248;;;:::o;20052:419::-;;20256:2;20245:9;20241:18;20233:26;;20305:9;20299:4;20295:20;20291:1;20280:9;20276:17;20269:47;20333:131;20459:4;20333:131;:::i;:::-;20325:139;;20223:248;;;:::o;20477:419::-;;20681:2;20670:9;20666:18;20658:26;;20730:9;20724:4;20720:20;20716:1;20705:9;20701:17;20694:47;20758:131;20884:4;20758:131;:::i;:::-;20750:139;;20648:248;;;:::o;20902:419::-;;21106:2;21095:9;21091:18;21083:26;;21155:9;21149:4;21145:20;21141:1;21130:9;21126:17;21119:47;21183:131;21309:4;21183:131;:::i;:::-;21175:139;;21073:248;;;:::o;21327:419::-;;21531:2;21520:9;21516:18;21508:26;;21580:9;21574:4;21570:20;21566:1;21555:9;21551:17;21544:47;21608:131;21734:4;21608:131;:::i;:::-;21600:139;;21498:248;;;:::o;21752:419::-;;21956:2;21945:9;21941:18;21933:26;;22005:9;21999:4;21995:20;21991:1;21980:9;21976:17;21969:47;22033:131;22159:4;22033:131;:::i;:::-;22025:139;;21923:248;;;:::o;22177:222::-;;22308:2;22297:9;22293:18;22285:26;;22321:71;22389:1;22378:9;22374:17;22365:6;22321:71;:::i;:::-;22275:124;;;;:::o;22405:320::-;;22558:2;22547:9;22543:18;22535:26;;22571:71;22639:1;22628:9;22624:17;22615:6;22571:71;:::i;:::-;22652:66;22714:2;22703:9;22699:18;22690:6;22652:66;:::i;:::-;22525:200;;;;;:::o;22731:283::-;;22797:2;22791:9;22781:19;;22839:4;22831:6;22827:17;22946:6;22934:10;22931:22;22910:18;22898:10;22895:34;22892:62;22889:2;;;22957:18;;:::i;:::-;22889:2;22997:10;22993:2;22986:22;22771:243;;;;:::o;23020:311::-;;23187:18;23179:6;23176:30;23173:2;;;23209:18;;:::i;:::-;23173:2;23259:4;23251:6;23247:17;23239:25;;23319:4;23313;23309:15;23301:23;;23102:229;;;:::o;23337:311::-;;23504:18;23496:6;23493:30;23490:2;;;23526:18;;:::i;:::-;23490:2;23576:4;23568:6;23564:17;23556:25;;23636:4;23630;23626:15;23618:23;;23419:229;;;:::o;23654:161::-;;23773:3;23765:11;;23803:4;23798:3;23794:14;23786:22;;23755:60;;;:::o;23821:143::-;;23951:5;23945:12;23935:22;;23924:40;;;:::o;23970:98::-;;24055:5;24049:12;24039:22;;24028:40;;;:::o;24074:99::-;;24160:5;24154:12;24144:22;;24133:40;;;:::o;24179:142::-;;24310:4;24305:3;24301:14;24293:22;;24283:38;;;:::o;24327:213::-;;24489:6;24484:3;24477:19;24529:4;24524:3;24520:14;24505:29;;24467:73;;;;:::o;24546:147::-;;24684:3;24669:18;;24659:34;;;;:::o;24699:169::-;;24817:6;24812:3;24805:19;24857:4;24852:3;24848:14;24833:29;;24795:73;;;;:::o;24874:305::-;;24933:20;24951:1;24933:20;:::i;:::-;24928:25;;24967:20;24985:1;24967:20;:::i;:::-;24962:25;;25121:1;25053:66;25049:74;25046:1;25043:81;25040:2;;;25127:18;;:::i;:::-;25040:2;25171:1;25168;25164:9;25157:16;;24918:261;;;;:::o;25185:185::-;;25242:20;25260:1;25242:20;:::i;:::-;25237:25;;25276:20;25294:1;25276:20;:::i;:::-;25271:25;;25315:1;25305:2;;25320:18;;:::i;:::-;25305:2;25362:1;25359;25355:9;25350:14;;25227:143;;;;:::o;25376:848::-;;;25468:6;25459:15;;25492:5;25483:14;;25506:712;25527:1;25517:8;25514:15;25506:712;;;25622:4;25617:3;25613:14;25607:4;25604:24;25601:2;;;25631:18;;:::i;:::-;25601:2;25681:1;25671:8;25667:16;25664:2;;;26096:4;26089:5;26085:16;26076:25;;25664:2;26146:4;26140;26136:15;26128:23;;26176:32;26199:8;26176:32;:::i;:::-;26164:44;;25506:712;;;25449:775;;;;;;;:::o;26230:285::-;;26314:23;26332:4;26314:23;:::i;:::-;26306:31;;26358:27;26376:8;26358:27;:::i;:::-;26346:39;;26404:104;26441:66;26431:8;26425:4;26404:104;:::i;:::-;26395:113;;26296:219;;;;:::o;26521:1073::-;;26766:8;26756:2;;26787:1;26778:10;;26789:5;;26756:2;26815:4;26805:2;;26832:1;26823:10;;26834:5;;26805:2;26901:4;26949:1;26944:27;;;;26985:1;26980:191;;;;26894:277;;26944:27;26962:1;26953:10;;26964:5;;;26980:191;27025:3;27015:8;27012:17;27009:2;;;27032:18;;:::i;:::-;27009:2;27081:8;27078:1;27074:16;27065:25;;27116:3;27109:5;27106:14;27103:2;;;27123:18;;:::i;:::-;27103:2;27156:5;;;26894:277;;27280:2;27270:8;27267:16;27261:3;27255:4;27252:13;27248:36;27230:2;27220:8;27217:16;27212:2;27206:4;27203:12;27199:35;27183:111;27180:2;;;27336:8;27330:4;27326:19;27317:28;;27371:3;27364:5;27361:14;27358:2;;;27378:18;;:::i;:::-;27358:2;27411:5;;27180:2;27451:42;27489:3;27479:8;27473:4;27470:1;27451:42;:::i;:::-;27436:57;;;;27525:4;27520:3;27516:14;27509:5;27506:25;27503:2;;;27534:18;;:::i;:::-;27503:2;27583:4;27576:5;27572:16;27563:25;;26581:1013;;;;;;:::o;27600:348::-;;27663:20;27681:1;27663:20;:::i;:::-;27658:25;;27697:20;27715:1;27697:20;:::i;:::-;27692:25;;27885:1;27817:66;27813:74;27810:1;27807:81;27802:1;27795:9;27788:17;27784:105;27781:2;;;27892:18;;:::i;:::-;27781:2;27940:1;27937;27933:9;27922:20;;27648:300;;;;:::o;27954:191::-;;28014:20;28032:1;28014:20;:::i;:::-;28009:25;;28048:20;28066:1;28048:20;:::i;:::-;28043:25;;28087:1;28084;28081:8;28078:2;;;28092:18;;:::i;:::-;28078:2;28137:1;28134;28130:9;28122:17;;27999:146;;;;:::o;28151:96::-;;28217:24;28235:5;28217:24;:::i;:::-;28206:35;;28196:51;;;:::o;28253:90::-;;28330:5;28323:13;28316:21;28305:32;;28295:48;;;:::o;28349:126::-;;28426:42;28419:5;28415:54;28404:65;;28394:81;;;:::o;28481:77::-;;28547:5;28536:16;;28526:32;;;:::o;28564:307::-;28632:1;28642:113;28656:6;28653:1;28650:13;28642:113;;;28741:1;28736:3;28732:11;28726:18;28722:1;28717:3;28713:11;28706:39;28678:2;28675:1;28671:10;28666:15;;28642:113;;;28773:6;28770:1;28767:13;28764:2;;;28853:1;28844:6;28839:3;28835:16;28828:27;28764:2;28613:258;;;;:::o;28877:233::-;;28939:24;28957:5;28939:24;:::i;:::-;28930:33;;28985:66;28978:5;28975:77;28972:2;;;29055:18;;:::i;:::-;28972:2;29102:1;29095:5;29091:13;29084:20;;28920:190;;;:::o;29116:180::-;29164:77;29161:1;29154:88;29261:4;29258:1;29251:15;29285:4;29282:1;29275:15;29302:180;29350:77;29347:1;29340:88;29447:4;29444:1;29437:15;29471:4;29468:1;29461:15;29488:180;29536:77;29533:1;29526:88;29633:4;29630:1;29623:15;29657:4;29654:1;29647:15;29674:102;;29766:2;29762:7;29757:2;29750:5;29746:14;29742:28;29732:38;;29722:54;;;:::o;29782:102::-;;29871:5;29868:1;29864:13;29843:34;;29833:51;;;:::o;29890:122::-;29963:24;29981:5;29963:24;:::i;:::-;29956:5;29953:35;29943:2;;30002:1;29999;29992:12;29943:2;29933:79;:::o;30018:116::-;30088:21;30103:5;30088:21;:::i;:::-;30081:5;30078:32;30068:2;;30124:1;30121;30114:12;30068:2;30058:76;:::o;30140:122::-;30213:24;30231:5;30213:24;:::i;:::-;30206:5;30203:35;30193:2;;30252:1;30249;30242:12;30193:2;30183:79;:::o

Swarm Source

ipfs://5034f30d91c1d82585b273b6817ccd3f01bc8689be010534c4239986ab7a4fe5

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.