Contract 0x4EAC987ccBb935348570fD9Fe963Fb4d17C6571a

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
0x7590cfbf9d9ee5c6213eee2fc049a1820d70124964fcb9077bfc0f3faa36a51077950212021-05-28 6:30:1515 days 5 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.00017364
0x1733284a607c1c955989bc31cd6c3db95b070c1a0d099dc158cec45e7ccecd2877950082021-05-28 6:29:3615 days 5 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.00022087
0xe18914c761c12d09d88c0b0b320bee84262ddcdb921ba8abf584f0672e47972277949122021-05-28 6:24:4715 days 5 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.00022129
0x7ab0ec73a1824ab8f651b21314de4764e75fa26d4a2d7a2d328a45453a95e30e77948862021-05-28 6:23:2915 days 5 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.00017412
0x659b118f2514128715d6786ee6d6b0d2cfdbdf718441ee855899deff4d1d1fed77947912021-05-28 6:18:4415 days 5 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.00087002
0xbaaef7febcf7c2e18ae7d626cda99a358ec93ae8cdc8fdfc645839896e60cc6477947892021-05-28 6:18:3815 days 5 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.00076999
0xdbc99034953edaa699ed2957046c25dd2daaea1107ef25e2530ac111f3bb040977113232021-05-25 8:16:4218 days 3 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.000174075
0x20f6e9e0acba822abda960a7f6498f9ddac9891a683413c4ee8cea72403b8e8c77106192021-05-25 7:41:3018 days 4 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.000296305
0xa5b61c0cf9086c639aee9d9f2e67226034cf391fbe6f89fd63068bea2aaab02572643372021-05-09 7:56:2034 days 3 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.00021958
0x423d2723b20a2bb682928c2ce4acb1838334e20f4402076a3a104ee1f6758b8572640292021-05-09 7:40:2734 days 4 hrs ago0x51b486692321af984bc75d105c54419e35d963b9 IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.00091406
0x6599cae29558b0e56a078a4eda393a7220476b72913d238b2a698990fef1e45772639012021-05-09 7:34:0334 days 4 hrs ago0x68af405930877980147caa9fa942ddd087ef513f IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0.012 BNB0.0026915
0xd5e3b680d24eb3c6f5fffec13353c9c5a2249601ed70987c8075ac37c0e5315872637822021-05-09 7:28:0634 days 4 hrs ago0x68af405930877980147caa9fa942ddd087ef513f IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0.012 BNB0.00245535
0x5049bc0b23585d6808efe8efb174fd23d5f85c2d5e2249c3989910691186a46772637782021-05-09 7:27:5434 days 4 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.000180955
0xb0025fb4029f2532b609cee5214ef97cda50bff1bd6a3fb1bb423b3b3ceed55b72169272021-05-07 15:00:4335 days 20 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.000276955
0x69bc34ad1a5af9d6b83fbf3f23e5acc10c1978d5f6f746be62db3708bc5e169872142952021-05-07 12:47:1735 days 23 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.00087002
0xbf46f64142c41b4fc6337413e0f249412a2c8e392984050a3d91da828aa36e4b72141192021-05-07 12:38:1935 days 23 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.00087002
0xee20595f8b90ce6d03cdc59e4433ad010d99c641022dceaa1b568cb74354a42469876802021-04-29 12:58:5243 days 22 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.00014623
0x15f1e6d61edfeab82ede4face314054162b7b3569ac9e99d9f5bc16d36387cfc69873772021-04-29 12:43:3843 days 23 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.00014623
0x523ee8852d57d1814b406a6244d9a9b67a323831806e501585a219de46752d9269871612021-04-29 12:32:4443 days 23 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.00087002
0xadc8d33179d6564d75d08f074cb89ad733088ce319bfbff696bbf8782eb9674e69871572021-04-29 12:32:3243 days 23 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.00076966
0x70ecbd4c36c5f3fada3db0c8da1e2f6cc346ae03c72b22470ef971f9b3c918cd69869082021-04-29 12:20:0543 days 23 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.00087002
0x8dcf817e87ae8a5eb7d7fc820c8f4fd25bc5c556d9c362bfebb0b016cbcf15b469869052021-04-29 12:19:5643 days 23 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.00076966
0x55fb8a088cf98db2bb9b3becf603c67996cec878777fda9c431a642167cb8ff769855152021-04-29 11:10:2244 days 41 mins agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.00014641
0x52a3d55c52a383255722ae39a62ec785f2196687a40895a4b9f9ef51c1f498f069853932021-04-29 11:04:1444 days 47 mins agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.000174
0xa88b731db467b532b25099f13476d74b91af88cd63a7cfbf1b33c6e5d0e2f7bf68956932021-04-26 7:44:5947 days 4 hrs agoOpenBiSea: Deployer IN  0x4eac987ccbb935348570fd9fe963fb4d17c6571a0 BNB0.000174015
[ Download CSV Export 
Latest 2 internal transactions
Parent Txn Hash Block From To Value
0x6599cae29558b0e56a078a4eda393a7220476b72913d238b2a698990fef1e45772639012021-05-09 7:34:0334 days 4 hrs ago 0x4eac987ccbb935348570fd9fe963fb4d17c6571a 0x1d5635d4bb016c7512121468f8ffe9bf7a936f5f0.012 BNB
0xd5e3b680d24eb3c6f5fffec13353c9c5a2249601ed70987c8075ac37c0e5315872637822021-05-09 7:28:0634 days 4 hrs ago 0x4eac987ccbb935348570fd9fe963fb4d17c6571a 0x1d5635d4bb016c7512121468f8ffe9bf7a936f5f0.012 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
YouBank

Compiler Version
v0.6.8+commit.0bbfe453

Optimization Enabled:
Yes with 200 runs

Other Settings:
byzantium EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 12 : YouBank.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;

import "./interface/IPool.sol";
import "./interface/IAssetsManageTeam.sol";
import "./interface/IReturnInvestmentLpartner.sol";
import "./interface/ICreator.sol";
import "./interface/IRoleModel.sol";
import "./interface/IOracle.sol";
import "./access/TeamRole.sol";
import "./utils/EnumerableSet.sol";
import "./interface/IERC20.sol";
import "./math/SafeMath.sol";
contract YouBank is TeamRole, IRoleModel {
    using SafeMath for uint256;
    using EnumerableSet for EnumerableSet.AddressSet;
    event CreatePool(address pool);
    event AddPool(address pool);
    event UpdatePool(address pool);
    address private _creatorInvestPool;// The address of the contract that creates the Investment Pool
    IAssetsManageTeam private _assetsManageTeam;// Smart contract for request deposit
    IReturnInvestmentLpartner private _returnInvestmentLpartner;// Smart contract for return investment
    IOracle _oracleContract;// Oracle contract address
    EnumerableSet.AddressSet private _addressesPools;// Collection of all pool addresses
    mapping(address => uint256) private _investedFunds;
    mapping(address => uint256) private _returnedFunds;
    mapping(address => uint256) private _poolValues;
    uint256 private _poolValuesTotal;
    mapping(address => uint256) private _poolValuesUSD;
    uint256 private _poolValuesUSDTotal;
    function createPool(
        string memory name,
        uint256 lockPeriod,
        uint256 depositFixedFee,
        uint256 referralDepositFee,
        uint256 annualPercent,
        uint256 penaltyEarlyWithdraw,
        address superAdmin,
        address gPartner,
        address lPartner,
        address startupTeam
    ) public onlyTeam returns (bool) {
        ICreator _creatorContract = ICreator(_creatorInvestPool);
        address _investPool = _creatorContract.createPool(name, lockPeriod, depositFixedFee, referralDepositFee, annualPercent, penaltyEarlyWithdraw, superAdmin, gPartner, lPartner, startupTeam);
        _addressesPools.add(_investPool);
        emit CreatePool(_investPool);
        return true;
    }
    function addPool(address poolAddress) public onlyTeam returns (bool) {
        _addressesPools.add(poolAddress);
        _assetsManageTeam.addManager(poolAddress);
        emit AddPool(poolAddress);
        return true;
    }
    function updatePool(address pool, string memory name, bool publicPool, address token, uint256 locked, uint256 depositFixedFee, uint256 referralDepositFee, uint256 annualPercent, uint256 penaltyEarlyWithdraw) public onlyTeam returns (bool) {
        IPool(pool)._updatePool(name, publicPool, token, locked, depositFixedFee, referralDepositFee, annualPercent, penaltyEarlyWithdraw);
        emit UpdatePool(pool);
        return true;
    }
    function setPriceToken(address pool, uint256 rate) external onlyTeam returns (bool) {
        IPool(pool)._setRate(rate);
        return true;
    }
    function setTeamReward(address pool, uint256 teamReward) external onlyTeam returns (bool) {
        IPool(pool)._setTeamReward(teamReward);
        return true;
    }
    event DepositTokenToPool(address pool, uint256 amount);
    function depositTokenToPool(address pool, uint256 amount) public returns (bool) {
        IPool(pool)._depositTokenPoolRegistry(msg.sender, amount);
        emit DepositTokenToPool(pool,amount);
        return true;
    }
    event WithdrawToStartupTeam(address pool, uint256 amount);
    function withdrawToStartupTeam(address pool, uint256 amount) public returns (bool) {
        IPool(pool)._withdrawTeam(msg.sender, amount);
        emit WithdrawToStartupTeam(pool,amount);
        return true;
    }
    function requestStartupTeam(bool withdraw, address pool, uint256 maxValue) public returns (bool) {
        return _assetsManageTeam._request(withdraw, pool, msg.sender, maxValue);
    }
    function approveReqStartupTeam(address pool, address team) public returns (bool) {
        return _assetsManageTeam._approve(pool, team, msg.sender);
    }
    function disapproveReqStartupTeam(address pool, address team) public returns (bool) {
        return _assetsManageTeam._disapprove(pool, team, msg.sender);
    }
    function lockStartupTeam(address pool, address team) public returns (bool) {
        return _assetsManageTeam._lock(pool, team, msg.sender);
    }
    function unlockStartupTeam(address pool, address team) public returns (bool) {
        return _assetsManageTeam._unlock(pool, team, msg.sender);
    }
    function getDepositPool(address pool, address owner, uint256 index) public view returns (uint256 amount, uint256 time, uint256 lock_period, bool refund_authorize, uint256 amountWithdrawal, uint256 lenghtDeposit, address investedToken)
    {
        (amount, time, lock_period, refund_authorize, amountWithdrawal,investedToken) = IPool(pool).getDeposit(owner, index);
        uint256 lenghtDepSender = IPool(pool).getDepositLength(msg.sender);
        return (amount, time, lock_period, refund_authorize,amountWithdrawal,lenghtDepSender,investedToken);
    }
    function getPerformedOperationsTeamStartup(address pool, address owner, uint256 index) public view returns (address token, uint256 amountToken, uint256 withdrawAmount, uint256 time)
    {
        (token, amountToken, withdrawAmount, time) = _assetsManageTeam.getPerformedOperations(pool, owner, index);
        return (token, amountToken, withdrawAmount, time);
    }
    function getRequestsTeam(address pool) public view returns (address[] memory) {
        return _assetsManageTeam.getRequests(pool);
    }
    function getApprovalReqTeam(address pool) public view returns (address[] memory) {
        return _assetsManageTeam.getApproval(pool);
    }
    function getRequestTeamAddress(address pool, address team) public view returns (bool lock, uint256 maxValueToken, uint256 madeValueToken, uint256 maxValue, uint256 madeValue)
    {
        (lock, maxValueToken, madeValueToken, maxValue, madeValue) = _assetsManageTeam.getRequestTeamAddress(pool, team);
        return (lock, maxValueToken, madeValueToken, maxValue, madeValue);
    }
    function getApproveTeamAddress(address pool, address team) public view returns (bool lock, uint256 maxValueToken, uint256 madeValueToken, uint256 maxValue, uint256 madeValue)
    {
        (lock, maxValueToken, madeValueToken, maxValue, madeValue) = _assetsManageTeam.getApproveTeamAddress(pool, team);
        return (lock, maxValueToken, madeValueToken, maxValue, madeValue);
    }
    event SetReferral(address pool, address lPartner,address referral,bool result);
    function setReferral(address pool, address lPartner, address referral) public returns (bool) {
        require(IPool(pool).hasRole(LIMITED_PARTNER_ROLE, lPartner), "PoolRegistry: parameter Lpartner has no role LPartner");
        bool result = IPool(pool)._setReferral(msg.sender, lPartner, referral);
        emit SetReferral(pool,lPartner,referral,result);
        return result;
    }
    function getReferral(address pool, address lPartner) public view returns (address) {
        return IPool(pool).getReferral(lPartner);
    }
    function requestReturnInvestmentLpartner(address pool, uint256 index, uint256 amount,address token) public returns (bool) {
        return _returnInvestmentLpartner._request(pool, msg.sender, index, amount, token);
    }
    function approveReturnInvestmentLpartner(address pool, address lPartner) public returns (bool) {
        return _returnInvestmentLpartner._approve(pool, lPartner, msg.sender);
    }
    event WithdrawLPartner(address pool, address lPartner,bool result);
    function withdrawLPartner(address pool) public returns (bool) {
        bool result;
        uint256 totalAmountReturn;
        address token;
        (result,totalAmountReturn,token) = IPool(pool)._withdrawLPartner(msg.sender);
        if (result) {
            _returnedFunds[token] = _returnedFunds[token].add(totalAmountReturn);
        }
        emit WithdrawLPartner(pool,msg.sender,result);
        return result;
    }
    function disapproveReturnInvestmentLpartner(address pool, address lPartner) public returns (bool)
    {
        return _returnInvestmentLpartner._disapprove(pool, lPartner, msg.sender);
    }
    function getAddrRequestsReturnInvestLpartner(address pool) public view returns (address[] memory)
    {
        return _returnInvestmentLpartner.getRequests(pool);
    }
    function getRequestsReturnInvestLpartner(address pool, address lPartner) public view returns (uint256[] memory)
    {
        return _returnInvestmentLpartner.getRequestsLpartner(pool, lPartner);
    }
    function getInvestedFunds(address token) public view returns (uint256)
    {
        return _investedFunds[token];
    }
    function getReturnedFunds(address token) public view returns (uint256)
    {
        return _returnedFunds[token];
    }
    uint256 constant private multiplierDefault = 100000;
    function feesMultipier(address sender) public view returns (uint256) {
        uint256 balanceProjectTokensForSender = _balanceTokenForTokensale(sender);
        uint256 mulitpier = multiplierDefault;
        if (balanceProjectTokensForSender > 0) {
            uint256 initialProjectTokensInPool = 10 ** uint256(18) * 80000 ;//_balanceTokenForTokensale(address(this));
            mulitpier = balanceProjectTokensForSender.mul(multiplierDefault).div(initialProjectTokensInPool).add(multiplierDefault);
        }
        return mulitpier;
    }
    event DepositToPool(address sender, uint256 amount);
    function depositToPool(address payable pool) public payable returns (bool) {
        if (_addressesPools.contains(pool)) {
            uint256 amount = msg.value;
            pool.transfer(amount);
            IPool(pool)._depositPoolRegistry(msg.sender, amount, feesMultipier(msg.sender));
            _investedFunds[address(0)] = _investedFunds[address(0)].add(amount);
            emit DepositToPool(msg.sender,amount);
            return true;
        }
        return false;
    }
    event ReturnsFromStartupTeam(address sender, uint256 amount);
    function returnsFromStartupTeam(address payable pool) public payable returns (bool) {
        if (_addressesPools.contains(pool)) {
            require(IPool(pool).hasRole(STARTUP_TEAM_ROLE, msg.sender), "PoolRegistry: sender has no role TeamStartup");
            pool.transfer(msg.value);
            emit ReturnsFromStartupTeam(msg.sender,msg.value);
            return true;
        }
        return false;
    }
    function activateDepositToPool(address pool) public onlyTeam returns (bool) {
        return IPool(pool)._activateDepositToPool();
    }
    function disactivateDepositToPool(address pool) public onlyTeam returns (bool) {
        return IPool(pool)._disactivateDepositToPool();
    }
    function grantRoleInvestmentPool(address pool, bytes32 role, address account) public returns (bool) {
        require(IPool(pool).hasRole(SUPER_ADMIN_ROLE, msg.sender), "PoolRegistry: sender has no role GPartner");
        IPool(pool).grantRole(role, account);
        return true;
    }
    function revokeRoleInvestmentPool(address pool, bytes32 role, address account) public returns (bool) {
        require(IPool(pool).hasRole(SUPER_ADMIN_ROLE, msg.sender), "PoolRegistry: sender has no role GPartner");
        IPool(pool).revokeRole(role, account);
        return true;
    }
    function setAddressCreatorInvestPool(address creatorContract) public onlyTeam returns (bool) {
        _creatorInvestPool = creatorContract;
        return true;
    }
    function setAssetManageTeamContract(IAssetsManageTeam addrContract) public onlyTeam returns (bool)
    {
        _assetsManageTeam = addrContract;
        return true;
    }
    function setReturnInvestmentLpartner(IReturnInvestmentLpartner addrContract) public onlyTeam returns (bool)
    {
        _returnInvestmentLpartner = addrContract;
        return true;
    }
    function setOracleContract(IOracle _oracle) public onlyTeam returns (bool) {
        _oracleContract = _oracle;
        return true;
    }
    function getPools() public view returns (address[] memory) {
        return _addressesPools.collection();
    }
    function getInfoPool(address pool) public view returns (string memory name, bool isPublicPool, address token, uint256 locked)
    {
        (name, isPublicPool, token, locked) = IPool(pool).getInfoPool();
        return (name, isPublicPool, token, locked);
    }
    function getInfoPoolFees(address pool) public view returns (uint256 rate, uint256 depositFixedFee, uint256 referralDepositFee, uint256 annualPercent, uint256 penaltyEarlyWithdraw, uint256 totalInvestLpartner, uint256 premiumFee)
    {
        (rate ,depositFixedFee , referralDepositFee, annualPercent , penaltyEarlyWithdraw, totalInvestLpartner, premiumFee) = IPool(pool).getInfoPoolFees();
        return (rate, depositFixedFee, referralDepositFee, annualPercent, penaltyEarlyWithdraw, totalInvestLpartner, premiumFee);
    }
    function getAssetManageTeamContract() public view returns (IAssetsManageTeam) {
        return _assetsManageTeam;
    }
    function getReturnInvestmentLpartner() public view returns (IReturnInvestmentLpartner) {
        return _returnInvestmentLpartner;
    }
    function getOracleContract() public view returns (IOracle) {
        return _oracleContract;
    }
    function getAddressesRolesPool(address pool, bytes32 role) public view returns (address[] memory)
    {
        return IPool(pool).getMembersRole(role);
    }
    function getAddressCreatorInvestPool() public view returns (address) {
        return _creatorInvestPool;
    }
    function getPoolValues(address pool) public view returns (uint256 poolValueUSD, uint256 poolValue, string memory proofOfValue, uint256 poolValuesTotal, uint256 poolValuesUSDTotal) {
        (poolValueUSD, poolValue, proofOfValue) = IPool(pool).getPoolValues();
        return (poolValueUSD,poolValue,proofOfValue,_poolValuesTotal,_poolValuesUSDTotal);
    }
    event SetPoolValues(address pool,uint256 poolValueUSD, uint256 poolValue, string proofOfValue, bool result);
    function setPoolValues(address pool,uint256 poolValueUSD, uint256 poolValue, string memory proofOfValue) public onlyRegistryOracle returns (bool) {
        if (_addressesPools.contains(pool)) {

//            require(IPool(pool).hasRole(ORACLE, msg.sender), "PoolRegistry: sender has no role ORACLE");
            _poolValues[pool] = poolValue;
            _poolValuesUSD[pool] = poolValueUSD;
            uint256 poolValueUSDforSumOld;
            uint256 poolValueforSumOld;
            (poolValueUSDforSumOld, poolValueforSumOld, ) = IPool(pool).getPoolValues();
            bool result = IPool(pool)._setPoolValues(poolValueUSD,poolValue,proofOfValue);
            _poolValuesTotal = _poolValuesTotal.sub(poolValueforSumOld).add(poolValue);
            _poolValuesUSDTotal = _poolValuesUSDTotal.sub(poolValueUSDforSumOld).add(poolValueUSD);
            emit SetPoolValues(pool,poolValueUSD,poolValue,proofOfValue,result);
            return result;
        }
        return false;
    }
    function getPoolPairReserves(address pool) public view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast, address token0, address token1, address weth,uint price0CumulativeLast,uint price1CumulativeLast)
    {
        return IPool(pool).getPoolPairReserves();
    }
    event DepositInvestmentInTokensToPool(address pool,uint256 amount, address token);
    function _depositInvestmentInTokensToPoolCalculationReferral (address referralAddress, uint256 amount, uint256 referralDepositFee) private view returns (uint256) {
        uint256 depositFeeReferrer = 0;
        if (referralAddress != address(0)) {
            depositFeeReferrer = amount.mul(referralDepositFee).div(100); // zero referral fees for zero address
        }
        return depositFeeReferrer;
    }
    function _depositInvestmentInTokensToPoolCalculation (uint256 depositFixedFee,uint256 referralDepositFee, uint256 amount, address referralAddress, uint256 mulitpier) private view returns (uint256,uint256,uint256){
        uint256 depositFee = amount.mul(depositFixedFee).div(100).mul(mulitpier).div(multiplierDefault);
        uint256 depositFeeReferrer = _depositInvestmentInTokensToPoolCalculationReferral(referralAddress, amount, referralDepositFee).mul(mulitpier).div(multiplierDefault);
        uint256 finalAmount = amount.sub(depositFee);
        if (depositFeeReferrer > 0) {
            finalAmount = finalAmount.sub(depositFeeReferrer);
        }
        return (finalAmount,depositFee,depositFeeReferrer);
    }
    function depositInvestmentInTokensToPool(address pool, uint256 amount, address token) public returns (bool) {
        require(amount > 0, "depositInvestmentInTokensToPool: the number of sent token is 0");
        uint256 depositFixedFee = 0;
        uint256 referralDepositFee = 0;
        (, depositFixedFee, referralDepositFee, , , , ) = IPool(pool).getInfoPoolFees();
        address payable team = payable(getTeamAddresses()[1]);
        address referralAddress = IPool(pool).getReferral(msg.sender);
        uint256 depositFee = 0;
        uint256 depositFeeReferrer = 0;
        uint256 finalAmount = 0;
        (finalAmount,depositFee,depositFeeReferrer) = _depositInvestmentInTokensToPoolCalculation(depositFixedFee, referralDepositFee, amount, referralAddress, feesMultipier(msg.sender));
        IERC20(token).transferFrom(msg.sender, pool, finalAmount);
        IERC20(token).transferFrom(msg.sender, team, depositFee);
        if (depositFeeReferrer > 0) {
            IERC20(token).transferFrom(msg.sender, payable(referralAddress), depositFeeReferrer);
        }
        IPool(pool)._depositInvestmentInTokensToPool(msg.sender,amount,token);
        _investedFunds[token] = _investedFunds[token].add(amount);
        emit DepositInvestmentInTokensToPool(pool,amount,token);
        return true;
    }
    event WithdrawInTokensToStartupTeam(address pool,uint256 amount, address token);
    function withdrawInTokensToStartupTeam(address pool,address token, uint256 amount) public returns (bool) {
        IPool(pool)._withdrawTokensToStartup(msg.sender,token, amount);
        emit WithdrawInTokensToStartupTeam(pool,amount,token);
        return true;
    }
    function requestTokensWidthdrawalFromStartup(address pool, address token, uint256 maxValue) public returns (bool) {
        return _assetsManageTeam._requestTokensWidthdrawalFromStartup(pool,token, msg.sender, maxValue);
    }
    function approveTokensWidthdrawalFromStartup(address pool, address token, address team) public returns (bool) {
        return _assetsManageTeam._approveTokensWidthdrawalFromStartup(pool,token,team,msg.sender);
    }
    event ReturnsInTokensFromTeam(address pool,uint256 amount, address token);
    function returnsInTokensFromTeam(address payable pool,address token, uint256 amount) public returns (bool) {
        IPool(pool)._returnsInTokensFromTeam(msg.sender,token,amount);
        emit ReturnsInTokensFromTeam(pool,amount,token);
        return true;
    }
    function withdrawSuperAdmin(address pool, address token, uint256 amount) public returns (bool) {
        return IPool(pool)._withdrawSuperAdmin(msg.sender, token, amount);
    }
    function getCustomPrice(address aggregator) public view returns (uint256,uint8) {
        return _oracleContract.getCustomPrice(aggregator);
    }
    mapping(address => uint256) private _investorsReceivedMainTokenLatestDate;
    event ClaimFreeProjectTokens(address pool, uint256 lastRewardTimestamp, uint256 poolValuesUSDTotal, uint256 balanceLeavedOnThisContractProjectTokens, uint256 amountTotalUSD, bool newInvestor, uint256 tokensToPay, uint256 poolValuesUSDTotalInUSD, uint256 percentOfTAV);
    function _tokenForTokensale() private view returns (IERC20) {
        address tokenForTokensale;
        (,,tokenForTokensale,) = IPool(getPools()[0]).getInfoPool();
        return IERC20(tokenForTokensale);
    }
    function _balanceTokenForTokensale(address forAddress) private view returns (uint256) {
        return _tokenForTokensale().balanceOf(forAddress);
    }
    function _tokensToDistribute(uint256 amountTotalUSD, bool newInvestor) private view returns (uint256,uint256) {
        uint256 balanceLeavedOnThisContractProjectTokens = _balanceTokenForTokensale(address (this));/* if TAV < 500k, balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens * 1%   if TAV >  $500k and TAV < $5M, balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens * 3% if TAV >  $500k and TAV < $5M, balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens * 10% */
        if (_poolValuesUSDTotal.div(10 ** uint256(18)) < 500000) {
            balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens.div(100);
        } else if (_poolValuesUSDTotal.div(10 ** uint256(18)) < 5000000) {
            balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens.div(30);
        } else {
            balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens.div(10);
        } /*  amountTotalUSD / TAV - his percent of TAV balanceLeavedOnThisContractProjectTokens * his percent of pool = amount of tokens to pay if (newInvestor) amount of tokens to pay = amount of tokens to pay * 1.1 _investorsReceivedMainToken[msg.sender][time] = amount of tokens to pay*/
        uint256 poolValuesUSDTotalInUSD = _poolValuesUSDTotal.div(10 ** uint256(18));
        uint256 percentOfTAV = amountTotalUSD.mul(10000).div(poolValuesUSDTotalInUSD);
        if (newInvestor) {
            return (balanceLeavedOnThisContractProjectTokens.mul(percentOfTAV).div(10000).mul(11).div(10),percentOfTAV);
        } else {
            return (balanceLeavedOnThisContractProjectTokens.mul(percentOfTAV).div(10000),percentOfTAV);
        }
    }
    function investorUsdValue(address pool,address investor) public view returns (uint256,bool) {
        uint256 amountTotalUSD;
        bool newInvestor = false;
        uint256 lengthSender = IPool(pool).getDepositLength(investor);
        uint256 priceMainToUSDreturned;
        uint8 decimals;
        (priceMainToUSDreturned,decimals) = _oracleContract.getLatestPrice();
        for (uint256 i = 0; i < lengthSender; i++) {
            newInvestor = false;
            uint256 amountWei;          // Amount of funds deposited
            uint256 time;            // Deposit time
            (amountWei, time, , , , ) = IPool(pool).getDeposit(investor, i);
            uint256 timeToCompareWithNow = time + 4 weeks; // must hold at least 4 weeks
            if (now > timeToCompareWithNow) {// new investors hold more than 4 weeks
                address investedToken; // address(0) for ETH/BNB
                (, , , , , investedToken) = IPool(pool).getDeposit(investor, i);
                if (now < time + 8 weeks) { // check if new investors hold less than 8 weeks
                    newInvestor = true;// new investor
                }
                if (investedToken != address(0)) {
                    amountTotalUSD.add(amountWei.div(10 ** uint256(18))); // invested in BUSD
                } else {
                    amountTotalUSD.add(amountWei.mul(priceMainToUSDreturned).div(10 ** uint256(decimals)));
                    amountTotalUSD.div(10 ** uint256(18)); // invested in BNB
                }
            }
        }
        return (amountTotalUSD,newInvestor);
    }
    function checkTokensForClaim(address pool,address investor) public view returns (uint256,uint256,uint256,bool) {
        uint256 tokensForClaim;
        uint256 amountTotalUSD;
        uint256 percentOfTAV;
        bool newInvestor = false;
        if (_investorsReceivedMainTokenLatestDate[investor] > now - 4 weeks) {
            return (tokensForClaim,amountTotalUSD,percentOfTAV,newInvestor);// already receive reward 4 weeks ago
        }
        (amountTotalUSD, newInvestor) = investorUsdValue(pool,investor);
        uint256 tokensToDistribute;
        (tokensToDistribute, percentOfTAV) = _tokensToDistribute(amountTotalUSD,newInvestor);
        return (tokensToDistribute,amountTotalUSD,percentOfTAV,newInvestor);
    }
    event ClaimFreeTokens(address pool,uint256 amount, address investor,bool result);
    function claimFreeTokens(address pool) public returns (bool) {
        if (_addressesPools.contains(pool)) {
            uint256 tokensToPay;
            (tokensToPay,,,)= checkTokensForClaim(pool,msg.sender);
            bool result = false;
            if (tokensToPay > 0) {
                _tokenForTokensale().transfer(msg.sender, tokensToPay);
                _investorsReceivedMainTokenLatestDate[msg.sender] = now;
                result = true;
            }
            emit ClaimFreeTokens(pool,tokensToPay,msg.sender,result);
            return result;
        }
        return false;
    }

}

File 2 of 12 : TeamRole.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
import "./lib/Roles.sol";
contract TeamRole {
    using Roles for Roles.Role;
    event TeamAdded(address indexed account);
    event TeamRemoved(address indexed account);
    event OracleAdded(address indexed account);
    event OracleRemoved(address indexed account);
    Roles.Role private _team;
    Roles.Role private _oracle;
    constructor () internal {
        _addTeam(msg.sender);
    }
    modifier onlyTeam() {
        require(isTeam(msg.sender), "TeamRole: caller does not have the Team role");
        _;
    }
    modifier onlyRegistryOracle() {
        require(isOracle(msg.sender), "TeamRole: caller does not have the Oracle role");
        _;
    }

    function isOracle(address account) public view returns (bool) {
        return _oracle.has(account);
    }
    function getOracleAddresses() public view returns (address[] memory) {
        return _oracle.accounts;
    }

    function addOracle(address account) public onlyTeam {
        _addOracle(account);
    }
    function _addOracle(address account) internal {
        _oracle.add(account);
        emit OracleAdded(account);
    }
    function renounceOracle() public {
        _removeOracle(msg.sender);
    }
    function _removeOracle(address account) internal {
        _oracle.remove(account);
        emit OracleRemoved(account);
    }

    function isTeam(address account) public view returns (bool) {
        return _team.has(account);
    }
    function getTeamAddresses() public view returns (address[] memory) {
        return _team.accounts;
    }
    function addTeam(address account) public onlyTeam {
        _addTeam(account);
    }
    function renounceTeam() public onlyTeam {
        _removeTeam(msg.sender);
    }
    function _addTeam(address account) internal {
        _team.add(account);
        emit TeamAdded(account);
    }
    function _removeTeam(address account) internal {
        _team.remove(account);
        emit TeamRemoved(account);
    }
}

File 3 of 12 : Roles.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
library Roles {
    struct Role {
        address[] accounts;
        mapping (address => bool) bearer;
        mapping (bytes32 => uint256) _indexes;
    }
    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
        role.accounts.push(account);
        role._indexes[bytes32(uint256(account))] = role.accounts.length;
    }
    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        uint256 valueIndex = role._indexes[bytes32(uint256(account))];
        if (valueIndex != 0) { // Equivalent to contains()
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = role.accounts.length - 1;
            address lastValue = role.accounts[lastIndex];
            role.accounts[toDeleteIndex] = lastValue;
            role.accounts.pop();
            delete role._indexes[bytes32(uint256(account))];
        }
//        for (uint256 i; i < role.accounts.length; i++) {
//            if (role.accounts[i] == account) {
//                _removeIndexArray(i, role.accounts);
//                break;
//            }
//        }
        role.bearer[account] = false;
    }
    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
//    function _removeIndexArray(uint256 index, address[] storage array) internal virtual {
//        for(uint256 i = index; i < array.length-1; i++) {
//            array[i] = array[i+1];
//        }
//        array.pop();
//    }
}

File 4 of 12 : IAssetsManageTeam.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
interface IAssetsManageTeam {
    function _depositToken(address pool, address team, address token, uint256 amount) external returns (bool);
    function _withdraw(address pool, address team, uint256 amount) external returns (bool);
    function _withdrawTokensToStartup(address pool,address token, address team, uint256 amount) external returns (bool);
    function _request(bool withdraw, address pool, address team, uint256 maxValue) external returns(bool);
    function _requestTokensWidthdrawalFromStartup(address pool, address token, address team, uint256 maxValue) external returns(bool);
    function _approve(address pool, address team, address owner) external returns(bool);
    function _approveTokensWidthdrawalFromStartup(address pool, address token, address team, address owner) external returns(bool);
    function _disapprove(address pool, address team, address owner) external returns(bool);
    function _lock(address pool, address team, address owner) external returns(bool);
    function _unlock(address pool, address team, address owner) external returns(bool);
    function addManager(address account) external;
    function getPerformedOperationsLength(address pool, address owner) external view returns(uint256 length);
    function getPerformedOperations(address pool, address owner, uint256 index) external view returns(address token, uint256 amountToken, uint256 withdraw, uint256 time);
    function getRequests(address pool) external view returns(address[] memory);
    function getApproval(address pool) external view returns(address[] memory);
    function getRequestTeamAddress(address pool, address team) external view returns(bool lock, uint256 maxValueToken, uint256 madeValueToken, uint256 maxValue, uint256 madeValue);
    function getApproveTeamAddress(address pool, address team) external view returns(bool lock, uint256 maxValueToken, uint256 madeValueToken, uint256 maxValue, uint256 madeValueE);
}

File 5 of 12 : ICreator.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
interface ICreator {
    function createPool(string calldata name, uint256 lockPeriod,uint256 depositFixedFee,uint256 referralDepositFee,uint256 annualPercent,uint256 penaltyEarlyWithdraw,address superAdmin,address gPartner,address lPartner,address startupTeam) external returns (address);
}

File 6 of 12 : IERC20.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
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);
    function decimals() external view returns (uint8);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 7 of 12 : IOracle.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
interface IOracle {
    function getLatestPrice() external view returns ( uint256,uint8);
    function getCustomPrice(address aggregator) external view returns (uint256,uint8);
}

File 8 of 12 : IPool.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
interface IPool {
    function hasRole(bytes32 role, address account) external view returns (bool);
    function getRoleMemberCount(bytes32 role) external view returns (uint256);
    function getDeposit(address owner, uint256 index) external view returns(uint256 amount, uint256 time, uint256 lock_period, bool refund_authorize, uint256 amountWithdrawal, address investedToken);
    function getDepositLength(address owner) external view returns(uint256);
    function getMembersRole(bytes32 role) external view returns (address[] memory Accounts);
    function getInfoPool() external view returns(string memory name,bool isPublicPool, address token, uint256 locked);
    function getInfoPoolFees() external view returns(uint256 rate, uint256 depositFixedFee, uint256 referralDepositFee, uint256 annualPercent, uint256 penaltyEarlyWithdraw, uint256 totalInvestLpartner, uint256 premiumFee);
    function getReferral(address lPartner) external view returns (address);
    function getPoolValues() external view returns(uint256 poolValueUSD, uint256 poolValue, string memory proofOfValue);
    function getPoolPairReserves() external view     returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast, address token0, address token1, address weth,uint price0CumulativeLast,uint price1CumulativeLast);
    function _updatePool(string calldata name,bool isPublicPool, address token, uint256 locked, uint256 depositFixedFee, uint256 referralDepositFee, uint256 annualPercent, uint256 penaltyEarlyWithdraw) external returns (bool);
    function _setRate(uint256 rate) external returns (bool);
    function _setTeamReward(uint256 teamReward) external returns (bool);
    function _setPoolValues(uint256 poolValueUSD,uint256 poolValue, string calldata proofOfValue) external returns (bool);
    function _depositPoolRegistry(address sender, uint256 amount, uint256 feesMultipier) external returns (bool);
    function _depositTokenPoolRegistry(address payable sender, uint256 amount) external returns (bool);
    function _depositInvestmentInTokensToPool(address payable sender, uint256 amount, address token) external returns (bool);
    function _withdrawTeam(address payable sender, uint256 amount) external returns (bool);
    function _withdrawTokensToStartup(address payable sender,address token, uint256 amount) external returns (bool);
    function _returnsInTokensFromTeam(address payable sender,address token, uint256 amount) external returns (bool);
    function _activateDepositToPool() external returns (bool);
    function _disactivateDepositToPool() external returns (bool);
    function _setReferral(address sender, address lPartner, address referral) external returns (bool);
    function _approveWithdrawLpartner(address lPartner, uint256 index, uint256 amount, address investedToken) external returns (bool);
    function _withdrawLPartner(address payable sender) external returns (bool, uint256, address);
    function _withdrawSuperAdmin(address payable sender,address token, uint256 amount) external returns (bool);
    function grantRole(bytes32 role, address account) external;
    function revokeRole(bytes32 role, address account) external;
}

File 9 of 12 : IReturnInvestmentLpartner.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
interface IReturnInvestmentLpartner {
  function _request(address pool, address lPartner, uint256 index, uint256 amount, address token) external returns(bool);
  function _approve(address pool, address lPartner, address sender) external returns(bool);
  function _disapprove(address pool, address lPartner, address sender) external returns(bool);
  function getRequests(address pool) external view returns(address[] memory);
  function getRequestsLpartner(address pool, address lPartner) external view returns(uint256[] memory);
}

File 10 of 12 : IRoleModel.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
contract IRoleModel {
    bytes32 public constant SUPER_ADMIN_ROLE = keccak256("SUPER_ADMIN_ROLE");
    bytes32 public constant GENERAL_PARTNER_ROLE = keccak256("GENERAL_PARTNER_ROLE");
    bytes32 public constant LIMITED_PARTNER_ROLE = keccak256("LIMITED_PARTNER_ROLE");
    bytes32 public constant STARTUP_TEAM_ROLE = keccak256("STARTUP_TEAM_ROLE");
    bytes32 public constant POOL_REGISTRY = keccak256("POOL_REGISTRY");
    bytes32 public constant RETURN_INVESTMENT_LPARTNER = keccak256("RETURN_INVESTMENT_LPARTNER");
    bytes32 public constant ORACLE = keccak256("ORACLE");
    bytes32 public constant REFERER_ROLE = keccak256("REFERER_ROLE");
}

File 11 of 12 : SafeMath.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
library SafeMath {
     function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
         if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

File 12 of 12 : EnumerableSet.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
library EnumerableSet {
    struct Set {
        bytes32[] _values;
        address[] _collection;
        mapping (bytes32 => uint256) _indexes;
    }
    function _add(Set storage set, bytes32 value, address addressValue) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._collection.push(addressValue);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }
    function _remove(Set storage set, bytes32 value) private returns (bool) {
        uint256 valueIndex = set._indexes[value];
        if (valueIndex != 0) { // Equivalent to contains(set, value)
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;
            bytes32 lastValue = set._values[lastIndex];
            set._values[toDeleteIndex] = lastValue;
            set._values.pop();

            address lastvalueAddress = set._collection[lastIndex];
            set._collection[toDeleteIndex] = lastvalueAddress;
            set._collection.pop();

            set._indexes[lastValue] = toDeleteIndex + 1; // All indexes are 1-based
            delete set._indexes[value];
//            for(uint256 i = 0; i < set._collection.length; i++) {
//                if (set._collection[i] == addressValue) {
//                    _removeIndexArray(i, set._collection);
//                    break;
//                }
//            }
            return true;
        } else {
            return false;
        }
    }
    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }
    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }
    function _collection(Set storage set) private view returns (address[] memory) {
        return set._collection;    
    }
//    function _removeIndexArray(uint256 index, address[] storage array) internal virtual {
//        for(uint256 i = index; i < array.length-1; i++) {
//            array[i] = array[i+1];
//        }
//        array.pop();
//    }
    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        require(set._values.length > index, "EnumerableSet: index out of bounds");
        return set._values[index];
    }
    struct AddressSet {
        Set _inner;
    }
    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(value)), value);
    }
    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(value)));
    }
    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(value)));
    }
    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }
    function collection(AddressSet storage set) internal view returns (address[] memory) {
        return _collection(set._inner);
    }
    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint256(_at(set._inner, index)));
    }
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "byzantium",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"}],"name":"AddPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"lastRewardTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"poolValuesUSDTotal","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"balanceLeavedOnThisContractProjectTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTotalUSD","type":"uint256"},{"indexed":false,"internalType":"bool","name":"newInvestor","type":"bool"},{"indexed":false,"internalType":"uint256","name":"tokensToPay","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"poolValuesUSDTotalInUSD","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"percentOfTAV","type":"uint256"}],"name":"ClaimFreeProjectTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"investor","type":"address"},{"indexed":false,"internalType":"bool","name":"result","type":"bool"}],"name":"ClaimFreeTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"}],"name":"CreatePool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"}],"name":"DepositInvestmentInTokensToPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DepositToPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DepositTokenToPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OracleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OracleRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReturnsFromStartupTeam","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"}],"name":"ReturnsInTokensFromTeam","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"poolValueUSD","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"poolValue","type":"uint256"},{"indexed":false,"internalType":"string","name":"proofOfValue","type":"string"},{"indexed":false,"internalType":"bool","name":"result","type":"bool"}],"name":"SetPoolValues","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"address","name":"lPartner","type":"address"},{"indexed":false,"internalType":"address","name":"referral","type":"address"},{"indexed":false,"internalType":"bool","name":"result","type":"bool"}],"name":"SetReferral","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"TeamAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"TeamRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"}],"name":"UpdatePool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"}],"name":"WithdrawInTokensToStartupTeam","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"address","name":"lPartner","type":"address"},{"indexed":false,"internalType":"bool","name":"result","type":"bool"}],"name":"WithdrawLPartner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawToStartupTeam","type":"event"},{"inputs":[],"name":"GENERAL_PARTNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LIMITED_PARTNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ORACLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POOL_REGISTRY","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REFERER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RETURN_INVESTMENT_LPARTNER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STARTUP_TEAM_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SUPER_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"activateDepositToPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"poolAddress","type":"address"}],"name":"addPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"}],"name":"approveReqStartupTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"lPartner","type":"address"}],"name":"approveReturnInvestmentLpartner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"team","type":"address"}],"name":"approveTokensWidthdrawalFromStartup","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"investor","type":"address"}],"name":"checkTokensForClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"claimFreeTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"lockPeriod","type":"uint256"},{"internalType":"uint256","name":"depositFixedFee","type":"uint256"},{"internalType":"uint256","name":"referralDepositFee","type":"uint256"},{"internalType":"uint256","name":"annualPercent","type":"uint256"},{"internalType":"uint256","name":"penaltyEarlyWithdraw","type":"uint256"},{"internalType":"address","name":"superAdmin","type":"address"},{"internalType":"address","name":"gPartner","type":"address"},{"internalType":"address","name":"lPartner","type":"address"},{"internalType":"address","name":"startupTeam","type":"address"}],"name":"createPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"depositInvestmentInTokensToPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"pool","type":"address"}],"name":"depositToPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositTokenToPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"disactivateDepositToPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"}],"name":"disapproveReqStartupTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"lPartner","type":"address"}],"name":"disapproveReturnInvestmentLpartner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"feesMultipier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getAddrRequestsReturnInvestLpartner","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAddressCreatorInvestPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getAddressesRolesPool","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getApprovalReqTeam","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"}],"name":"getApproveTeamAddress","outputs":[{"internalType":"bool","name":"lock","type":"bool"},{"internalType":"uint256","name":"maxValueToken","type":"uint256"},{"internalType":"uint256","name":"madeValueToken","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"uint256","name":"madeValue","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAssetManageTeamContract","outputs":[{"internalType":"contract IAssetsManageTeam","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"aggregator","type":"address"}],"name":"getCustomPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getDepositPool","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"lock_period","type":"uint256"},{"internalType":"bool","name":"refund_authorize","type":"bool"},{"internalType":"uint256","name":"amountWithdrawal","type":"uint256"},{"internalType":"uint256","name":"lenghtDeposit","type":"uint256"},{"internalType":"address","name":"investedToken","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getInfoPool","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"isPublicPool","type":"bool"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"locked","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getInfoPoolFees","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"depositFixedFee","type":"uint256"},{"internalType":"uint256","name":"referralDepositFee","type":"uint256"},{"internalType":"uint256","name":"annualPercent","type":"uint256"},{"internalType":"uint256","name":"penaltyEarlyWithdraw","type":"uint256"},{"internalType":"uint256","name":"totalInvestLpartner","type":"uint256"},{"internalType":"uint256","name":"premiumFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getInvestedFunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOracleAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOracleContract","outputs":[{"internalType":"contract IOracle","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getPerformedOperationsTeamStartup","outputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"withdrawAmount","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolPairReserves","outputs":[{"internalType":"uint112","name":"reserve0","type":"uint112"},{"internalType":"uint112","name":"reserve1","type":"uint112"},{"internalType":"uint32","name":"blockTimestampLast","type":"uint32"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"address","name":"weth","type":"address"},{"internalType":"uint256","name":"price0CumulativeLast","type":"uint256"},{"internalType":"uint256","name":"price1CumulativeLast","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolValues","outputs":[{"internalType":"uint256","name":"poolValueUSD","type":"uint256"},{"internalType":"uint256","name":"poolValue","type":"uint256"},{"internalType":"string","name":"proofOfValue","type":"string"},{"internalType":"uint256","name":"poolValuesTotal","type":"uint256"},{"internalType":"uint256","name":"poolValuesUSDTotal","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPools","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"lPartner","type":"address"}],"name":"getReferral","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"}],"name":"getRequestTeamAddress","outputs":[{"internalType":"bool","name":"lock","type":"bool"},{"internalType":"uint256","name":"maxValueToken","type":"uint256"},{"internalType":"uint256","name":"madeValueToken","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"uint256","name":"madeValue","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"lPartner","type":"address"}],"name":"getRequestsReturnInvestLpartner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getRequestsTeam","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReturnInvestmentLpartner","outputs":[{"internalType":"contract IReturnInvestmentLpartner","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getReturnedFunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTeamAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRoleInvestmentPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"investor","type":"address"}],"name":"investorUsdValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOracle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"}],"name":"lockStartupTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"requestReturnInvestmentLpartner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"withdraw","type":"bool"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"maxValue","type":"uint256"}],"name":"requestStartupTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"maxValue","type":"uint256"}],"name":"requestTokensWidthdrawalFromStartup","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"pool","type":"address"}],"name":"returnsFromStartupTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address payable","name":"pool","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"returnsInTokensFromTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRoleInvestmentPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"creatorContract","type":"address"}],"name":"setAddressCreatorInvestPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IAssetsManageTeam","name":"addrContract","type":"address"}],"name":"setAssetManageTeamContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IOracle","name":"_oracle","type":"address"}],"name":"setOracleContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"poolValueUSD","type":"uint256"},{"internalType":"uint256","name":"poolValue","type":"uint256"},{"internalType":"string","name":"proofOfValue","type":"string"}],"name":"setPoolValues","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setPriceToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"lPartner","type":"address"},{"internalType":"address","name":"referral","type":"address"}],"name":"setReferral","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IReturnInvestmentLpartner","name":"addrContract","type":"address"}],"name":"setReturnInvestmentLpartner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"teamReward","type":"uint256"}],"name":"setTeamReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"}],"name":"unlockStartupTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"publicPool","type":"bool"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"locked","type":"uint256"},{"internalType":"uint256","name":"depositFixedFee","type":"uint256"},{"internalType":"uint256","name":"referralDepositFee","type":"uint256"},{"internalType":"uint256","name":"annualPercent","type":"uint256"},{"internalType":"uint256","name":"penaltyEarlyWithdraw","type":"uint256"}],"name":"updatePool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawInTokensToStartupTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"withdrawLPartner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawSuperAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawToStartupTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5062000026336401000000006200002c810204565b620001e1565b62000047600082640100000000620052206200007e82021704565b604051600160a060020a038216907f3f5f1db80208f0d453083a86e16909cecc1e95e2618d5d927c93ace22b8200fc90600090a250565b6200009382826401000000006200015b810204565b156200010057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b600160a060020a03166000818152600183810160209081526040808420805460ff191684179055855492830186558584528184209092018054600160a060020a03191685179055845493835260029094019093529190912055565b6000600160a060020a038216620001be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620060616022913960400191505060405180910390fd5b50600160a060020a03166000908152600191909101602052604090205460ff1690565b615e7080620001f16000396000f3fe60806040526004361061044b5760003560e060020a900480637a3627ff11610238578063c1abd75711610132578063df5dd1a5116100ba578063e91555481161007e578063e915554814611632578063e9ec6e0b14611647578063f121a2fe1461170e578063f6f8996b146117e4578063fe070e9d146118175761044b565b8063df5dd1a5146114d0578063e283e52814611503578063e3bbb56514611587578063e72f7fa41461159c578063e7d9d5a9146115cf5761044b565b8063cfddbd8511610101578063cfddbd85146113df578063d2a4671b14611412578063d67a249c14611445578063d914cd4b14611488578063d9a431b3146114bb5761044b565b8063c1abd75714611349578063ca701d291461135e578063cbc5906e14611391578063cc446eb2146113a65761044b565b806393f50200116101c0578063be12da6211610184578063be12da621461110a578063beeb7bde14611145578063bf9d8cc31461117e578063bfb885a914611271578063c159a382146113085761044b565b806393f5020014610fd857806396a3e1f414610ffe578063a97e5c9314611039578063b463a75c1461106c578063b48572531461109f5761044b565b806389e527711161020757806389e5277114610e0357806389fd4d3d14610e185780638d09ce9314610e665780638e8b4c8514610ea157806392a7e39114610ee65761044b565b80637a3627ff14610d19578063816fb80114610d54578063823a87da14610d8d578063871f470d14610dc85761044b565b80634335ac30116103495780635394efed116102d15780635d255e81116102955780635d255e8114610c5e578063673a2a1f14610c9157806369a5976e14610ca65780637330aba214610ced5780637837efdc14610d025761044b565b80635394efed14610b8957806354b0d2a414610bbc578063570833d314610bd157806358714c1014610c045780635ac8b00514610c495761044b565b80634967148b116103185780634967148b14610a43578063496ccd9b14610a8657806349db9c9714610ab95780634b5d042f14610af25780634f899d6414610b465761044b565b80634335ac30146109755780634460bdd6146109b857806344a08b8c146109cd57806347bf5a7114610a005761044b565b806324851914116103d757806332fd30671161039b57806332fd30671461085457806338013f021461088f5780633c4fe961146108a457806340a5a151146108e75780634325252a1461094f5761044b565b806324851914146106cf578063261fef021461070257806327ee24a0146107175780632da0154c1461074a5780633070d515146107855761044b565b806308fdaedd1161041e57806308fdaedd1461059857806319c59f561461061b5780631a88df8a1461064e5780631cda4a8d1461067f57806322529fff146106945761044b565b806303889c7a1461045057806303e78e631461049d57806306ad92e9146104e25780630722559514610555575b600080fd5b34801561045c57600080fd5b506104896004803603604081101561047357600080fd5b50600160a060020a03813516906020013561182c565b604080519115158252519081900360200190f35b3480156104a957600080fd5b506104d0600480360360208110156104c057600080fd5b5035600160a060020a0316611911565b60408051918252519081900360200190f35b3480156104ee57600080fd5b506105256004803603606081101561050557600080fd5b50600160a060020a03813581169160208101359091169060400135611974565b60408051600160a060020a0390951685526020850193909352838301919091526060830152519081900360800190f35b34801561056157600080fd5b506104896004803603606081101561057857600080fd5b50600160a060020a03813581169160208101359160409091013516611a40565b3480156105a457600080fd5b506105cb600480360360208110156105bb57600080fd5b5035600160a060020a0316611bb1565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156106075781810151838201526020016105ef565b505050509050019250505060405180910390f35b34801561062757600080fd5b506105cb6004803603602081101561063e57600080fd5b5035600160a060020a0316611ceb565b34801561065a57600080fd5b50610663611d55565b60408051600160a060020a039092168252519081900360200190f35b34801561068b57600080fd5b506104d0611d64565b3480156106a057600080fd5b50610663600480360360408110156106b757600080fd5b50600160a060020a0381358116916020013516611d99565b3480156106db57600080fd5b50610489600480360360208110156106f257600080fd5b5035600160a060020a0316611e27565b34801561070e57600080fd5b506104d0611e39565b34801561072357600080fd5b506104d06004803603602081101561073a57600080fd5b5035600160a060020a0316611e6e565b34801561075657600080fd5b506105cb6004803603604081101561076d57600080fd5b50600160a060020a0381358116916020013516611e89565b34801561079157600080fd5b50610489600480360360808110156107a857600080fd5b600160a060020a0382351691602081013591604082013591908101906080810160608201356401000000008111156107df57600080fd5b8201836020820111156107f157600080fd5b8035906020019184600183028401116401000000008311171561081357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611fcc945050505050565b34801561086057600080fd5b506104896004803603604081101561087757600080fd5b50600160a060020a03813581169160200135166123b2565b34801561089b57600080fd5b506104d061243f565b3480156108b057600080fd5b50610489600480360360608110156108c757600080fd5b50600160a060020a03813581169160208101359091169060400135612474565b3480156108f357600080fd5b506109226004803603604081101561090a57600080fd5b50600160a060020a0381358116916020013516612528565b60408051951515865260208601949094528484019290925260608401526080830152519081900360a00190f35b6104896004803603602081101561096557600080fd5b5035600160a060020a03166125f6565b34801561098157600080fd5b506104896004803603606081101561099857600080fd5b50600160a060020a03813581169160208101359091169060400135612774565b3480156109c457600080fd5b506104d0612866565b3480156109d957600080fd5b50610489600480360360208110156109f057600080fd5b5035600160a060020a031661289b565b348015610a0c57600080fd5b5061048960048036036060811015610a2357600080fd5b50600160a060020a03813581169160208101359160409091013516612954565b348015610a4f57600080fd5b5061048960048036036060811015610a6657600080fd5b50600160a060020a03813581169160208101359091169060400135612e08565b348015610a9257600080fd5b5061048960048036036020811015610aa957600080fd5b5035600160a060020a0316612e7a565b348015610ac557600080fd5b5061048960048036036040811015610adc57600080fd5b50600160a060020a038135169060200135612ee8565b348015610afe57600080fd5b50610b2d60048036036040811015610b1557600080fd5b50600160a060020a0381358116916020013516612faf565b6040805192835290151560208301528051918290030190f35b348015610b5257600080fd5b5061048960048036036060811015610b6957600080fd5b50600160a060020a038135811691602081013591604090910135166132ca565b348015610b9557600080fd5b5061048960048036036020811015610bac57600080fd5b5035600160a060020a0316613417565b348015610bc857600080fd5b50610663613485565b348015610bdd57600080fd5b5061048960048036036020811015610bf457600080fd5b5035600160a060020a0316613494565b348015610c1057600080fd5b5061048960048036036060811015610c2757600080fd5b50600160a060020a0381358116916020810135821691604090910135166135d0565b348015610c5557600080fd5b506104d0613651565b348015610c6a57600080fd5b5061048960048036036020811015610c8157600080fd5b5035600160a060020a0316613686565b348015610c9d57600080fd5b506105cb61370d565b348015610cb257600080fd5b5061048960048036036080811015610cc957600080fd5b50600160a060020a038135811691602081013591604082013591606001351661371e565b348015610cf957600080fd5b506105cb6137da565b348015610d0e57600080fd5b50610d1761383f565b005b348015610d2557600080fd5b5061048960048036036040811015610d3c57600080fd5b50600160a060020a038135811691602001351661384a565b348015610d6057600080fd5b5061048960048036036040811015610d7757600080fd5b50600160a060020a0381351690602001356138c3565b348015610d9957600080fd5b5061048960048036036040811015610db057600080fd5b50600160a060020a0381358116916020013516613955565b348015610dd457600080fd5b5061092260048036036040811015610deb57600080fd5b50600160a060020a03813581169160200135166139ce565b348015610e0f57600080fd5b506105cb613a48565b348015610e2457600080fd5b50610e4b60048036036020811015610e3b57600080fd5b5035600160a060020a0316613aaa565b6040805192835260ff90911660208301528051918290030190f35b348015610e7257600080fd5b5061048960048036036040811015610e8957600080fd5b50600160a060020a0381358116916020013516613b4d565b348015610ead57600080fd5b5061048960048036036060811015610ec457600080fd5b50600160a060020a038135811691602081013582169160409091013516613bc6565b348015610ef257600080fd5b506104896004803603610120811015610f0a57600080fd5b600160a060020a038235169190810190604081016020820135640100000000811115610f3557600080fd5b820183602082011115610f4757600080fd5b80359060200191846001830284011164010000000083111715610f6957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505050803515159150600160a060020a036020820135169060408101359060608101359060808101359060a08101359060c00135613daf565b61048960048036036020811015610fee57600080fd5b5035600160a060020a0316613f69565b34801561100a57600080fd5b506104896004803603604081101561102157600080fd5b50600160a060020a0381358116916020013516614107565b34801561104557600080fd5b506104896004803603602081101561105c57600080fd5b5035600160a060020a0316614180565b34801561107857600080fd5b50610d176004803603602081101561108f57600080fd5b5035600160a060020a0316614193565b3480156110ab57600080fd5b506110d2600480360360208110156110c257600080fd5b5035600160a060020a03166141e6565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b34801561111657600080fd5b506104896004803603604081101561112d57600080fd5b50600160a060020a038135811691602001351661428f565b34801561115157600080fd5b506104896004803603604081101561116857600080fd5b50600160a060020a038135169060200135614308565b34801561118a57600080fd5b5061048960048036036101408110156111a257600080fd5b8101906020810181356401000000008111156111bd57600080fd5b8201836020820111156111cf57600080fd5b803590602001918460018302840111640100000000831117156111f157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050823593505050602081013590604081013590606081013590608081013590600160a060020a0360a082013581169160c081013582169160e08201358116916101000135166143ec565b34801561127d57600080fd5b506112a46004803603602081101561129457600080fd5b5035600160a060020a031661461b565b604080516dffffffffffffffffffffffffffff998a16815297909816602088015263ffffffff90951686880152600160a060020a039384166060870152918316608086015290911660a084015260c083015260e08201529051908190036101000190f35b34801561131457600080fd5b506104896004803603606081101561132b57600080fd5b508035151590600160a060020a0360208201351690604001356146d5565b34801561135557600080fd5b506104d0614755565b34801561136a57600080fd5b506104d06004803603602081101561138157600080fd5b5035600160a060020a031661478a565b34801561139d57600080fd5b506104d06147a5565b3480156113b257600080fd5b506105cb600480360360408110156113c957600080fd5b50600160a060020a0381351690602001356147da565b3480156113eb57600080fd5b506104896004803603602081101561140257600080fd5b5035600160a060020a0316614823565b34801561141e57600080fd5b506104896004803603602081101561143557600080fd5b5035600160a060020a031661495b565b34801561145157600080fd5b506104896004803603606081101561146857600080fd5b50600160a060020a038135811691602081013590911690604001356149c9565b34801561149457600080fd5b50610489600480360360208110156114ab57600080fd5b5035600160a060020a0316614abb565b3480156114c757600080fd5b50610d17614bda565b3480156114dc57600080fd5b50610d17600480360360208110156114f357600080fd5b5035600160a060020a0316614c2a565b34801561150f57600080fd5b506115466004803603606081101561152657600080fd5b50600160a060020a03813581169160208101359091169060400135614c7a565b604080519788526020880196909652868601949094529115156060860152608085015260a0840152600160a060020a031660c0830152519081900360e00190f35b34801561159357600080fd5b50610663614dd9565b3480156115a857600080fd5b50610489600480360360208110156115bf57600080fd5b5035600160a060020a0316614de8565b3480156115db57600080fd5b5061160a600480360360408110156115f257600080fd5b50600160a060020a0381358116916020013516614e56565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b34801561163e57600080fd5b50610663614ecc565b34801561165357600080fd5b5061167a6004803603602081101561166a57600080fd5b5035600160a060020a0316614edb565b6040518086815260200185815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b838110156116cf5781810151838201526020016116b7565b50505050905090810190601f1680156116fc5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b34801561171a57600080fd5b506117416004803603602081101561173157600080fd5b5035600160a060020a0316615030565b60405180806020018515151515815260200184600160a060020a0316600160a060020a03168152602001838152602001828103825286818151815260200191508051906020019080838360005b838110156117a657818101518382015260200161178e565b50505050905090810190601f1680156117d35780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b3480156117f057600080fd5b506105cb6004803603602081101561180757600080fd5b5035600160a060020a0316615181565b34801561182357600080fd5b506104d06151eb565b604080517fe89ec45f000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051600091600160a060020a0385169163e89ec45f9160448082019260209290919082900301818787803b15801561189757600080fd5b505af11580156118ab573d6000803e3d6000fd5b505050506040513d60208110156118c157600080fd5b505060408051600160a060020a03851681526020810184905281517fbae2fb69b5bc6dc5e0d54949e111f231a4581d02d4bf88d28a1d8457d5754223929181900390910190a15060015b92915050565b60008061191d836152da565b9050620186a0811561196b576910f0cf064dd592000000611967620186a061195b8361194f878463ffffffff61535016565b9063ffffffff6153ac16565b9063ffffffff6153ee16565b9150505b9150505b919050565b600754604080517fb95b78d3000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301528581166024830152604482018590529151600093849384938493919092169163b95b78d3916064808301926080929190829003018186803b1580156119f257600080fd5b505afa158015611a06573d6000803e3d6000fd5b505050506040513d6080811015611a1c57600080fd5b50805160208201516040830151606090930151919a90995091975095509350505050565b604080517f53555045525f41444d494e5f524f4c45000000000000000000000000000000008152815190819003601001812060e260020a632474521502825260048201523360248201529051600091600160a060020a038616916391d1485491604480820192602092909190829003018186803b158015611ac057600080fd5b505afa158015611ad4573d6000803e3d6000fd5b505050506040513d6020811015611aea57600080fd5b5051611b2a5760405160e560020a62461bcd028152600401808060200182810382526029815260200180615d476029913960400191505060405180910390fd5b83600160a060020a031663d547741f84846040518363ffffffff1660e060020a0281526004018083815260200182600160a060020a0316600160a060020a0316815260200192505050600060405180830381600087803b158015611b8d57600080fd5b505af1158015611ba1573d6000803e3d6000fd5b50505050600190505b9392505050565b600754604080517f804e44f3000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151606093929092169163804e44f391602480820192600092909190829003018186803b158015611c1b57600080fd5b505afa158015611c2f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611c5857600080fd5b8101908080516040519392919084640100000000821115611c7857600080fd5b908301906020820185811115611c8d57600080fd5b8251866020820283011164010000000082111715611caa57600080fd5b82525081516020918201928201910280838360005b83811015611cd7578181015183820152602001611cbf565b505050509050016040525050509050919050565b600854604080517f804e44f3000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151606093929092169163804e44f391602480820192600092909190829003018186803b158015611c1b57600080fd5b600654600160a060020a031690565b604080517f504f4f4c5f5245474953545259000000000000000000000000000000000000008152905190819003600d01902081565b600082600160a060020a0316633b0f0f2f836040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a0316815260200191505060206040518083038186803b158015611df457600080fd5b505afa158015611e08573d6000803e3d6000fd5b505050506040513d6020811015611e1e57600080fd5b50519392505050565b600061190b818363ffffffff61544b16565b604080517f52455455524e5f494e564553544d454e545f4c504152544e45520000000000008152905190819003601a01902081565b600160a060020a03166000908152600d602052604090205490565b600854604080517f39926c43000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301528481166024830152915160609392909216916339926c4391604480820192600092909190829003018186803b158015611efb57600080fd5b505afa158015611f0f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611f3857600080fd5b8101908080516040519392919084640100000000821115611f5857600080fd5b908301906020820185811115611f6d57600080fd5b8251866020820283011164010000000082111715611f8a57600080fd5b82525081516020918201928201910280838360005b83811015611fb7578181015183820152602001611f9f565b50505050905001604052505050905092915050565b6000611fd733614180565b6120155760405160e560020a62461bcd02815260040180806020018281038252602e815260200180615cb5602e913960400191505060405180910390fd5b612026600a8663ffffffff6154b816565b156123a657600160a060020a0385166000818152600f60209081526040808320879055601190915280822087905580517ff66fdcca000000000000000000000000000000000000000000000000000000008152905191928392909163f66fdcca9160048083019286929190829003018186803b1580156120a557600080fd5b505afa1580156120b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260608110156120e257600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561210d57600080fd5b90830190602082018581111561212257600080fd5b825164010000000081118282018810171561213c57600080fd5b82525081516020918201929091019080838360005b83811015612169578181015183820152602001612151565b50505050905090810190601f1680156121965780820380516001836020036101000a031916815260200191505b50604052505050508092508193505050600087600160a060020a031663bd8afbf88888886040518463ffffffff1660e060020a0281526004018084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156122155781810151838201526020016121fd565b50505050905090810190601f1680156122425780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561226357600080fd5b505af1158015612277573d6000803e3d6000fd5b505050506040513d602081101561228d57600080fd5b50516010549091506122ab90879061195b908563ffffffff6154cd16565b6010556012546122c790889061195b908663ffffffff6154cd16565b6012819055507fe86b9016c5bcdd538d2d47f4340a948ec6976098744ba3b1427b8d6aa5c2ed3488888888856040518086600160a060020a0316600160a060020a031681526020018581526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b8381101561235e578181015183820152602001612346565b50505050905090810190601f16801561238b5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a192506123aa915050565b5060005b949350505050565b600754604080517fca2a33d9000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015284811660248301523360448301529151600093929092169163ca2a33d99160648082019260209290919082900301818787803b15801561242b57600080fd5b505af1158015611e08573d6000803e3d6000fd5b604080517f4f5241434c4500000000000000000000000000000000000000000000000000008152905190819003600601902081565b600754604080517f2beee459000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015285811660248301523360448301526064820185905291516000939290921691632beee4599160848082019260209290919082900301818787803b1580156124f457600080fd5b505af1158015612508573d6000803e3d6000fd5b505050506040513d602081101561251e57600080fd5b5051949350505050565b600754604080517f40a5a151000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015284811660248301529151600093849384938493849392909216916340a5a1519160448082019260a092909190829003018186803b1580156125a257600080fd5b505afa1580156125b6573d6000803e3d6000fd5b505050506040513d60a08110156125cc57600080fd5b508051602082015160408301516060840151608090940151929b919a509850919650945092505050565b6000612609600a8363ffffffff6154b816565b1561276c57604080517f535441525455505f5445414d5f524f4c450000000000000000000000000000008152815190819003601101812060e260020a632474521502825260048201523360248201529051600160a060020a038416916391d14854916044808301926020929190829003018186803b15801561268a57600080fd5b505afa15801561269e573d6000803e3d6000fd5b505050506040513d60208110156126b457600080fd5b50516126f45760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615d70602c913960400191505060405180910390fd5b604051600160a060020a038316903480156108fc02916000818181858888f19350505050158015612729573d6000803e3d6000fd5b506040805133815234602082015281517fba644eb9dc8f6c5dd448aaa21f615b6fee77f1f7dfdf71645b4a8972f019877a929181900390910190a150600161196f565b506000919050565b604080517f594ce4c7000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a03848116602483015260448201849052915160009286169163594ce4c791606480830192602092919082900301818787803b1580156127e657600080fd5b505af11580156127fa573d6000803e3d6000fd5b505050506040513d602081101561281057600080fd5b505060408051600160a060020a0380871682526020820185905285168183015290517f995954841d25c2ca3b83c9a3f665ce4bfa4ac1a81d4f9be29f275fad4e8d40269181900360600190a15060019392505050565b604080517f53555045525f41444d494e5f524f4c45000000000000000000000000000000008152905190819003601001902081565b60006128a633611e27565b6128e45760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615e0f602c913960400191505060405180910390fd5b81600160a060020a0316636176dd9f6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561292257600080fd5b505af1158015612936573d6000803e3d6000fd5b505050506040513d602081101561294c57600080fd5b505192915050565b60008083116129975760405160e560020a62461bcd02815260040180806020018281038252603e815260200180615d9c603e913960400191505060405180910390fd5b6000809050600080905085600160a060020a031663fedf51e96040518163ffffffff1660e060020a02815260040160e06040518083038186803b1580156129dd57600080fd5b505afa1580156129f1573d6000803e3d6000fd5b505050506040513d60e0811015612a0757600080fd5b50602081015160409091015190925090506000612a22613a48565b600181518110612a2e57fe5b60200260200101519050600087600160a060020a0316633b0f0f2f336040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a0316815260200191505060206040518083038186803b158015612a9357600080fd5b505afa158015612aa7573d6000803e3d6000fd5b505050506040513d6020811015612abd57600080fd5b5051905060008080612ada87878c87612ad533611911565b61550f565b80945081955082935050505088600160a060020a03166323b872dd338d846040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a031681526020018281526020019350505050602060405180830381600087803b158015612b6357600080fd5b505af1158015612b77573d6000803e3d6000fd5b505050506040513d6020811015612b8d57600080fd5b5050604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a038781166024830152604482018690529151918b16916323b872dd916064808201926020929091908290030181600087803b158015612c0157600080fd5b505af1158015612c15573d6000803e3d6000fd5b505050506040513d6020811015612c2b57600080fd5b50508115612cd257604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a038681166024830152604482018590529151918b16916323b872dd916064808201926020929091908290030181600087803b158015612ca557600080fd5b505af1158015612cb9573d6000803e3d6000fd5b505050506040513d6020811015612ccf57600080fd5b50505b604080517ff45efe67000000000000000000000000000000000000000000000000000000008152336004820152602481018c9052600160a060020a038b811660448301529151918d169163f45efe67916064808201926020929091908290030181600087803b158015612d4457600080fd5b505af1158015612d58573d6000803e3d6000fd5b505050506040513d6020811015612d6e57600080fd5b5050600160a060020a0389166000908152600d6020526040902054612d99908b63ffffffff6153ee16565b600160a060020a03808b166000818152600d6020908152604091829020949094558051928f1683529282018d90528183015290517f912199453d9a77d92d283e62a861f39a6d554a984aefedbd122fdec8a3ceb8279181900360600190a15060019a9950505050505050505050565b604080517f7fdbc08b000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a038481166024830152604482018490529151600092861691637fdbc08b91606480830192602092919082900301818787803b1580156124f457600080fd5b6000612e8533611e27565b612ec35760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615e0f602c913960400191505060405180910390fd5b5060098054600160a060020a038316600160a060020a03199091161790556001919050565b6000612ef333611e27565b612f315760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615e0f602c913960400191505060405180910390fd5b82600160a060020a031663ff65f332836040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b158015612f7a57600080fd5b505af1158015612f8e573d6000803e3d6000fd5b505050506040513d6020811015612fa457600080fd5b506001949350505050565b60008060008060009050600086600160a060020a03166387ac828a876040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a0316815260200191505060206040518083038186803b15801561301457600080fd5b505afa158015613028573d6000803e3d6000fd5b505050506040513d602081101561303e57600080fd5b5051600954604080517f8e15f47300000000000000000000000000000000000000000000000000000000815281519394506000938493600160a060020a031692638e15f4739260048082019391829003018186803b15801561309f57600080fd5b505afa1580156130b3573d6000803e3d6000fd5b505050506040513d60408110156130c957600080fd5b508051602090910151909250905060005b838110156132b857600094506000808b600160a060020a0316632726b5068c856040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a031681526020018281526020019250505060c06040518083038186803b15801561314a57600080fd5b505afa15801561315e573d6000803e3d6000fd5b505050506040513d60c081101561317457600080fd5b50805160209091015190925090506224ea008101428110156132ad5760008d600160a060020a0316632726b5068e876040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a031681526020018281526020019250505060c06040518083038186803b1580156131f357600080fd5b505afa158015613207573d6000803e3d6000fd5b505050506040513d60c081101561321d57600080fd5b5060a0015190506249d400830142101561323657600198505b600160a060020a038116156132735761326d61326085670de0b6b3a764000063ffffffff6153ac16565b8b9063ffffffff6153ee16565b506132ab565b61329061326060ff8816600a0a61194f878b63ffffffff61535016565b506132a98a670de0b6b3a764000063ffffffff6153ac16565b505b505b5050506001016130da565b509395509193505050505b9250929050565b604080517f53555045525f41444d494e5f524f4c45000000000000000000000000000000008152815190819003601001812060e260020a632474521502825260048201523360248201529051600091600160a060020a038616916391d1485491604480820192602092909190829003018186803b15801561334a57600080fd5b505afa15801561335e573d6000803e3d6000fd5b505050506040513d602081101561337457600080fd5b50516133b45760405160e560020a62461bcd028152600401808060200182810382526029815260200180615d476029913960400191505060405180910390fd5b83600160a060020a0316632f2ff15d84846040518363ffffffff1660e060020a0281526004018083815260200182600160a060020a0316600160a060020a0316815260200192505050600060405180830381600087803b158015611b8d57600080fd5b600061342233611e27565b6134605760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615e0f602c913960400191505060405180910390fd5b5060088054600160a060020a038316600160a060020a03199091161790556001919050565b600754600160a060020a031690565b60008060008084600160a060020a031663d5c5e434336040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050606060405180830381600087803b1580156134f557600080fd5b505af1158015613509573d6000803e3d6000fd5b505050506040513d606081101561351f57600080fd5b50805160208201516040909201519094509092509050821561357e57600160a060020a0381166000908152600e6020526040902054613564908363ffffffff6153ee16565b600160a060020a0382166000908152600e60205260409020555b60408051600160a060020a03871681523360208201528415158183015290517f1e3e48260a5e7f8f8703b38012c2a629ef108129429301a85745e3a9e4120ec49181900360600190a150909392505050565b600754604080517f62cb27f5000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015285811660248301528481166044830152336064830152915160009392909216916362cb27f59160848082019260209290919082900301818787803b1580156124f457600080fd5b604080517f524546455245525f524f4c4500000000000000000000000000000000000000008152905190819003600c01902081565b600061369133611e27565b6136cf5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615e0f602c913960400191505060405180910390fd5b81600160a060020a0316633049ea336040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561292257600080fd5b6060613719600a61559c565b905090565b600854604080517f6188e37b000000000000000000000000000000000000000000000000000000008152600160a060020a0387811660048301523360248301526044820187905260648201869052848116608483015291516000939290921691636188e37b9160a48082019260209290919082900301818787803b1580156137a557600080fd5b505af11580156137b9573d6000803e3d6000fd5b505050506040513d60208110156137cf57600080fd5b505195945050505050565b6060600360000180548060200260200160405190810160405280929190818152602001828054801561383557602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311613817575b5050505050905090565b613848336155a7565b565b600754604080517fc5c0291f000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015284811660248301523360448301529151600093929092169163c5c0291f9160648082019260209290919082900301818787803b15801561242b57600080fd5b60006138ce33611e27565b61390c5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615e0f602c913960400191505060405180910390fd5b82600160a060020a03166394707a95836040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b158015612f7a57600080fd5b600854604080517fc5c0291f000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015284811660248301523360448301529151600093929092169163c5c0291f9160648082019260209290919082900301818787803b15801561242b57600080fd5b600754604080517f871f470d000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152848116602483015291516000938493849384938493929092169163871f470d9160448082019260a092909190829003018186803b1580156125a257600080fd5b60606000800180548060200260200160405190810160405280929190818152602001828054801561383557602002820191906000526020600020908154600160a060020a03168152600190910190602001808311613817575050505050905090565b600954604080517f89fd4d3d000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152825160009485949216926389fd4d3d926024808301939192829003018186803b158015613b1057600080fd5b505afa158015613b24573d6000803e3d6000fd5b505050506040513d6040811015613b3a57600080fd5b5080516020909101519092509050915091565b600854604080517fca2a33d9000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015284811660248301523360448301529151600093929092169163ca2a33d99160648082019260209290919082900301818787803b15801561242b57600080fd5b604080517f4c494d495445445f504152544e45525f524f4c450000000000000000000000008152815190819003601401812060e260020a63247452150282526004820152600160a060020a03848116602483015291516000928616916391d14854916044808301926020929190829003018186803b158015613c4757600080fd5b505afa158015613c5b573d6000803e3d6000fd5b505050506040513d6020811015613c7157600080fd5b5051613cb15760405160e560020a62461bcd028152600401808060200182810382526035815260200180615dda6035913960400191505060405180910390fd5b604080517fcb4ff7f2000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a0385811660248301528481166044830152915160009287169163cb4ff7f291606480830192602092919082900301818787803b158015613d2457600080fd5b505af1158015613d38573d6000803e3d6000fd5b505050506040513d6020811015613d4e57600080fd5b505160408051600160a060020a0380891682528088166020830152861681830152821515606082015290519192507f304fcfd9500761e683ae3dba7a900542837bb3b1988ae8d48f0aa8551d1dc9e1919081900360800190a1949350505050565b6000613dba33611e27565b613df85760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615e0f602c913960400191505060405180910390fd5b89600160a060020a031663b06fd88f8a8a8a8a8a8a8a8a6040518963ffffffff1660e060020a02815260040180806020018915151515815260200188600160a060020a0316600160a060020a0316815260200187815260200186815260200185815260200184815260200183815260200182810382528a818151815260200191508051906020019080838360005b83811015613e9e578181015183820152602001613e86565b50505050905090810190601f168015613ecb5780820380516001836020036101000a031916815260200191505b509950505050505050505050602060405180830381600087803b158015613ef157600080fd5b505af1158015613f05573d6000803e3d6000fd5b505050506040513d6020811015613f1b57600080fd5b505060408051600160a060020a038c16815290517f4349687687e69ab0479266619127f66a1d429752cd8accfef157633fa10875d29181900360200190a15060019998505050505050505050565b6000613f7c600a8363ffffffff6154b816565b1561276c576040513490600160a060020a0384169082156108fc029083906000818181858888f19350505050158015613fb9573d6000803e3d6000fd5b5082600160a060020a031663d69df4c73383613fd433611911565b6040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018381526020018281526020019350505050602060405180830381600087803b15801561402d57600080fd5b505af1158015614041573d6000803e3d6000fd5b505050506040513d602081101561405757600080fd5b505060008052600d6020527f81955a0a11e65eac625c29e8882660bae4e165a75d72780094acae8ece9a29ee54614094908263ffffffff6153ee16565b60008052600d60209081527f81955a0a11e65eac625c29e8882660bae4e165a75d72780094acae8ece9a29ee919091556040805133815291820183905280517fccda644458e53e06b059994f159fd62961b002ab5cdea18e954fe6729b828e8e9281900390910190a1600191505061196f565b600754604080517fd85d2b13000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015284811660248301523360448301529151600093929092169163d85d2b139160648082019260209290919082900301818787803b15801561242b57600080fd5b600061190b60038363ffffffff61544b16565b61419c33611e27565b6141da5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615e0f602c913960400191505060405180910390fd5b6141e3816155ef565b50565b600080600080600080600087600160a060020a031663fedf51e96040518163ffffffff1660e060020a02815260040160e06040518083038186803b15801561422d57600080fd5b505afa158015614241573d6000803e3d6000fd5b505050506040513d60e081101561425757600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949e939d50919b50995097509195509350915050565b600754604080517f98545b1e000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301528481166024830152336044830152915160009392909216916398545b1e9160648082019260209290919082900301818787803b15801561242b57600080fd5b604080517f085a73f5000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051600091600160a060020a0385169163085a73f59160448082019260209290919082900301818787803b15801561437357600080fd5b505af1158015614387573d6000803e3d6000fd5b505050506040513d602081101561439d57600080fd5b505060408051600160a060020a03851681526020810184905281517fadb378e8b6cdbcedabcb11d89f5c3d01a5681021c970f30c5b5f698496a56cf6929181900390910190a150600192915050565b60006143f733611e27565b6144355760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615e0f602c913960400191505060405180910390fd5b6000600660009054906101000a9004600160a060020a03169050600081600160a060020a031663bf9d8cc38e8e8e8e8e8e8e8e8e8e6040518b63ffffffff1660e060020a02815260040180806020018b81526020018a815260200189815260200188815260200187815260200186600160a060020a0316600160a060020a0316815260200185600160a060020a0316600160a060020a0316815260200184600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a0316815260200182810382528c818151815260200191508051906020019080838360005b8381101561453757818101518382015260200161451f565b50505050905090810190601f1680156145645780820380516001836020036101000a031916815260200191505b509b505050505050505050505050602060405180830381600087803b15801561458c57600080fd5b505af11580156145a0573d6000803e3d6000fd5b505050506040513d60208110156145b657600080fd5b505190506145cb600a8263ffffffff61563716565b5060408051600160a060020a038316815290517f69c0bed0cfe2481daba8100e8d026afc0310449557d52e860717cab3f70fd8ab9181900360200190a15060019c9b505050505050505050505050565b60008060008060008060008088600160a060020a0316632109f77a6040518163ffffffff1660e060020a0281526004016101006040518083038186803b15801561466457600080fd5b505afa158015614678573d6000803e3d6000fd5b505050506040513d61010081101561468f57600080fd5b508051602082015160408301516060840151608085015160a086015160c087015160e090970151959e50939c50919a509850965094509092509050919395975091939597565b600754604080517f0e3158f30000000000000000000000000000000000000000000000000000000081528515156004820152600160a060020a0385811660248301523360448301526064820185905291516000939290921691630e3158f39160848082019260209290919082900301818787803b1580156124f457600080fd5b604080517f47454e4552414c5f504152544e45525f524f4c450000000000000000000000008152905190819003601401902081565b600160a060020a03166000908152600e602052604090205490565b604080517f535441525455505f5445414d5f524f4c450000000000000000000000000000008152905190819003601101902081565b606082600160a060020a0316639cf6cc70836040518263ffffffff1660e060020a0281526004018082815260200191505060006040518083038186803b158015611efb57600080fd5b6000614836600a8363ffffffff6154b816565b1561276c5760006148478333614e56565b50919250600091505081156149025761485e61564d565b600160a060020a031663a9059cbb33846040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156148c057600080fd5b505af11580156148d4573d6000803e3d6000fd5b505050506040513d60208110156148ea57600080fd5b50503360009081526013602052604090204290555060015b60408051600160a060020a0386168152602081018490523381830152821515606082015290517f7d2c1b258322d5feaaca4a7c38e49e543c8df10e64f0369863ef8396e02073bf9181900360800190a1915061196f9050565b600061496633611e27565b6149a45760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615e0f602c913960400191505060405180910390fd5b5060068054600160a060020a038316600160a060020a03199091161790556001919050565b604080517f16fb3c15000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a0384811660248301526044820184905291516000928616916316fb3c1591606480830192602092919082900301818787803b158015614a3b57600080fd5b505af1158015614a4f573d6000803e3d6000fd5b505050506040513d6020811015614a6557600080fd5b505060408051600160a060020a0380871682526020820185905285168183015290517fca237fd96ca9deccc8ce645fc6655847954966129d27c7964bbcce807bd622729181900360600190a15060019392505050565b6000614ac633611e27565b614b045760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615e0f602c913960400191505060405180910390fd5b614b15600a8363ffffffff61563716565b50600754604080517f2d06177a000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015291519190921691632d06177a91602480830192600092919082900301818387803b158015614b7d57600080fd5b505af1158015614b91573d6000803e3d6000fd5b505060408051600160a060020a038616815290517f8c82d670bc9247c2cfb6964089bc9cff0255f9caade6fbc74a13368083e554669350908190036020019150a1506001919050565b614be333611e27565b614c215760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615e0f602c913960400191505060405180910390fd5b6138483361579e565b614c3333611e27565b614c715760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615e0f602c913960400191505060405180910390fd5b6141e3816157e6565b600080600080600080600089600160a060020a0316632726b5068a8a6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a031681526020018281526020019250505060c06040518083038186803b158015614ce657600080fd5b505afa158015614cfa573d6000803e3d6000fd5b505050506040513d60c0811015614d1057600080fd5b5080516020808301516040808501516060860151608087015160a09097015183517f87ac828a0000000000000000000000000000000000000000000000000000000081523360048201529351969e50939c50909a5098509396509350600092600160a060020a038e16926387ac828a92602480840193919291829003018186803b158015614d9d57600080fd5b505afa158015614db1573d6000803e3d6000fd5b505050506040513d6020811015614dc757600080fd5b50519250509397509397509397909450565b600954600160a060020a031690565b6000614df333611e27565b614e315760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615e0f602c913960400191505060405180910390fd5b5060078054600160a060020a038316600160a060020a03199091161790556001919050565b600160a060020a03811660009081526013602052604081205481908190819081908190819081906224e9ff1942011015614e995792965090945092509050614ec3565b614ea38a8a612faf565b90935090506000614eb4848361582d565b90995093975092955093505050505b92959194509250565b600854600160a060020a031690565b600080606060008085600160a060020a031663f66fdcca6040518163ffffffff1660e060020a02815260040160006040518083038186803b158015614f1f57600080fd5b505afa158015614f33573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526060811015614f5c57600080fd5b81516020830151604080850180519151939592948301929184640100000000821115614f8757600080fd5b908301906020820185811115614f9c57600080fd5b8251640100000000811182820188101715614fb657600080fd5b82525081516020918201929091019080838360005b83811015614fe3578181015183820152602001614fcb565b50505050905090810190601f1680156150105780820380516001836020036101000a031916815260200191505b506040525050601054601254949b939a5091985090965091945092505050565b6060600080600084600160a060020a031663d2f0d2a86040518163ffffffff1660e060020a02815260040160006040518083038186803b15801561507357600080fd5b505afa158015615087573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156150b057600080fd5b81019080805160405193929190846401000000008211156150d057600080fd5b9083019060208201858111156150e557600080fd5b82516401000000008111828201881017156150ff57600080fd5b82525081516020918201929091019080838360005b8381101561512c578181015183820152602001615114565b50505050905090810190601f1680156151595780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060909201519498509650945091925050509193509193565b600754604080517fda076a87000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151606093929092169163da076a8791602480820192600092909190829003018186803b158015611c1b57600080fd5b604080517f4c494d495445445f504152544e45525f524f4c450000000000000000000000008152905190819003601401902081565b61522a828261544b565b1561527f576040805160e560020a62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b600160a060020a03166000818152600183810160209081526040808420805460ff191684179055855492830186558584528184209092018054600160a060020a03191685179055845493835260029094019093529190912055565b60006152e461564d565b600160a060020a03166370a08231836040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a0316815260200191505060206040518083038186803b15801561533c57600080fd5b505afa158015612936573d6000803e3d6000fd5b60008261535f5750600061190b565b8282028284828161536c57fe5b0414611baa5760405160e560020a62461bcd028152600401808060200182810382526021815260200180615d046021913960400191505060405180910390fd5b6000611baa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615947565b600082820183811015611baa576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000600160a060020a0382166154955760405160e560020a62461bcd028152600401808060200182810382526022815260200180615d256022913960400191505060405180910390fd5b50600160a060020a03166000908152600191909101602052604090205460ff1690565b6000611baa83600160a060020a0384166159ec565b6000611baa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250615a04565b600080600080615544620186a061194f87615538606461194f8f8e61535090919063ffffffff16565b9063ffffffff61535016565b9050600061555e620186a061194f886155388b8d8f615a61565b90506000615572898463ffffffff6154cd16565b9050811561558d5761558a818363ffffffff6154cd16565b90505b9a919950975095505050505050565b606061190b82615a91565b6155b860038263ffffffff615af716565b604051600160a060020a038216907f9c8e7d83025bef8a04c664b2f753f64b8814bdb7e27291d7e50935f18cc3c71290600090a250565b61560060008263ffffffff61522016565b604051600160a060020a038216907f3f5f1db80208f0d453083a86e16909cecc1e95e2618d5d927c93ace22b8200fc90600090a250565b6000611baa83600160a060020a03841684615c3f565b60008061565861370d565b60008151811061566457fe5b6020026020010151600160a060020a031663d2f0d2a86040518163ffffffff1660e060020a02815260040160006040518083038186803b1580156156a757600080fd5b505afa1580156156bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156156e457600080fd5b810190808051604051939291908464010000000082111561570457600080fd5b90830190602082018581111561571957600080fd5b825164010000000081118282018810171561573357600080fd5b82525081516020918201929091019080838360005b83811015615760578181015183820152602001615748565b50505050905090810190601f16801561578d5780820380516001836020036101000a031916815260200191505b506040908152015194505050505090565b6157af60008263ffffffff615af716565b604051600160a060020a038216907f26b6063d78aefcf96f02ff06bc9822b5a623278253add7fffa5fb453db39981090600090a250565b6157f760038263ffffffff61522016565b604051600160a060020a038216907e47706786c922d17b39285dc59d696bafea72c0b003d3841ae1202076f4c2e490600090a250565b600080600061583b306152da565b6012549091506207a1209061585e90670de0b6b3a764000063ffffffff6153ac16565b101561587c5761587581606463ffffffff6153ac16565b90506158c7565b601254624c4b409061589c90670de0b6b3a764000063ffffffff6153ac16565b10156158b35761587581601e63ffffffff6153ac16565b6158c481600a63ffffffff6153ac16565b90505b6012546000906158e590670de0b6b3a764000063ffffffff6153ac16565b905060006158ff8261194f8961271063ffffffff61535016565b9050851561593157615925600a61194f600b61553861271083898863ffffffff61535016565b945092506132c3915050565b61592561271061194f858463ffffffff61535016565b600081836159d65760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561599b578181015183820152602001615983565b50505050905090810190601f1680156159c85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816159e257fe5b0495945050505050565b60009081526002919091016020526040902054151590565b60008184841115615a595760405160e560020a62461bcd02815260206004820181815283516024840152835190928392604490910191908501908083836000831561599b578181015183820152602001615983565b505050900390565b600080600160a060020a038516156123aa57615a88606461194f868663ffffffff61535016565b95945050505050565b606081600101805480602002602001604051908101604052809291908181526020018280548015615aeb57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311615acd575b50505050509050919050565b615b01828261544b565b615b3f5760405160e560020a62461bcd028152600401808060200182810382526021815260200180615ce36021913960400191505060405180910390fd5b600160a060020a03811660009081526002830160205260409020548015615c1a5782546000198083019190810190600090869083908110615b7c57fe5b6000918252602090912001548654600160a060020a0390911691508190879085908110615ba557fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790558554869080615bd957fe5b6000828152602080822083016000199081018054600160a060020a0319169055909201909255600160a060020a038716825260028801905260408120555050505b50600160a060020a03166000908152600190910160205260409020805460ff19169055565b6000615c4b84846159ec565b615cac57508254600180820185556000858152602080822090930185905581860180548084018255908252838220018054600160a060020a031916600160a060020a0386161790558554858252600287019093526040902091909155611baa565b506000611baa56fe5465616d526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204f7261636c6520726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373506f6f6c52656769737472793a2073656e64657220686173206e6f20726f6c652047506172746e6572506f6f6c52656769737472793a2073656e64657220686173206e6f20726f6c65205465616d537461727475706465706f736974496e766573746d656e74496e546f6b656e73546f506f6f6c3a20746865206e756d626572206f662073656e7420746f6b656e2069732030506f6f6c52656769737472793a20706172616d65746572204c706172746e657220686173206e6f20726f6c65204c506172746e65725465616d526f6c653a2063616c6c657220646f6573206e6f74206861766520746865205465616d20726f6c65a26469706673582212205be3b2128c22bf2d7fddfa6fe58a7996e609d25ebc8973575dc70fe39964beff64736f6c63430006080033526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.