Contract 0x1Bf12f0650d8065fFCE3Cd9111feDEC21deF6825 1

 

Contract Overview

OpenBiSea
Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x23dca7a45a20d6cf99249b6930af7f159909b983a9cb02e526489e6d8b3213bePurchase Tokens93780242021-07-22 11:12:1192 days 4 hrs ago0xec2a6db104cddc85faa2c9c5352b311cbc0f1101 IN  OpenBiSea0.0001 BNB0.00010803
0xe3ca4b899f4f36c2e12a9c4e10dee783755858212dc015aceb51c9d10b91838eCancel Auction92908602021-07-19 10:31:1295 days 5 hrs ago0xcbb3506a9359410b58b30db7743d5e3a672092be IN  OpenBiSea0 BNB0.00014278
0x627776beaf1d5cd995bdfc58f7d97f0dece68c4ce8f85dfb230d02c7b61136f3Cancel Auction92904952021-07-19 10:12:5795 days 5 hrs ago0xcbb3506a9359410b58b30db7743d5e3a672092be IN  OpenBiSea0 BNB0.00014278
0xaced0d76d06a15e8917964334b3c7cee919b14093961381a4940444f6fd93d8eCreate Auction90052382021-07-09 12:25:15105 days 3 hrs ago0xe9457548fd24b80919565c70793aee6fe1368528 IN  OpenBiSea0 BNB0.00122159
0x38b65c5e4f1b62d21cd76c6d011315a68650f60988e3b6dd4c23fa4bc8e5357aCancel Auction90052162021-07-09 12:24:09105 days 3 hrs ago0xe9457548fd24b80919565c70793aee6fe1368528 IN  OpenBiSea0 BNB0.00052039
0x59390dba44cd9c6b72bdcc50b4efb4795945819d3e7d4c1023381ede7aa940ddCreate Auction89996262021-07-09 7:44:39105 days 8 hrs ago0xe9457548fd24b80919565c70793aee6fe1368528 IN  OpenBiSea0 BNB0.00122159
0x32e8e406fff45a1ea3fa1000c243e59aaed64eec70f0f12df8a9e736504e4b1dCancel Auction81687032021-06-10 6:49:34134 days 8 hrs ago0xd2c63c524fac3ddfe2cd0e9627640682b64fe24d IN  OpenBiSea0 BNB0.00048289
0xe9ed82f6a1ed09e4bdd86ea219e12a0a7f88cf2c4f29e970ad6cc822b3ddc384Cancel Auction81685042021-06-10 6:39:37134 days 9 hrs ago0xd2c63c524fac3ddfe2cd0e9627640682b64fe24d IN  OpenBiSea0 BNB0.00048289
0x9f9b3661f525e773978949b1a88cfcf7f706990f3a1720885cae7e64def1f7cbCancel Auction81684352021-06-10 6:36:10134 days 9 hrs ago0xd2c63c524fac3ddfe2cd0e9627640682b64fe24d IN  OpenBiSea0 BNB0.00053539
0x9693b5ca99421dc693aa35c755980f089232e2c5caf90dbdeb0ad8c972345e20Cancel Auction81683632021-06-10 6:32:34134 days 9 hrs ago0xd2c63c524fac3ddfe2cd0e9627640682b64fe24d IN  OpenBiSea0 BNB0.00048289
0x0411e90bb6efed95229555bb1038ed2a372a907b22184937a67e166d2fba343cCreate Auction79594702021-06-03 0:01:19141 days 15 hrs ago0xd2c63c524fac3ddfe2cd0e9627640682b64fe24d IN  OpenBiSea0 BNB0.00129659
0x9606136bfacb541140ea4951c0be6cf40452d8204fd7e115976ec73ce923f325Bid79584032021-06-02 23:07:51141 days 16 hrs ago0xd2c63c524fac3ddfe2cd0e9627640682b64fe24d IN  OpenBiSea0.11002 BNB0.000863435
0x34a2be5cddaaa00ae258badc1a27df438893bcbdf967d9bcb6c578863560d5c8Create Auction78675262021-05-30 19:06:25144 days 20 hrs ago0x4d7f04f9c37af010e6c397f66e29c888b3337d2c IN  OpenBiSea0 BNB0.000187535
0x2ea5eab5089d9b486302f9c7845ce3dbb36f27372c03edf709c3825445e43ea5Create Auction78665632021-05-30 18:18:16144 days 21 hrs ago0xd2c63c524fac3ddfe2cd0e9627640682b64fe24d IN  OpenBiSea0 BNB0.00129659
0x41874b4fd19aa8ac52947fb92cb82374e5039dcb2ce19a1830cee12b1bcdba34Cancel Auction77966162021-05-28 7:50:02147 days 7 hrs ago0x8d9c1e2d55eefcfc194d880cfbfbcda220a4de94 IN  OpenBiSea0 BNB0.00048289
0x289ebfdfe280ae90e944fb3dead7996495a0d6c8aaa5b4e3443ff9c1a0934a26Cancel Auction77966092021-05-28 7:49:41147 days 7 hrs ago0x8d9c1e2d55eefcfc194d880cfbfbcda220a4de94 IN  OpenBiSea0 BNB0.00014278
0x798935bd2066fc48a3fb6a1081d12525b2d53b4deffeaa4abde618fdd1d008dfCancel Auction77966032021-05-28 7:49:23147 days 7 hrs ago0x8d9c1e2d55eefcfc194d880cfbfbcda220a4de94 IN  OpenBiSea0 BNB0.00053539
0x79ec9c1d81dd3376c0fa4b06e7a445be3c4d05af09b385d028e9bdb7eb805f5bCancel Auction77965972021-05-28 7:49:05147 days 7 hrs ago0x8d9c1e2d55eefcfc194d880cfbfbcda220a4de94 IN  OpenBiSea0 BNB0.00053539
0x71885b8b1e2875e472eb57eedd92bec16f97c349c071f5a0025b6fa0d79a94dfCancel Auction77965872021-05-28 7:48:35147 days 7 hrs ago0x8d9c1e2d55eefcfc194d880cfbfbcda220a4de94 IN  OpenBiSea0 BNB0.00053539
0xa7f8b54512a697eea39ba0c4a3230d0c6578d891a4dcf9767e434bfb02a32d51Cancel Auction77965792021-05-28 7:48:11147 days 7 hrs ago0x8d9c1e2d55eefcfc194d880cfbfbcda220a4de94 IN  OpenBiSea0 BNB0.00053539
0x4633497eef5959d8bf89458c88d2671a7027c56fb5e97f8683a02a11d830cbd7Cancel Auction77965722021-05-28 7:47:50147 days 7 hrs ago0x8d9c1e2d55eefcfc194d880cfbfbcda220a4de94 IN  OpenBiSea0 BNB0.00053539
0x53996438a12bee065abd75d35fac1140ebb7673f420210b9175c9a6f22c6a163Cancel Auction77965672021-05-28 7:47:35147 days 7 hrs ago0x8d9c1e2d55eefcfc194d880cfbfbcda220a4de94 IN  OpenBiSea0 BNB0.00053539
0x26dc427ff3805f6fc099b2fa8081e5fbee3fcfbfc6542753997511dc83af09beCancel Auction77965542021-05-28 7:46:56147 days 8 hrs ago0x8d9c1e2d55eefcfc194d880cfbfbcda220a4de94 IN  OpenBiSea0 BNB0.00053539
0x7dc47e5fd058ab28ed308402b3054a701698fa4cc1cea023373691835c20c081Cancel Auction77965442021-05-28 7:46:26147 days 8 hrs ago0x8d9c1e2d55eefcfc194d880cfbfbcda220a4de94 IN  OpenBiSea0 BNB0.00053539
0xfe1b9d54c2992147a8b9390098db822bb700bacb81db4d7d37b806a0ee0f44ceCancel Auction77965312021-05-28 7:45:47147 days 8 hrs ago0x8d9c1e2d55eefcfc194d880cfbfbcda220a4de94 IN  OpenBiSea0 BNB0.00053539
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x9606136bfacb541140ea4951c0be6cf40452d8204fd7e115976ec73ce923f32579584032021-06-02 23:07:51141 days 16 hrs ago OpenBiSea0xdfe5e1064cecdfec111c3bde9fd0a645f980e5620.104519 BNB
0x9606136bfacb541140ea4951c0be6cf40452d8204fd7e115976ec73ce923f32579584032021-06-02 23:07:51141 days 16 hrs ago OpenBiSea0x027d865ef0b4d1372affe941272f47e013cac6690.005501 BNB
0x7ab0ec73a1824ab8f651b21314de4764e75fa26d4a2d7a2d328a45453a95e30e77948862021-05-28 6:23:29147 days 9 hrs ago OpenBiSeaOpenBiSea: Deployer19.93299999999999998 BNB
0x10a719276246e0adbcf768194bceee5311d14daef55f439c8db15b983d03969c77661992021-05-27 6:19:54148 days 9 hrs ago OpenBiSea0xd2c63c524fac3ddfe2cd0e9627640682b64fe24d0.11001 BNB
0xc22b290aa346bf665eb767b15279652bd9a889ee16e5ac325aa9d6bbafeeaf6f75717822021-05-20 11:30:42155 days 4 hrs ago OpenBiSea0x8d9c1e2d55eefcfc194d880cfbfbcda220a4de940.0104595 BNB
0xc22b290aa346bf665eb767b15279652bd9a889ee16e5ac325aa9d6bbafeeaf6f75717822021-05-20 11:30:42155 days 4 hrs ago OpenBiSea0x027d865ef0b4d1372affe941272f47e013cac6690.0005505 BNB
0x5a69b1faf6478056d5d63cbcf9dde9c0a6136797e115cce2eb4d2fd11217e68173742552021-05-13 12:21:00162 days 3 hrs ago OpenBiSea0x935b87b651dfd40e60525d2b68f8f56551e78f450.011 BNB
0x572e6ee4f06f55a3c91b56c335a5003de6b50f6e4818bf44a6063dc0c05ec0ba73434292021-05-12 9:39:46163 days 6 hrs ago OpenBiSea0xc98834f2de2eb9c97ffbdf2e4952535d2d4bc1a10.01001 BNB
0x9514235f231d0e24c5b9fd3f028fd7657f395fa281b1cf2100ff90f3fd23135e73427082021-05-12 9:01:47163 days 6 hrs ago OpenBiSea0x51b486692321af984bc75d105c54419e35d963b90.0004845 BNB
0x9514235f231d0e24c5b9fd3f028fd7657f395fa281b1cf2100ff90f3fd23135e73427082021-05-12 9:01:47163 days 6 hrs ago OpenBiSea0x027d865ef0b4d1372affe941272f47e013cac6690.0000255 BNB
0x8d93957baff8624f2e60a86d691ac28a5ed5eb2cc1d4892b56157e98da517bd173425782021-05-12 8:54:30163 days 6 hrs ago OpenBiSea0x51b486692321af984bc75d105c54419e35d963b90.0001045 BNB
0x8d93957baff8624f2e60a86d691ac28a5ed5eb2cc1d4892b56157e98da517bd173425782021-05-12 8:54:30163 days 6 hrs ago OpenBiSea0x027d865ef0b4d1372affe941272f47e013cac6690.0000055 BNB
0x28ae062351553b0818975c6ace690cfbbb56a1cb64cea392c061bcac449ee5ff73425392021-05-12 8:52:11163 days 6 hrs ago OpenBiSea0x51b486692321af984bc75d105c54419e35d963b90.0002945 BNB
0x28ae062351553b0818975c6ace690cfbbb56a1cb64cea392c061bcac449ee5ff73425392021-05-12 8:52:11163 days 6 hrs ago OpenBiSea0x027d865ef0b4d1372affe941272f47e013cac6690.0000155 BNB
0x5e1975e4330edf384e48f36615152163869596ef8727c1e6ade30db7748d88ef73424252021-05-12 8:45:04163 days 7 hrs ago OpenBiSea0x51b486692321af984bc75d105c54419e35d963b90.0002945 BNB
0x5e1975e4330edf384e48f36615152163869596ef8727c1e6ade30db7748d88ef73424252021-05-12 8:45:04163 days 7 hrs ago OpenBiSea0x027d865ef0b4d1372affe941272f47e013cac6690.0000155 BNB
0xaca148e0028701f4ef3941733dc5440503963a8867a9d51ef2cb76bee2f2b9af73418612021-05-12 8:08:48163 days 7 hrs ago OpenBiSea0x51b486692321af984bc75d105c54419e35d963b90.0001045 BNB
0xaca148e0028701f4ef3941733dc5440503963a8867a9d51ef2cb76bee2f2b9af73418612021-05-12 8:08:48163 days 7 hrs ago OpenBiSea0x027d865ef0b4d1372affe941272f47e013cac6690.0000055 BNB
0x1b64ba89eaef8e2c19ead66d6f1a1dfa328294afe2eb779244e036b5751b819169939092021-04-29 18:13:43175 days 21 hrs ago OpenBiSeaOpenBiSea: Deployer0.00095 BNB
0x1b64ba89eaef8e2c19ead66d6f1a1dfa328294afe2eb779244e036b5751b819169939092021-04-29 18:13:43175 days 21 hrs ago OpenBiSea0x027d865ef0b4d1372affe941272f47e013cac6690.00005 BNB
0xb07afa62257613ff2a6f330c5e1bce247644203be6a24abd7ea536eada7d1f0f69939072021-04-29 18:13:36175 days 21 hrs ago OpenBiSea0x3917ef75c96e35d9969fcd301f474920c2d9ca0c0.0009 BNB
0x82d64767884b0b0333b327569108ef847258bf01ccbf18948a90edfef7741c4d69939052021-04-29 18:13:30175 days 21 hrs ago OpenBiSea0x3917ef75c96e35d9969fcd301f474920c2d9ca0c0.0008 BNB
0xaac9cc10c43d45b52ef4eccc869a0e5d45c52d37d8f8d59a780da4214eb1b46d69939032021-04-29 18:13:24175 days 21 hrs ago OpenBiSea0x3917ef75c96e35d9969fcd301f474920c2d9ca0c0.0007 BNB
0x1558887d6caf93f8dc6a11bc9b61a6e341d3b3eb36c0ffdc141cb138cb2c7d1569939012021-04-29 18:13:18175 days 21 hrs ago OpenBiSea0x3917ef75c96e35d9969fcd301f474920c2d9ca0c0.0006 BNB
0x2421b58bdeb53f35bc83b09fe1bb011ad923491bd0ee77af9dac1afbe9626b6c69938992021-04-29 18:13:12175 days 21 hrs ago OpenBiSea0x3917ef75c96e35d9969fcd301f474920c2d9ca0c0.0005 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OpenBiSea

Compiler Version
v0.6.8+commit.0bbfe453

Optimization Enabled:
Yes with 200 runs

Other Settings:
byzantium EvmVersion, Audited
File 1 of 16 : Context.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 Context {
    constructor () internal { }
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

File 2 of 16 : OpenBiSea.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 "./access/PoolRoles.sol";
import "./interface/IPoolRegistry.sol";
import "./interface/IAssetsManageTeam.sol";
import "./interface/IERC20.sol";
import "./access/PoolRoles.sol";
import "./math/SafeMath.sol";
//import "./interface/IERC721.sol";
//import "./interface/IERC1155.sol";
import "./utils/EnumerableUintSet.sol";
import "./interface/IOpenBiSeaAuction.sol";
import "./access/TeamRole.sol";

//import "./interface/IERC721Receiver.sol";
//import "./interface/IERC1155Receiver.sol";

contract OpenBiSea is PoolRoles,TeamRole  {
    using SafeMath for uint256;
    using EnumerableUintSet for EnumerableUintSet.UintSet;

    event Deposit(address indexed from, uint256 value);
    event DebugWithdrawLPartner(address sender,address owner, uint256 getDepositLengthSender, uint256 getDepositLengthOwner,uint256 totalAmountReturn,uint256 indexesDepositLength,uint256 balanceThis);
    string private _name;
    bool private _isPublicPool = true;
    address private _auction;
    address private _busdContract;
    address private _token;
    uint256 private _lockPeriod;
    uint256 private _rate;
    uint256 private _poolValueUSD = 0;
    uint256 private _poolValue = 0;
    string private _proofOfValue = "nothing";
    uint256 private _depositFixedFee;
    uint256 private _referralDepositFee;
    uint256 private _auctionCreationFeeMultiplier;
    uint256 private _auctionContractFeeMultiplier;
    uint256 private _totalIncome;
    uint256 private _premiumFee;
    struct DepositToPool {
        uint256 amount;          // Amount of funds deposited
        uint256 time;            // Deposit time
        uint256 lock_period;     // Asset lock time
        bool refund_authorize;   // Are assets unlocked for withdrawal
        uint256 amountWithdrawal;
        address investedToken;
    }
    mapping(address => DepositToPool[]) private _deposites;
    mapping(address => address) private _referrals;

//    mapping(address => uint256) private _consumersRevenueAmount;

    IAssetsManageTeam private _assetsManageTeam;
    IPoolRegistry private _poolRegistry;
    modifier onlyAdmin(address sender) {
        if(hasRole(GENERAL_PARTNER_ROLE, sender) || hasRole(SUPER_ADMIN_ROLE, sender) || _poolRegistry.isTeam(sender)) {
            _;
        } else {
            revert("The sender does not have permission");
        }
    }
    address private _tokenForTokensale;
    uint256 private _initialBalance;
    constructor (
        address tokenForTokensale,
//        string memory name,
//        uint256 locked,
//        uint256 depositFixedFee,
//        uint256 referralDepositFee,
//        uint256 auctionCreationFeeMultiplier,
//        uint256 auctionContractFeeMultiplier,
        address superAdmin,
        address gPartner,
        address lPartner,
        address team,
        address poolRegistry,
        address returnInvestmentLpartner,
        IAssetsManageTeam assetsManageTeam,
        uint256 initialBalance,
        address busdContract
    ) public {
//        _name = name;
        _tokenForTokensale = tokenForTokensale;
//        _lockPeriod = locked;
//        _depositFixedFee = depositFixedFee;
//        _referralDepositFee = referralDepositFee;
//        _auctionCreationFeeMultiplier = auctionCreationFeeMultiplier;
//        _auctionContractFeeMultiplier = auctionContractFeeMultiplier;
        _assetsManageTeam = assetsManageTeam;
        _poolRegistry = IPoolRegistry(poolRegistry);
        _initialBalance = initialBalance;
        _busdContract = busdContract;
        PoolRoles.addAdmin(SUPER_ADMIN_ROLE, msg.sender);
        PoolRoles.addAdmin(SUPER_ADMIN_ROLE, superAdmin);
        PoolRoles.addAdmin(SUPER_ADMIN_ROLE, poolRegistry);
        PoolRoles.finalize();
        grantRole(GENERAL_PARTNER_ROLE, gPartner);
        grantRole(LIMITED_PARTNER_ROLE, lPartner);
        grantRole(STARTUP_TEAM_ROLE, team);
        grantRole(POOL_REGISTRY, poolRegistry);
        grantRole(RETURN_INVESTMENT_LPARTNER, returnInvestmentLpartner);
    }

    function _updatePool(
        string calldata name,
        bool isPublicPool,
        address token,
        uint256 locked,
        uint256 depositFixedFee,
        uint256 referralDepositFee,
        uint256 auctionCreationFeeMultiplier,
        uint256 auctionContractFeeMultiplier
    ) external onlyPoolRegistry returns (bool) {
        _name = name;
        _isPublicPool = isPublicPool;
        _lockPeriod = locked;
        _depositFixedFee = depositFixedFee;
        _referralDepositFee = referralDepositFee;
        _auctionCreationFeeMultiplier = auctionCreationFeeMultiplier;
        _auctionContractFeeMultiplier = auctionContractFeeMultiplier;
        return true;
    }

    function getInfoPool() public view returns( string memory name,bool isPublicPool,address tokenForTokensale,uint256 locked,uint256 initialBalance)
    {
        return ( _name,_isPublicPool,_tokenForTokensale,_lockPeriod, _initialBalance);
    }
    receive() external payable {}
    function getDeposit(address owner, uint256 index) public view returns(uint256 amount, uint256 time, uint256 lock_period, bool refund_authorize, uint256 amountWithdrawal, address investedToken) {
        return ( _deposites[owner][index].amount, _deposites[owner][index].time,_deposites[owner][index].lock_period, _deposites[owner][index].refund_authorize, _deposites[owner][index].amountWithdrawal, _deposites[owner][index].investedToken);
    }
    function getDepositLength(address owner) public view returns(uint256) {
        return (_deposites[owner].length);
    }
    function getReferral(address lPartner) public view returns (address) {
        return _referrals[lPartner];
    }
    function getInfoPoolFees() public view returns(uint256 rate, uint256 depositFixedFee, uint256 referralDepositFee, uint256 auctionCreationFeeMultiplier, uint256 auctionContractFeeMultiplier, uint256 totalIncome, uint256 premiumFee)
    {
        return (_rate, _depositFixedFee, _referralDepositFee, _auctionCreationFeeMultiplier, _auctionContractFeeMultiplier, _totalIncome, _premiumFee);
    }
    function _approveWithdrawLpartner(address lPartner, uint256 index, uint256 amount, address investedToken) external onlyReturnsInvestmentLpartner returns (bool) {
        _deposites[lPartner][index].refund_authorize = true;
        _deposites[lPartner][index].amountWithdrawal = amount;
        _deposites[lPartner][index].investedToken = investedToken;
        return true;
    }
    function _depositPoolRegistry(address sender, uint256 amount) external onlyPoolRegistry returns (bool) {
        require(hasRole(LIMITED_PARTNER_ROLE, sender), "InvestmentPool: the sender does not have permission");
        return _deposit(sender, amount);
    }
    function _withdrawTeam (address payable sender, uint256 amount) external onlyPoolRegistry returns (bool) {
        require(hasRole(STARTUP_TEAM_ROLE, sender), "InvestmentPool: the sender does not have permission");
        _assetsManageTeam._withdraw(address(this), sender, amount);
        sender.transfer(amount);
        return true;
    }
    function _withdrawTokensToStartup(address payable sender,address token, uint256 amount) external onlyPoolRegistry returns (bool) {
        require(hasRole(STARTUP_TEAM_ROLE, sender), "InvestmentPool: the sender does not have permission");
        _assetsManageTeam._withdrawTokensToStartup(address(this),token, sender, amount);
        IERC20(token).transfer(sender, amount);
        return true;
    }
    function _returnsInTokensFromTeam(address payable sender,address token, uint256 amount) external onlyPoolRegistry returns (bool) {
        require(hasRole(STARTUP_TEAM_ROLE, sender), "InvestmentPool: the sender does not have permission");
        IERC20(token).transferFrom(sender, address(this), amount);
        return true;
    }
    function _withdrawLPartner(address payable sender) external onlyPoolRegistry returns (bool, uint256, address) {
        require(hasRole(LIMITED_PARTNER_ROLE, sender), "InvestmentPool: the sender does not have permission");
        uint256 totalAmountReturn = 0;
        address token = address(0);
        uint256 lengthSender = getDepositLength(sender);
        bool result = false;
        for (uint256 i = 0; i < lengthSender; i++) {
            DepositToPool storage deposit = _deposites[sender][i];
            if (deposit.refund_authorize) {
                token = deposit.investedToken;
                if (deposit.amountWithdrawal > 0) {
                    if (token == address(0)) {
                        sender.transfer(deposit.amountWithdrawal);
                        totalAmountReturn = totalAmountReturn.add(deposit.amountWithdrawal);
                    } else {
                        IERC20(token).transfer(sender, deposit.amountWithdrawal);
                    }
                }
                _deposites[sender][i].refund_authorize = false;
                _deposites[sender][i].amountWithdrawal = 0;
            }
        }
        return (result,totalAmountReturn,token);
    }
    function _withdrawSuperAdmin(address payable sender,address token, uint256 amount) external onlyPoolRegistry returns (bool) {
        require(hasRole(SUPER_ADMIN_ROLE, sender), "InvestmentPool: the sender does not have permission");
        if (amount > 0) {
            if (token == address(0)) {
                sender.transfer(amount);
                return true;
            } else {
                IERC20(token).transfer(sender, amount);
                return true;
            }
        }
        return false;
    }
    function _activateDepositToPool() external onlyPoolRegistry returns (bool) {
        require(!_isPublicPool, "InvestmentPool: the pool is already activated");
        _isPublicPool = true;
        return true;
    }
    function _disactivateDepositToPool() external onlyPoolRegistry returns (bool) {
        require(_isPublicPool, "InvestmentPool: the pool is already deactivated");
        _isPublicPool = false;
        return true;
    }
    function _setReferral(address sender, address lPartner, address referral) external onlyPoolRegistry onlyAdmin(sender) returns (bool) {
        _referrals[lPartner] = referral;
        return true;
    }

    function _setRate(uint256 rate) external onlyPoolRegistry returns (bool) {
        _rate = rate;
        return true;
    }
    function _setPoolValues(uint256 poolValueUSD,uint256 poolValue,string calldata proofOfValue) external onlyPoolRegistry returns (bool) {
        _poolValueUSD = poolValueUSD;
        _poolValue = poolValue;
        _proofOfValue = proofOfValue;
        return true;
    }
    function _setAuction(address newAuction) public onlyTeam {
        _auction = newAuction;
    }
    function auction() public view returns (address)  {
        return _auction;
    }
    function getPoolValues() public view returns(uint256 poolValueUSD, uint256 poolValue, string memory proofOfValue)
    {
        return (_poolValueUSD, _poolValue, _proofOfValue);
    }
    function _depositInvestmentInTokensToPool(address payable sender, uint256 amount, address token) external onlyPoolRegistry returns (bool) {
        require(hasRole(LIMITED_PARTNER_ROLE, sender), "InvestmentPool: the sender does not have permission");
        uint256 depositFee = amount.mul(_depositFixedFee).div(100);
        uint256 depositFeeReferrer = amount.mul(_referralDepositFee).div(100);
        uint256 totalDeposit = 0;
        if (_referrals[sender] != address(0)) {
            totalDeposit = amount.sub(depositFee).sub(depositFeeReferrer);
        } else {
            totalDeposit = amount.sub(depositFee);
        }
        _deposites[sender].push(DepositToPool(totalDeposit, block.timestamp, _lockPeriod, false, 0, token));
        return true;
    }
    uint256 private initialPriceInt = 88800000000000000;// 0.0888 BNB one token
    function getInitialPriceInt() public view returns (uint256)  {
        return initialPriceInt;
    }

//    uint256 private _tokensaleTotalAmount = (10 ** uint256(18)).mul(8000);// 8000 obs
    uint256 private _tokensaleTotalSold;

    function purchaseTokensQuantityFor(uint256 amount) public view returns (uint256,uint256) {
        uint256 delta = _initialBalance.sub(_tokensaleTotalSold);
        uint256 newPrice = initialPriceInt.mul(_initialBalance).div(delta);
        return (amount.mul(10 ** uint256(18)).div(newPrice),_initialBalance.sub(_tokensaleTotalSold));
    }

    function purchaseTokens() public payable returns (uint256) {
        require(msg.value > 100000000000000000, "TokensalePool: minimal purchase 0.1BNB.");
        uint256 amountTokens;
        uint256 balance;
        (amountTokens,balance) = purchaseTokensQuantityFor(msg.value);
        require(amountTokens > 0, "TokensalePool: we can't sell 0 tokens.");
        require(amountTokens < balance.div(3), "TokensalePool: we can't sell more than 30% from one transaction. Please decrease investment amount.");
        IERC20(_tokenForTokensale).transfer(msg.sender, amountTokens);
        _tokensaleTotalSold.add(amountTokens);
        return amountTokens;
    }
    function _deposit(address sender, uint256 amount) private returns (bool) {
        require(_isPublicPool, "InvestmentPool: pool deposit blocked");
        address payable team = payable(getRoleMember(GENERAL_PARTNER_ROLE,0));
        uint256 depositFee = amount.mul(_depositFixedFee).div(100);
        uint256 depositFeeReferrer = amount.mul(_referralDepositFee).div(100);
        uint256 totalDeposit = 0;
        if (_referrals[sender] != address(0)) {
            payable(_referrals[sender]).transfer(depositFeeReferrer);
            team.transfer(depositFee);
            totalDeposit = amount.sub(depositFee).sub(depositFeeReferrer);
        } else {
            team.transfer(depositFee);
            totalDeposit = amount.sub(depositFee);
        }
        _deposites[sender].push(DepositToPool(totalDeposit, block.timestamp, _lockPeriod, false, 0, address(0)));
        _totalIncome = _totalIncome.add(amount);
        emit Deposit(sender, amount);
        return true;
    }
    function _transferGeneralPartner(uint256 amount) private returns (bool) {
        address payable gPartner = payable(getMembersRole(GENERAL_PARTNER_ROLE)[0]);
        gPartner.transfer(amount);
        return true;
    }
    function _getTokenAmount(uint256 weiAmount) public view returns (uint256) {
        uint8 DECIMALS = IERC20(_token).decimals();
        return (weiAmount.mul(_rate)).div(10 ** uint256(DECIMALS));
    }
    function isContract(address _addr) private view returns (bool is_contract) {
        uint length;
        assembly {
            length := extcodesize(_addr)
        }
        return (length>0);
    }

    function _removeIndexArray(uint256 index, DepositToPool[] storage array) internal virtual {
        for(uint256 i = index; i < array.length-1; i++) {
            array[i] = array[i+1];
        }
        array.pop();
    }

    function contractsNFTWhitelisted() public view returns (address[] memory) {
        return IOpenBiSeaAuction(_auction).contractsNFTWhitelisted();
    }

    function whitelistContractCreator( address _contractNFT ) public payable {
        require(msg.value >= initialPriceInt.mul(_auctionCreationFeeMultiplier), "OpenBiSea: you must send minimal amount or more");
        IOpenBiSeaAuction(_auction).whitelistContractCreator(_contractNFT,msg.value);
        _totalIncome = _totalIncome.add(msg.value);
    }

    function whitelistContractCreatorTokens( address _contractNFT ) public {
        uint256 amount = (10 ** uint256(18)).mul(_auctionCreationFeeMultiplier);
        IERC20(_tokenForTokensale).transferFrom(msg.sender,address(this),amount);
        _totalIncome = _totalIncome.add(initialPriceInt.mul(amount).div(10 ** uint256(18)));
        IOpenBiSeaAuction(_auction).whitelistContractCreator(_contractNFT,initialPriceInt.mul(amount));
    }
    function createAuction( address _contractNFT, uint256 _tokenId, uint256 _price,uint256 _deadline, bool _isERC1155, bool _isUSD ) public {
        IOpenBiSeaAuction(_auction).createAuction(_contractNFT,_tokenId, _price, _deadline,_isERC1155, msg.sender, _isUSD);
    }
    function bidUSD( address _contractNFT,uint256 _tokenId, uint256 _bidAmount, bool _isERC1155 ) public {
        IERC20(_busdContract).transferFrom(msg.sender,address(this),_bidAmount);
        bool isWin;
        uint256 amountTransferBack;
        address auctionLatestBidderOrSeller;
        bool isUSD;
        (isWin,amountTransferBack,auctionLatestBidderOrSeller,isUSD) = IOpenBiSeaAuction(_auction).bid( _contractNFT, _tokenId, _bidAmount, _isERC1155, msg.sender );
        if (isWin) {
            if (isUSD) {
                uint256 depositFee = _bidAmount.mul(_depositFixedFee).div(100);
                uint256 depositFeeReferrer = _bidAmount.mul(_referralDepositFee).div(100);
                uint256 totalSellerAmount = _bidAmount.sub(depositFee);
                if (_referrals[msg.sender] != address(0)) {
                    totalSellerAmount = totalSellerAmount.sub(depositFeeReferrer);
                    IERC20(_busdContract).transfer(_referrals[msg.sender],depositFeeReferrer);
                    IERC20(_busdContract).transfer(getRoleMember(GENERAL_PARTNER_ROLE,0),depositFee);
                } else {
                    IERC20(_busdContract).transfer(getRoleMember(GENERAL_PARTNER_ROLE,0),depositFee);
                }
                IERC20(_busdContract).transfer(auctionLatestBidderOrSeller,totalSellerAmount);
            }
        } else {
            if (amountTransferBack > 0 && isUSD) {
                IERC20(_busdContract).transfer(auctionLatestBidderOrSeller,amountTransferBack);
            }
        }
    }
    function bid( address _contractNFT,uint256 _tokenId, bool _isERC1155 ) public payable {
        bool isWin;
        uint256 amountTransferBack;
        address auctionLatestBidderOrSeller;
        bool isUSD;
        (isWin,amountTransferBack,auctionLatestBidderOrSeller,isUSD) = IOpenBiSeaAuction(_auction).bid( _contractNFT, _tokenId, msg.value, _isERC1155, msg.sender );
        if (isWin) {
            if (!isUSD) {
                uint256 depositFee = msg.value.mul(_depositFixedFee).div(100);
                uint256 depositFeeReferrer = msg.value.mul(_referralDepositFee).div(100);
                uint256 totalSellerAmount = msg.value.sub(depositFee);
                if (_referrals[msg.sender] != address(0)) {
                    totalSellerAmount = totalSellerAmount.sub(depositFeeReferrer);
                    payable(_referrals[msg.sender]).transfer(depositFeeReferrer);
                    payable(getRoleMember(GENERAL_PARTNER_ROLE,0)).transfer(depositFee);
                } else {
                    payable(getRoleMember(GENERAL_PARTNER_ROLE,0)).transfer(depositFee);
                }
                payable(auctionLatestBidderOrSeller).transfer(totalSellerAmount);
            }
        } else {
            if (amountTransferBack > 0 && !isUSD) {
                payable(auctionLatestBidderOrSeller).transfer(amountTransferBack);
            }
        }
    }
    function cancelAuction( address _contractNFT, uint256 _tokenId, bool _isERC1155 ) public {
        IOpenBiSeaAuction(_auction).cancelAuction(_contractNFT,_tokenId,msg.sender,_isERC1155);
    }
    function checkTokensForClaim( address customer, uint256 priceMainToUSD) public view returns (uint256,uint256,uint256,bool) {
        return IOpenBiSeaAuction(_auction).checkTokensForClaim(customer,priceMainToUSD);
    }
    event ClaimFreeTokens(uint256 amount, address investor,bool result);
    function claimFreeTokens() public returns (bool) {
        uint256 priceMainToUSD;
        uint8 decimals;
        (priceMainToUSD,decimals) = _poolRegistry.getOracleContract().getLatestPrice();

        uint256 tokensToPay;
        (tokensToPay,,,)= checkTokensForClaim(msg.sender,priceMainToUSD.div(10 ** uint256(decimals)));
        bool result = false;
        if (tokensToPay > 0) {
            IERC20(_tokenForTokensale).transfer(msg.sender, tokensToPay);
            IOpenBiSeaAuction(_auction).setConsumersReceivedMainTokenLatestDate(msg.sender);
            result = true;
        }
        emit ClaimFreeTokens(tokensToPay,msg.sender,result);
        return result;
    }
}

File 3 of 16 : AccessControl.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 "../utils/EnumerableSet.sol";
import "../GSN/Context.sol";

contract AccessControl is Context {
    using EnumerableSet for EnumerableSet.AddressSet;
    struct RoleData {
        EnumerableSet.AddressSet members;
        bytes32 adminRole;
    }
    mapping (bytes32 => RoleData) private _roles;
    mapping (bytes32 => address[]) private _addressesRoles;
    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
    function hasRole(bytes32 role, address account) public view returns (bool) {
        return _roles[role].members.contains(account);
    }
    function getRoleMemberCount(bytes32 role) public view returns (uint256) {
        return _roles[role].members.length();
    }
   function getRoleMember(bytes32 role, uint256 index) public view returns (address) {
        return _roles[role].members.at(index);
    }
    function getRoleAdmin(bytes32 role) public view returns (bytes32) {
        return _roles[role].adminRole;
    }
    function getMembersRole(bytes32 role) public view returns (address[] memory Accounts) {
        return _addressesRoles[role];
    }
    function grantRole(bytes32 role, address account) public virtual {
        require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to grant");
        _grantRole(role, account);
    }
    function revokeRole(bytes32 role, address account) public virtual {
        require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to revoke");

        _revokeRole(role, account);
    }
    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }
    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        _roles[role].adminRole = adminRole;
    }
    function _grantRole(bytes32 role, address account) private {
        if (_roles[role].members.add(account)) {
            _addressesRoles[role].push(account);
            emit RoleGranted(role, account, _msgSender());
        }
    }
    function _revokeRole(bytes32 role, address account) private {
        if (_roles[role].members.remove(account)) {
            for (uint256 i; i < _addressesRoles[role].length; i++) {
                if (_addressesRoles[role][i] == account) {
                    _removeIndexArray(i, _addressesRoles[role]);
                    break;
                }
            }
            emit RoleRevoked(role, account, _msgSender());
        }
    }
    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 16 : PoolRoles.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 "./AccessControl.sol";
import "../ownership/Ownable.sol";
import "../interface/IRoleModel.sol";
contract PoolRoles is AccessControl, Ownable, IRoleModel {
    bool private _finalized = false;
    event Finalized();
    modifier onlyGPartner() {
        require(hasRole(GENERAL_PARTNER_ROLE, msg.sender), "Roles: caller does not have the general partner role");
        _;
    }
    modifier onlyLPartner() {
        require(hasRole(LIMITED_PARTNER_ROLE, msg.sender), "Roles: caller does not have the limited partner role");
        _;
    }
    modifier onlyStartupTeam() {
        require(hasRole(STARTUP_TEAM_ROLE, msg.sender), "Roles: caller does not have the team role");
        _;
    }
    modifier onlyPoolRegistry() {
        require(hasRole(POOL_REGISTRY, msg.sender), "Roles: caller does not have the pool regystry role");
        _;
    }
    modifier onlyReturnsInvestmentLpartner() {
        require(hasRole(RETURN_INVESTMENT_LPARTNER, msg.sender), "Roles: caller does not have the return invesment lpartner role");
        _;
    }
    modifier onlyOracle() {
        require(hasRole(ORACLE, msg.sender), "Roles: caller does not have oracle role");
        _;
    }
    constructor () public {
        _setRoleAdmin(GENERAL_PARTNER_ROLE, SUPER_ADMIN_ROLE);
        _setRoleAdmin(LIMITED_PARTNER_ROLE, SUPER_ADMIN_ROLE);
        _setRoleAdmin(STARTUP_TEAM_ROLE, SUPER_ADMIN_ROLE);
        _setRoleAdmin(POOL_REGISTRY, SUPER_ADMIN_ROLE);
        _setRoleAdmin(RETURN_INVESTMENT_LPARTNER, SUPER_ADMIN_ROLE);
        _setRoleAdmin(ORACLE, SUPER_ADMIN_ROLE);
    }
    function addAdmin(bytes32 role, address account) public onlyOwner returns (bool) {
        require(!_finalized, "ManagerRole: already finalized");

        _setupRole(role, account);
        return true;
    }
    function finalize() public onlyOwner {
        require(!_finalized, "ManagerRole: already finalized");
        _finalized = true;
        emit Finalized();
    }
}

File 5 of 16 : 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 6 of 16 : 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 7 of 16 : 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 8 of 16 : 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 9 of 16 : IOpenBiSeaAuction.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 IOpenBiSeaAuction {
    function contractsNFTWhitelisted() external view returns (address[] memory);
    function whitelistContractCreator( address _contractNFT, uint256 fee ) external payable;
    function createAuction( address _contractNFT, uint256 _tokenId, uint256 _price,uint256 _deadline, bool _isERC1155, address _sender, bool _isUSD ) external;
    function bid( address _contractNFT,uint256 _tokenId, uint256 _price, bool _isERC1155, address _sender ) external returns (bool, uint256, address, bool);
    function cancelAuction( address _contractNFT, uint256 _tokenId, address _sender, bool _isERC1155 ) external;
    function checkTokensForClaim( address customer, uint256 priceMainToUSD) external view returns (uint256,uint256,uint256,bool);
    function setConsumersReceivedMainTokenLatestDate(address _sender) external;
}

File 10 of 16 : 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 11 of 16 : IPoolRegistry.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 "./IOracle.sol";
interface IPoolRegistry {
    function isTeam(address account) external view returns (bool);
    function getTeamAddresses() external view returns (address[] memory);
    function getOracleContract() external view returns (IOracle);
}

File 12 of 16 : 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 13 of 16 : 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 14 of 16 : Ownable.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 "../GSN/Context.sol";
contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    constructor() internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    /**
    * @dev Transfers ownership of the contract to a new account (`newOwner`).
    * Can only be called by the current owner.
    */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 15 of 16 : 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)));
    }
}

File 16 of 16 : EnumerableUintSet.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 EnumerableUintSet {
    struct Set {
        bytes32[] _values;
        uint256[] _collection;
        mapping (bytes32 => uint256) _indexes;
    }
    function _add(Set storage set, bytes32 value, uint256 savedValue) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._collection.push(savedValue);
            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();

            uint256 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];
            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 (uint256[] memory) {
        return set._collection;    
    }

    function _at(Set storage set, uint256 index) private view returns (uint256) {
        require(set._collection.length > index, "EnumerableSet: index out of bounds");
        return set._collection[index];
    }
    struct UintSet {
        Set _inner;
    }
    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(value)), value);
    }
    function remove(UintSet storage set, uint256 value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(value)));
    }
    function contains(UintSet storage set, uint256 value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(value)));
    }
    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }
    function collection(UintSet storage set) internal view returns (uint256[] memory) {
        return _collection(set._inner);
    }
    function at(UintSet storage set, uint256 index) internal view returns (uint256) {
        return _at(set._inner, index);
    }
}

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

Contract Security Audit

https://callisto.network/open-bi-sea-security-audit/

Contract ABI

[{"inputs":[{"internalType":"address","name":"tokenForTokensale","type":"address"},{"internalType":"address","name":"superAdmin","type":"address"},{"internalType":"address","name":"gPartner","type":"address"},{"internalType":"address","name":"lPartner","type":"address"},{"internalType":"address","name":"team","type":"address"},{"internalType":"address","name":"poolRegistry","type":"address"},{"internalType":"address","name":"returnInvestmentLpartner","type":"address"},{"internalType":"contract IAssetsManageTeam","name":"assetsManageTeam","type":"address"},{"internalType":"uint256","name":"initialBalance","type":"uint256"},{"internalType":"address","name":"busdContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"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":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"getDepositLengthSender","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"getDepositLengthOwner","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalAmountReturn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"indexesDepositLength","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"balanceThis","type":"uint256"}],"name":"DebugWithdrawLPartner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[],"name":"Finalized","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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","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"},{"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":[],"name":"_activateDepositToPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lPartner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"investedToken","type":"address"}],"name":"_approveWithdrawLpartner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"sender","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","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_depositPoolRegistry","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_disactivateDepositToPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"_getTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"sender","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":"newAuction","type":"address"}],"name":"_setAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"uint256","name":"rate","type":"uint256"}],"name":"_setRate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","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":"string","name":"name","type":"string"},{"internalType":"bool","name":"isPublicPool","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":"auctionCreationFeeMultiplier","type":"uint256"},{"internalType":"uint256","name":"auctionContractFeeMultiplier","type":"uint256"}],"name":"_updatePool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"sender","type":"address"}],"name":"_withdrawLPartner","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"sender","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 payable","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_withdrawTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"sender","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_withdrawTokensToStartup","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"addAdmin","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":"account","type":"address"}],"name":"addTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"auction","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bool","name":"_isERC1155","type":"bool"}],"name":"bid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_bidAmount","type":"uint256"},{"internalType":"bool","name":"_isERC1155","type":"bool"}],"name":"bidUSD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bool","name":"_isERC1155","type":"bool"}],"name":"cancelAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"customer","type":"address"},{"internalType":"uint256","name":"priceMainToUSD","type":"uint256"}],"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":[],"name":"claimFreeTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractsNFTWhitelisted","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"bool","name":"_isERC1155","type":"bool"},{"internalType":"bool","name":"_isUSD","type":"bool"}],"name":"createAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finalize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getDeposit","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":"address","name":"investedToken","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"getDepositLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInfoPool","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"isPublicPool","type":"bool"},{"internalType":"address","name":"tokenForTokensale","type":"address"},{"internalType":"uint256","name":"locked","type":"uint256"},{"internalType":"uint256","name":"initialBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInfoPoolFees","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"depositFixedFee","type":"uint256"},{"internalType":"uint256","name":"referralDepositFee","type":"uint256"},{"internalType":"uint256","name":"auctionCreationFeeMultiplier","type":"uint256"},{"internalType":"uint256","name":"auctionContractFeeMultiplier","type":"uint256"},{"internalType":"uint256","name":"totalIncome","type":"uint256"},{"internalType":"uint256","name":"premiumFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInitialPriceInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getMembersRole","outputs":[{"internalType":"address[]","name":"Accounts","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOracleAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolValues","outputs":[{"internalType":"uint256","name":"poolValueUSD","type":"uint256"},{"internalType":"uint256","name":"poolValue","type":"uint256"},{"internalType":"string","name":"proofOfValue","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"lPartner","type":"address"}],"name":"getReferral","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","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":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"purchaseTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"purchaseTokensQuantityFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"}],"name":"whitelistContractCreator","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"}],"name":"whitelistContractCreatorTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6002805460a060020a60ff0219169055600a805460ff191660011790556000600f81905560105560c0604052600760808190527f6e6f7468696e670000000000000000000000000000000000000000000000000060a090815262000067916011919062000d0d565b5067013b7b21280e0000601e553480156200008157600080fd5b50604051620064c7380380620064c78339818101604052610140811015620000a857600080fd5b508051602082015160408301516060840151608085015160a086015160c087015160e0880151610100890151610120909901519798969795969495939492939192909160006200010064010000000062000648810204565b60028054600160a060020a031916600160a060020a038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350604080517f47454e4552414c5f504152544e45525f524f4c4500000000000000000000000081528151908190036014018120600080516020620064a783398151915282529151908190036010019020620001b291906401000000006200064d810204565b604080517f4c494d495445445f504152544e45525f524f4c4500000000000000000000000081528151908190036014018120600080516020620064a7833981519152825291519081900360100190206200021691906401000000006200064d810204565b604080517f535441525455505f5445414d5f524f4c4500000000000000000000000000000081528151908190036011018120600080516020620064a7833981519152825291519081900360100190206200027a91906401000000006200064d810204565b604080517f504f4f4c5f5245474953545259000000000000000000000000000000000000008152815190819003600d018120600080516020620064a783398151915282529151908190036010019020620002de91906401000000006200064d810204565b604080517f52455455524e5f494e564553544d454e545f4c504152544e45520000000000008152815190819003601a018120600080516020620064a7833981519152825291519081900360100190206200034291906401000000006200064d810204565b604080517f4f5241434c45000000000000000000000000000000000000000000000000000081528151908190036006018120600080516020620064a783398151915282529151908190036010019020620003a691906401000000006200064d810204565b620003ba3364010000000062000662810204565b601c8054600160a060020a03808d16600160a060020a031992831617909255601a8054868416908316179055601b8054888416908316179055601d849055600b80549284169290911691909117905560408051600080516020620064a78339815191528152905190819003601001902062000444903364010000000062001e56620006b482021704565b5060408051600080516020620064a78339815191528152905190819003601001902062000480908a64010000000062001e56620006b482021704565b5060408051600080516020620064a783398151915281529051908190036010019020620004bc908664010000000062001e56620006b482021704565b50620004d564010000000062001add620007de82021704565b604080517f47454e4552414c5f504152544e45525f524f4c45000000000000000000000000815290519081900360140190206200051c90896401000000006200093a810204565b604080517f4c494d495445445f504152544e45525f524f4c45000000000000000000000000815290519081900360140190206200056390886401000000006200093a810204565b604080517f535441525455505f5445414d5f524f4c4500000000000000000000000000000081529051908190036011019020620005aa90876401000000006200093a810204565b604080517f504f4f4c5f5245474953545259000000000000000000000000000000000000008152905190819003600d019020620005f190866401000000006200093a810204565b604080517f52455455524e5f494e564553544d454e545f4c504152544e45520000000000008152905190819003601a0190206200063890856401000000006200093a810204565b5050505050505050505062000daf565b335b90565b60009182526020829052604090912060030155565b6200067d60038264010000000062004462620009e382021704565b604051600160a060020a038216907f3f5f1db80208f0d453083a86e16909cecc1e95e2618d5d927c93ace22b8200fc90600090a250565b6000620006c964010000000062000648810204565b600254600160a060020a039081169116146200073557604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201819052602482015260008051602062006465833981519152604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff1615620007c057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d616e61676572526f6c653a20616c72656164792066696e616c697a65640000604482015290519081900360640190fd5b620007d58383640100000000620009ca810204565b50600192915050565b620007f164010000000062000648810204565b600254600160a060020a039081169116146200085d57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201819052602482015260008051602062006465833981519152604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff1615620008e857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d616e61676572526f6c653a20616c72656164792066696e616c697a65640000604482015290519081900360640190fd5b6002805460a060020a60ff021916740100000000000000000000000000000000000000001790556040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a1565b60008281526020819052604090206003015462000973906200096464010000000062000648810204565b64010000000062000ac0810204565b620009ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018062006436602f913960400191505060405180910390fd5b620009df828264010000000062000aef810204565b5050565b620009f8828264010000000062000baa810204565b1562000a6557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b600160a060020a03166000818152600183810160209081526040808420805460ff191684179055855492830186558584528184209092018054600160a060020a03191685179055845493835260029094019093529190912055565b600082815260208190526040812062000ae890836401000000006200451c62000c3082021704565b9392505050565b600082815260208190526040902062000b1790826401000000006200453162000c5082021704565b15620009df5760008281526001602081815260408320805492830181558352909120018054600160a060020a031916600160a060020a03831617905562000b6664010000000062000648810204565b600160a060020a031681600160a060020a0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000600160a060020a03821662000c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620064856022913960400191505060405180910390fd5b50600160a060020a03166000908152600191909101602052604090205460ff1690565b600062000ae883600160a060020a03841664010000000062000c71810204565b600062000ae883600160a060020a0384168464010000000062000c89810204565b60009081526002919091016020526040902054151590565b600062000ca0848464010000000062000c71810204565b62000d0357508254600180820185556000858152602080822090930185905581860180548084018255908252838220018054600160a060020a031916600160a060020a038616179055855485825260028701909352604090209190915562000ae8565b5060009392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000d5057805160ff191683800117855562000d80565b8280016001018555821562000d80579182015b8281111562000d8057825182559160200191906001019062000d63565b5062000d8e92915062000d92565b5090565b6200064a91905b8082111562000d8e576000815560010162000d99565b6156778062000dbf6000396000f3fe6080604052600436106103b55760003560e060020a900480639010d07c116101eb578063d547741f11610111578063e89ec45f116100a4578063f66fdcca11610073578063f66fdcca14610ff3578063fd66c0671461108e578063fe070e9d146110e3578063fedf51e9146110f8576103bc565b8063e89ec45f14610f2f578063f14d218114610f68578063f2fde38b14610f7d578063f45efe6714610fb0576103bc565b8063d9a431b3116100e0578063d9a431b314610e63578063dae06b7214610e78578063dca80c1914610ebb578063df5dd1a514610efc576103bc565b8063d547741f14610d54578063d5c5e43414610d8d578063d6d6878414610de9578063d93f48b014610e1c576103bc565b8063b06fd88f11610189578063ca15c87311610158578063ca15c87314610c11578063cb4ff7f214610c3b578063cbc5906e14610c80578063d2f0d2a814610c95576103bc565b8063b06fd88f14610a93578063b463a75c14610b40578063bd8afbf814610b73578063c1abd75714610bfc576103bc565b80639cf6cc70116101c55780639cf6cc701461099c5780639f2ac7f8146109c6578063a97e5c9314610a27578063ac6cc60c14610a5a576103bc565b80639010d07c1461090957806391d148541461093957806394707a9514610972576103bc565b8063594ce4c7116102db5780637a99bb0a1161026e57806387ac828a1161023d57806387ac828a1461087957806389e52771146108ac5780638c533ba7146108c15780638da5cb5b146108f4576103bc565b80637a99bb0a146107c35780637d9f6db5146107ed5780637fdbc08b14610802578063878d9b7a14610845576103bc565b80636d8664e0116102aa5780636d8664e01461073d5780637330aba214610752578063770108a7146107675780637837efdc146107ae576103bc565b8063594ce4c7146106975780635ac8b005146106da5780636176dd9f146106ef5780636419bcdb14610704576103bc565b80632dc20f621161035357806338013f021161032257806338013f02146106095780633b0f0f2f1461061e5780634460bdd61461066d5780634bb278f314610682576103bc565b80632dc20f621461058b5780632f2ff15d146105b35780633049ea33146105ec5780633290ce2914610601576103bc565b8063248519141161038f57806324851914146104a4578063248a9ca3146104d7578063261fef02146105015780632726b50614610516576103bc565b8063052c09fd146103c157806316fb3c15146104265780631cda4a8d1461047d576103bc565b366103bc57005b600080fd5b3480156103cd57600080fd5b506103d6611145565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104125781810151838201526020016103fa565b505050509050019250505060405180910390f35b34801561043257600080fd5b506104696004803603606081101561044957600080fd5b50600160a060020a03813581169160208101359091169060400135611267565b604080519115158252519081900360200190f35b34801561048957600080fd5b50610492611471565b60408051918252519081900360200190f35b3480156104b057600080fd5b50610469600480360360208110156104c757600080fd5b5035600160a060020a0316611494565b3480156104e357600080fd5b50610492600480360360208110156104fa57600080fd5b50356114ad565b34801561050d57600080fd5b506104926114c2565b34801561052257600080fd5b5061054f6004803603604081101561053957600080fd5b50600160a060020a0381351690602001356114f7565b6040805196875260208701959095528585019390935290151560608501526080840152600160a060020a031660a0830152519081900360c00190f35b6105b1600480360360208110156105a157600080fd5b5035600160a060020a031661169d565b005b3480156105bf57600080fd5b506105b1600480360360408110156105d657600080fd5b5080359060200135600160a060020a0316611798565b3480156105f857600080fd5b50610469611807565b6104926118cb565b34801561061557600080fd5b50610492611a55565b34801561062a57600080fd5b506106516004803603602081101561064157600080fd5b5035600160a060020a0316611a8a565b60408051600160a060020a039092168252519081900360200190f35b34801561067957600080fd5b50610492611aa8565b34801561068e57600080fd5b506105b1611add565b3480156106a357600080fd5b50610469600480360360608110156106ba57600080fd5b50600160a060020a03813581169160208101359091169060400135611c1d565b3480156106e657600080fd5b50610492611d62565b3480156106fb57600080fd5b50610469611d97565b34801561071057600080fd5b506104696004803603604081101561072757600080fd5b5080359060200135600160a060020a0316611e56565b34801561074957600080fd5b50610492611f4b565b34801561075e57600080fd5b506103d6611f51565b34801561077357600080fd5b506105b16004803603608081101561078a57600080fd5b50600160a060020a0381351690602081013590604081013590606001351515611fb6565b3480156107ba57600080fd5b506105b161250e565b3480156107cf57600080fd5b50610492600480360360208110156107e657600080fd5b5035612519565b3480156107f957600080fd5b506106516125bc565b34801561080e57600080fd5b506104696004803603606081101561082557600080fd5b50600160a060020a038135811691602081013590911690604001356125d0565b6105b16004803603606081101561085b57600080fd5b50600160a060020a03813516906020810135906040013515156127ac565b34801561088557600080fd5b506104926004803603602081101561089c57600080fd5b5035600160a060020a0316612ab6565b3480156108b857600080fd5b506103d6612ad1565b3480156108cd57600080fd5b506105b1600480360360208110156108e457600080fd5b5035600160a060020a0316612b34565b34801561090057600080fd5b50610651612cc2565b34801561091557600080fd5b506106516004803603604081101561092c57600080fd5b5080359060200135612cd1565b34801561094557600080fd5b506104696004803603604081101561095c57600080fd5b5080359060200135600160a060020a0316612cef565b34801561097e57600080fd5b506104696004803603602081101561099557600080fd5b5035612d0d565b3480156109a857600080fd5b506103d6600480360360208110156109bf57600080fd5b5035612d81565b3480156109d257600080fd5b506109ff600480360360408110156109e957600080fd5b50600160a060020a038135169060200135612ded565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b348015610a3357600080fd5b5061046960048036036020811015610a4a57600080fd5b5035600160a060020a0316612eb6565b348015610a6657600080fd5b5061046960048036036040811015610a7d57600080fd5b50600160a060020a038135169060200135612ec9565b348015610a9f57600080fd5b506104696004803603610100811015610ab757600080fd5b810190602081018135640100000000811115610ad257600080fd5b820183602082011115610ae457600080fd5b80359060200191846001830284011164010000000083111715610b0657600080fd5b91935091508035151590600160a060020a036020820135169060408101359060608101359060808101359060a08101359060c00135612fa6565b348015610b4c57600080fd5b506105b160048036036020811015610b6357600080fd5b5035600160a060020a031661304f565b348015610b7f57600080fd5b5061046960048036036060811015610b9657600080fd5b813591602081013591810190606081016040820135640100000000811115610bbd57600080fd5b820183602082011115610bcf57600080fd5b80359060200191846001830284011164010000000083111715610bf157600080fd5b5090925090506130a2565b348015610c0857600080fd5b5061049261312f565b348015610c1d57600080fd5b5061049260048036036020811015610c3457600080fd5b5035613152565b348015610c4757600080fd5b5061046960048036036060811015610c5e57600080fd5b50600160a060020a038135811691602081013582169160409091013516613169565b348015610c8c57600080fd5b50610492613359565b348015610ca157600080fd5b50610caa61337c565b60405180806020018615151515815260200185600160a060020a0316600160a060020a03168152602001848152602001838152602001828103825287818151815260200191508051906020019080838360005b83811015610d15578181015183820152602001610cfd565b50505050905090810190601f168015610d425780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b348015610d6057600080fd5b506105b160048036036040811015610d7757600080fd5b5080359060200135600160a060020a0316613449565b348015610d9957600080fd5b50610dc060048036036020811015610db057600080fd5b5035600160a060020a03166134af565b6040805193151584526020840192909252600160a060020a031682820152519081900360600190f35b348015610df557600080fd5b506105b160048036036020811015610e0c57600080fd5b5035600160a060020a0316613794565b348015610e2857600080fd5b5061046960048036036080811015610e3f57600080fd5b50600160a060020a0381358116916020810135916040820135916060013516613810565b348015610e6f57600080fd5b506105b1613995565b348015610e8457600080fd5b50610ea260048036036020811015610e9b57600080fd5b50356139e5565b6040805192835260208301919091528051918290030190f35b348015610ec757600080fd5b506105b160048036036060811015610ede57600080fd5b50600160a060020a0381351690602081013590604001351515613a5e565b348015610f0857600080fd5b506105b160048036036020811015610f1f57600080fd5b5035600160a060020a0316613af4565b348015610f3b57600080fd5b5061046960048036036040811015610f5257600080fd5b50600160a060020a038135169060200135613b44565b348015610f7457600080fd5b50610469613cf8565b348015610f8957600080fd5b506105b160048036036020811015610fa057600080fd5b5035600160a060020a0316613f8b565b348015610fbc57600080fd5b5061046960048036036060811015610fd357600080fd5b50600160a060020a0381358116916020810135916040909101351661409c565b348015610fff57600080fd5b506110086142c1565b6040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611051578181015183820152602001611039565b50505050905090810190601f16801561107e5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34801561109a57600080fd5b506105b1600480360360c08110156110b157600080fd5b50600160a060020a0381351690602081013590604081013590606081013590608081013515159060a001351515614375565b3480156110ef57600080fd5b50610492614421565b34801561110457600080fd5b5061110d614444565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b6060600a60019054906101000a9004600160a060020a0316600160a060020a031663052c09fd6040518163ffffffff1660e060020a02815260040160006040518083038186803b15801561119857600080fd5b505afa1580156111ac573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156111d557600080fd5b81019080805160405193929190846401000000008211156111f557600080fd5b90830190602082018581111561120a57600080fd5b825186602082028301116401000000008211171561122757600080fd5b82525081516020918201928201910280838360005b8381101561125457818101518382015260200161123c565b5050505090500160405250505090505b90565b604080516000805160206152ea8339815191528152905190819003600d0190206000906112949033612cef565b6112d25760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153706032913960400191505060405180910390fd5b604080516000805160206154f5833981519152815290519081900360110190206112fc9085612cef565b61133a5760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152b76033913960400191505060405180910390fd5b601a54604080517fe33d8221000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a0386811660248301528781166044830152606482018690529151919092169163e33d82219160848083019260209291908290030181600087803b1580156113b757600080fd5b505af11580156113cb573d6000803e3d6000fd5b505050506040513d60208110156113e157600080fd5b50506040805160e060020a63a9059cbb028152600160a060020a0386811660048301526024820185905291519185169163a9059cbb916044808201926020929091908290030181600087803b15801561143957600080fd5b505af115801561144d573d6000803e3d6000fd5b505050506040513d602081101561146357600080fd5b5060019150505b9392505050565b604080516000805160206152ea8339815191528152905190819003600d01902081565b60006114a760038363ffffffff61454716565b92915050565b60009081526020819052604090206003015490565b604080517f52455455524e5f494e564553544d454e545f4c504152544e45520000000000008152905190819003601a01902081565b6000806000806000806018600089600160a060020a0316600160a060020a03168152602001908152602001600020878154811061153057fe5b60009182526020808320600690920290910154600160a060020a038b1683526018909152604090912080548990811061156557fe5b906000526020600020906006020160010154601860008b600160a060020a0316600160a060020a0316815260200190815260200160002089815481106115a757fe5b906000526020600020906006020160020154601860008c600160a060020a0316600160a060020a031681526020019081526020016000208a815481106115e957fe5b6000918252602080832060036006909302019190910154600160a060020a038e16835260189091526040909120805460ff909216918c90811061162857fe5b906000526020600020906006020160040154601860008e600160a060020a0316600160a060020a031681526020019081526020016000208c8154811061166a57fe5b6000918252602090912060069091020160050154949d939c50919a5098509650600160a060020a03909116945092505050565b601454601e546116b29163ffffffff6145b416565b3410156116f35760405160e560020a62461bcd02815260040180806020018281038252602f815260200180615585602f913960400191505060405180910390fd5b600a54604080517f4f63d3ce000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152346024830152915161010090930490911691634f63d3ce9160448082019260009290919082900301818387803b15801561176657600080fd5b505af115801561177a573d6000803e3d6000fd5b5050601654611792925090503463ffffffff61461016565b60165550565b6000828152602081905260409020600301546117bb906117b661466d565b612cef565b6117f95760405160e560020a62461bcd02815260040180806020018281038252602f815260200180615288602f913960400191505060405180910390fd5b6118038282614671565b5050565b604080516000805160206152ea8339815191528152905190819003600d0190206000906118349033612cef565b6118725760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153706032913960400191505060405180910390fd5b600a5460ff16156118b75760405160e560020a62461bcd02815260040180806020018281038252602d815260200180615515602d913960400191505060405180910390fd5b50600a805460ff1916600190811790915590565b600067016345785d8a000034116119165760405160e560020a62461bcd0281526004018080602001828103825260278152602001806154ce6027913960400191505060405180910390fd5b600080611922346139e5565b9092509050816119665760405160e560020a62461bcd0281526004018080602001828103825260268152602001806153a26026913960400191505060405180910390fd5b61197781600363ffffffff61471616565b82106119b75760405160e560020a62461bcd02815260040180806020018281038252606381526020018061543c6063913960800191505060405180910390fd5b601c546040805160e060020a63a9059cbb028152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b158015611a0e57600080fd5b505af1158015611a22573d6000803e3d6000fd5b505050506040513d6020811015611a3857600080fd5b5050601f54611a4d908363ffffffff61461016565b509091505090565b604080517f4f5241434c4500000000000000000000000000000000000000000000000000008152905190819003600601902081565b600160a060020a039081166000908152601960205260409020541690565b604080517f53555045525f41444d494e5f524f4c45000000000000000000000000000000008152905190819003601001902081565b611ae561466d565b600254600160a060020a03908116911614611b4a576040805160e560020a62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff1615611bbd576040805160e560020a62461bcd02815260206004820152601e60248201527f4d616e61676572526f6c653a20616c72656164792066696e616c697a65640000604482015290519081900360640190fd5b6002805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790556040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a1565b604080516000805160206152ea8339815191528152905190819003600d019020600090611c4a9033612cef565b611c885760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153706032913960400191505060405180910390fd5b604080516000805160206154f583398151915281529051908190036011019020611cb29085612cef565b611cf05760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152b76033913960400191505060405180910390fd5b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152306024830152604482018590529151918516916323b872dd916064808201926020929091908290030181600087803b15801561143957600080fd5b604080517f524546455245525f524f4c4500000000000000000000000000000000000000008152905190819003600c01902081565b604080516000805160206152ea8339815191528152905190819003600d019020600090611dc49033612cef565b611e025760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153706032913960400191505060405180910390fd5b600a5460ff16611e465760405160e560020a62461bcd02815260040180806020018281038252602f81526020018061549f602f913960400191505060405180910390fd5b50600a805460ff19169055600190565b6000611e6061466d565b600254600160a060020a03908116911614611ec5576040805160e560020a62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff1615611f38576040805160e560020a62461bcd02815260206004820152601e60248201527f4d616e61676572526f6c653a20616c72656164792066696e616c697a65640000604482015290519081900360640190fd5b611f4283836117f9565b50600192915050565b601e5490565b60606006600001805480602002602001604051908101604052809291908181526020018280548015611fac57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611f8e575b5050505050905090565b600b54604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b15801561202957600080fd5b505af115801561203d573d6000803e3d6000fd5b505050506040513d602081101561205357600080fd5b5050600a54604080517f15b60639000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152602482018790526044820186905284151560648301523360848301529151600093849384938493610100909304909116916315b606399160a48082019260809290919082900301818787803b1580156120e757600080fd5b505af11580156120fb573d6000803e3d6000fd5b505050506040513d608081101561211157600080fd5b5080516020820151604083015160609093015191965094509092509050831561246c57801561246757600061216260646121566012548a6145b490919063ffffffff16565b9063ffffffff61471616565b9050600061218060646121566013548b6145b490919063ffffffff16565b90506000612194898463ffffffff61475816565b33600090815260196020526040902054909150600160a060020a03161561231e576121c5818363ffffffff61475816565b600b5433600090815260196020908152604080832054815160e060020a63a9059cbb028152600160a060020a0391821660048201526024810189905291519596509093169363a9059cbb93604480820194918390030190829087803b15801561222d57600080fd5b505af1158015612241573d6000803e3d6000fd5b505050506040513d602081101561225757600080fd5b5050600b546040805160008051602061535083398151915281529051908190036014019020600160a060020a039091169063a9059cbb90612299906000612cd1565b856040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156122ec57600080fd5b505af1158015612300573d6000803e3d6000fd5b505050506040513d602081101561231657600080fd5b506123de9050565b600b546040805160008051602061535083398151915281529051908190036014019020600160a060020a039091169063a9059cbb9061235e906000612cd1565b856040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156123b157600080fd5b505af11580156123c5573d6000803e3d6000fd5b505050506040513d60208110156123db57600080fd5b50505b600b546040805160e060020a63a9059cbb028152600160a060020a038881166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561243757600080fd5b505af115801561244b573d6000803e3d6000fd5b505050506040513d602081101561246157600080fd5b50505050505b612504565b6000831180156124795750805b1561250457600b546040805160e060020a63a9059cbb028152600160a060020a038581166004830152602482018790529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b505050506040513d602081101561250157600080fd5b50505b5050505050505050565b6125173361479a565b565b600080600c60009054906101000a9004600160a060020a0316600160a060020a031663313ce5676040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561256d57600080fd5b505afa158015612581573d6000803e3d6000fd5b505050506040513d602081101561259757600080fd5b5051600e5490915061146a9060ff8316600a0a9061215690869063ffffffff6145b416565b600a546101009004600160a060020a031690565b604080516000805160206152ea8339815191528152905190819003600d0190206000906125fd9033612cef565b61263b5760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153706032913960400191505060405180910390fd5b604080517f53555045525f41444d494e5f524f4c4500000000000000000000000000000000815290519081900360100190206126779085612cef565b6126b55760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152b76033913960400191505060405180910390fd5b81156127a257600160a060020a03831661270957604051600160a060020a0385169083156108fc029084906000818181858888f193505050501580156126ff573d6000803e3d6000fd5b506001905061146a565b82600160a060020a031663a9059cbb85846040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561276c57600080fd5b505af1158015612780573d6000803e3d6000fd5b505050506040513d602081101561279657600080fd5b506001915061146a9050565b5060009392505050565b600a54604080517f15b60639000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526024820186905234604483015284151560648301523360848301529151600093849384938493610100909304909116916315b606399160a48082019260809290919082900301818787803b15801561283d57600080fd5b505af1158015612851573d6000803e3d6000fd5b505050506040513d608081101561286757600080fd5b50805160208201516040830151606090930151919650945090925090508315612a645780612a5f5760006128ab6064612156601254346145b490919063ffffffff16565b905060006128c96064612156601354346145b490919063ffffffff16565b905060006128dd348463ffffffff61475816565b33600090815260196020526040902054909150600160a060020a0316156129bf5761290e818363ffffffff61475816565b33600090815260196020526040808220549051929350600160a060020a03169184156108fc0291859190818181858888f19350505050158015612955573d6000803e3d6000fd5b506040805160008051602061535083398151915281529051908190036014019020612981906000612cd1565b600160a060020a03166108fc849081150290604051600060405180830381858888f193505050501580156129b9573d6000803e3d6000fd5b50612a24565b60408051600080516020615350833981519152815290519081900360140190206129ea906000612cd1565b600160a060020a03166108fc849081150290604051600060405180830381858888f19350505050158015612a22573d6000803e3d6000fd5b505b604051600160a060020a0386169082156108fc029083906000818181858888f19350505050158015612a5a573d6000803e3d6000fd5b505050505b612aad565b600083118015612a72575080155b15612aad57604051600160a060020a0383169084156108fc029085906000818181858888f19350505050158015612504573d6000803e3d6000fd5b50505050505050565b600160a060020a031660009081526018602052604090205490565b60606003600001805480602002602001604051908101604052809291908181526020018280548015611fac57602002820191906000526020600020908154600160a060020a03168152600190910190602001808311611f8e575050505050905090565b601454600090612b5390670de0b6b3a76400009063ffffffff6145b416565b601c54604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490529051929350600160a060020a03909116916323b872dd916064808201926020929091908290030181600087803b158015612bc957600080fd5b505af1158015612bdd573d6000803e3d6000fd5b505050506040513d6020811015612bf357600080fd5b5050601e54612c2990612c1a90670de0b6b3a764000090612156908563ffffffff6145b416565b6016549063ffffffff61461016565b601655600a54601e54610100909104600160a060020a031690634f63d3ce908490612c5490856145b4565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b158015612ca657600080fd5b505af1158015612cba573d6000803e3d6000fd5b505050505050565b600254600160a060020a031690565b600082815260208190526040812061146a908363ffffffff6147e216565b600082815260208190526040812061146a908363ffffffff61451c16565b604080516000805160206152ea8339815191528152905190819003600d019020600090612d3a9033612cef565b612d785760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153706032913960400191505060405180910390fd5b50600e55600190565b600081815260016020908152604091829020805483518184028101840190945280845260609392830182828015612de157602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311612dc3575b50505050509050919050565b600080600080600a60019054906101000a9004600160a060020a0316600160a060020a0316639f2ac7f887876040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a031681526020018281526020019250505060806040518083038186803b158015612e6957600080fd5b505afa158015612e7d573d6000803e3d6000fd5b505050506040513d6080811015612e9357600080fd5b508051602082015160408301516060909301519199909850919650945092505050565b60006114a760068363ffffffff61454716565b604080516000805160206152ea8339815191528152905190819003600d019020600090612ef69033612cef565b612f345760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153706032913960400191505060405180910390fd5b6040805160008051602061530a83398151915281529051908190036014019020612f5e9084612cef565b612f9c5760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152b76033913960400191505060405180910390fd5b61146a83836147ee565b604080516000805160206152ea8339815191528152905190819003600d019020600090612fd39033612cef565b6130115760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153706032913960400191505060405180910390fd5b61301d60098b8b6151cd565b5050600a805460ff191697151597909717909655600d9390935560129190915560135560145550601555506001919050565b61305833611494565b6130965760405160e560020a62461bcd02815260040180806020018281038252602c8152602001806155b4602c913960400191505060405180910390fd5b61309f81614aaf565b50565b604080516000805160206152ea8339815191528152905190819003600d0190206000906130cf9033612cef565b61310d5760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153706032913960400191505060405180910390fd5b600f8590556010849055613123601184846151cd565b50600195945050505050565b604080516000805160206153508339815191528152905190819003601401902081565b60008181526020819052604081206114a790614af7565b604080516000805160206152ea8339815191528152905190819003600d0190206000906131969033612cef565b6131d45760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153706032913960400191505060405180910390fd5b604080516000805160206153508339815191528152905190819003601401902084906132009082612cef565b806132425750604080517f53555045525f41444d494e5f524f4c4500000000000000000000000000000000815290519081900360100190206132429082612cef565b806132db5750601b54604080517f24851914000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152915191909216916324851914916024808301926020929190829003018186803b1580156132ae57600080fd5b505afa1580156132c2573d6000803e3d6000fd5b505050506040513d60208110156132d857600080fd5b50515b1561331757600160a060020a0384811660009081526019602052604090208054600160a060020a03191691851691909117905560019150613351565b60405160e560020a62461bcd0281526004018080602001828103825260238152602001806153f86023913960400191505060405180910390fd5b509392505050565b604080516000805160206154f58339815191528152905190819003601101902081565b600a54601c54600d54601d546009805460408051602060026101006001861615026000190190941693909304601f81018490048402820184019092528181526060976000978897889788979660ff90941695600160a060020a03909316949193909287918301828280156134315780601f1061340657610100808354040283529160200191613431565b820191906000526020600020905b81548152906001019060200180831161341457829003601f168201915b50505050509450945094509450945094509091929394565b600082815260208190526040902060030154613467906117b661466d565b6134a55760405160e560020a62461bcd0281526004018080602001828103825260308152602001806153c86030913960400191505060405180910390fd5b6118038282614b02565b60008060006134e160405180806000805160206152ea833981519152815250600d019050604051809103902033612cef565b61351f5760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153706032913960400191505060405180910390fd5b6040805160008051602061530a833981519152815290519081900360140190206135499085612cef565b6135875760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152b76033913960400191505060405180910390fd5b6000808061359487612ab6565b90506000805b8281101561378557600160a060020a03891660009081526018602052604081208054839081106135c657fe5b60009182526020909120600690910201600381015490915060ff161561377c5760058101546004820154600160a060020a039091169550156136fb57600160a060020a038516613667576004810154604051600160a060020a038c169180156108fc02916000818181858888f19350505050158015613649573d6000803e3d6000fd5b50600481015461366090879063ffffffff61461016565b95506136fb565b84600160a060020a031663a9059cbb8b83600401546040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156136ce57600080fd5b505af11580156136e2573d6000803e3d6000fd5b505050506040513d60208110156136f857600080fd5b50505b600160a060020a038a16600090815260186020526040812080548490811061371f57fe5b60009182526020808320600692909202909101600301805460ff191693151593909317909255600160a060020a038c16815260189091526040812080548490811061376657fe5b9060005260206000209060060201600401819055505b5060010161359a565b50979296509094509092505050565b61379d33611494565b6137db5760405160e560020a62461bcd02815260040180806020018281038252602c8152602001806155b4602c913960400191505060405180910390fd5b600a8054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b604080517f52455455524e5f494e564553544d454e545f4c504152544e45520000000000008152905190819003601a01902060009061384f9033612cef565b61388d5760405160e560020a62461bcd02815260040180806020018281038252603e815260200180615604603e913960400191505060405180910390fd5b600160a060020a0385166000908152601860205260409020805460019190869081106138b557fe5b906000526020600020906006020160030160006101000a81548160ff021916908315150217905550826018600087600160a060020a0316600160a060020a03168152602001908152602001600020858154811061390e57fe5b906000526020600020906006020160040181905550816018600087600160a060020a0316600160a060020a03168152602001908152602001600020858154811061395457fe5b906000526020600020906006020160050160006101000a815481600160a060020a030219169083600160a060020a0316021790555060019050949350505050565b61399e33611494565b6139dc5760405160e560020a62461bcd02815260040180806020018281038252602c8152602001806155b4602c913960400191505060405180910390fd5b61251733614bf2565b6000806000613a01601f54601d5461475890919063ffffffff16565b90506000613a2082612156601d54601e546145b490919063ffffffff16565b9050613a3e8161215687670de0b6b3a764000063ffffffff6145b416565b601f54601d54613a539163ffffffff61475816565b935093505050915091565b600a54604080517f9b58a9a8000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152602482018690523360448301528415156064830152915161010090930490911691639b58a9a89160848082019260009290919082900301818387803b158015613ae057600080fd5b505af1158015612aad573d6000803e3d6000fd5b613afd33611494565b613b3b5760405160e560020a62461bcd02815260040180806020018281038252602c8152602001806155b4602c913960400191505060405180910390fd5b61309f81614c3a565b604080516000805160206152ea8339815191528152905190819003600d019020600090613b719033612cef565b613baf5760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153706032913960400191505060405180910390fd5b604080516000805160206154f583398151915281529051908190036011019020613bd99084612cef565b613c175760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152b76033913960400191505060405180910390fd5b601a54604080517f1208333a000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a0386811660248301526044820186905291519190921691631208333a9160648083019260209291908290030181600087803b158015613c8c57600080fd5b505af1158015613ca0573d6000803e3d6000fd5b505050506040513d6020811015613cb657600080fd5b5050604051600160a060020a0384169083156108fc029084906000818181858888f19350505050158015613cee573d6000803e3d6000fd5b5060019392505050565b6000806000601b60009054906101000a9004600160a060020a0316600160a060020a031663e3bbb5656040518163ffffffff1660e060020a02815260040160206040518083038186803b158015613d4e57600080fd5b505afa158015613d62573d6000803e3d6000fd5b505050506040513d6020811015613d7857600080fd5b5051604080517f8e15f4730000000000000000000000000000000000000000000000000000000081528151600160a060020a0390931692638e15f47392600480840193919291829003018186803b158015613dd257600080fd5b505afa158015613de6573d6000803e3d6000fd5b505050506040513d6040811015613dfc57600080fd5b50805160209091015190925090506000613e2b33613e268560ff8616600a0a63ffffffff61471616565b612ded565b5091925060009150508115613f4357601c546040805160e060020a63a9059cbb028152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b158015613e9157600080fd5b505af1158015613ea5573d6000803e3d6000fd5b505050506040513d6020811015613ebb57600080fd5b5050600a54604080517fbb7598060000000000000000000000000000000000000000000000000000000081523360048201529051610100909204600160a060020a03169163bb7598069160248082019260009290919082900301818387803b158015613f2657600080fd5b505af1158015613f3a573d6000803e3d6000fd5b50505050600190505b604080518381523360208201528215158183015290517f9d6ad47cb919b7aa19b4e438ceeaa7b16afb7e9a6afe89335044b64c3cb4adca9181900360600190a1935050505090565b613f9361466d565b600254600160a060020a03908116911614613ff8576040805160e560020a62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600160a060020a0381166140405760405160e560020a62461bcd02815260040180806020018281038252602681526020018061532a6026913960400191505060405180910390fd5b600254604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360028054600160a060020a031916600160a060020a0392909216919091179055565b604080516000805160206152ea8339815191528152905190819003600d0190206000906140c99033612cef565b6141075760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153706032913960400191505060405180910390fd5b6040805160008051602061530a833981519152815290519081900360140190206141319085612cef565b61416f5760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152b76033913960400191505060405180910390fd5b600061418b6064612156601254876145b490919063ffffffff16565b905060006141a96064612156601354886145b490919063ffffffff16565b600160a060020a038781166000908152601960205260408120549293509116156141f4576141ed826141e1888663ffffffff61475816565b9063ffffffff61475816565b9050614207565b614204868463ffffffff61475816565b90505b600160a060020a039687166000908152601860209081526040808320815160c08101835294855242858401908152600d5492860192835260608601858152608087018681529a8d1660a088019081528354600180820186559488529590962096516006909502909601938455518382015590516002830155925160038201805460ff1916911515919091179055955160048701555160059095018054600160a060020a031916959097169490941790955550909392505050565b6000806060600f546010546011808054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156143635780601f1061433857610100808354040283529160200191614363565b820191906000526020600020905b81548152906001019060200180831161434657829003601f168201915b50505050509050925092509250909192565b600a54604080517f854fe7ac000000000000000000000000000000000000000000000000000000008152600160a060020a03898116600483015260248201899052604482018890526064820187905285151560848301523360a483015284151560c483015291516101009093049091169163854fe7ac9160e48082019260009290919082900301818387803b15801561440d57600080fd5b505af1158015612501573d6000803e3d6000fd5b6040805160008051602061530a8339815191528152905190819003601401902081565b600e5460125460135460145460155460165460175490919293949596565b61446c8282614547565b156144c1576040805160e560020a62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b600160a060020a03166000818152600183810160209081526040808420805460ff191684179055855492830186558584528184209092018054600160a060020a03191685179055845493835260029094019093529190912055565b600061146a83600160a060020a038416614c81565b600061146a83600160a060020a03841684614c99565b6000600160a060020a0382166145915760405160e560020a62461bcd0281526004018080602001828103825260228152602001806155636022913960400191505060405180910390fd5b50600160a060020a03166000908152600191909101602052604090205460ff1690565b6000826145c3575060006114a7565b828202828482816145d057fe5b041461146a5760405160e560020a62461bcd0281526004018080602001828103825260218152602001806155426021913960400191505060405180910390fd5b60008282018381101561146a576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b600082815260208190526040902061468f908263ffffffff61453116565b156118035760008281526001602081815260408320805492830181558352909120018054600160a060020a031916600160a060020a0383161790556146d261466d565b600160a060020a031681600160a060020a0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061146a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614d0e565b600061146a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614db3565b6147ab60068263ffffffff614e1016565b604051600160a060020a038216907f9c8e7d83025bef8a04c664b2f753f64b8814bdb7e27291d7e50935f18cc3c71290600090a250565b600061146a8383614f58565b600a5460009060ff166148355760405160e560020a62461bcd0281526004018080602001828103825260248152602001806155e06024913960400191505060405180910390fd5b60408051600080516020615350833981519152815290519081900360140190206000906148629082612cd1565b905060006148806064612156601254876145b490919063ffffffff16565b9050600061489e6064612156601354886145b490919063ffffffff16565b600160a060020a0387811660009081526019602052604081205492935091161561495c57600160a060020a0380881660009081526019602052604080822054905192169184156108fc0291859190818181858888f19350505050158015614909573d6000803e3d6000fd5b50604051600160a060020a0385169084156108fc029085906000818181858888f19350505050158015614940573d6000803e3d6000fd5b50614955826141e1888663ffffffff61475816565b90506149a6565b604051600160a060020a0385169084156108fc029085906000818181858888f19350505050158015614992573d6000803e3d6000fd5b506149a3868463ffffffff61475816565b90505b600160a060020a038781166000908152601860209081526040808320815160c08101835286815242818501908152600d54938201938452606082018681526080830187815260a08401888152855460018082018855968a529790982093516006909702909301958655905192850192909255915160028401555160038301805460ff1916911515919091179055516004820155905160059091018054600160a060020a03191691909216179055601654614a609087614610565b601655604080518781529051600160a060020a038916917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25060019695505050505050565b614ac060038263ffffffff61446216565b604051600160a060020a038216907f3f5f1db80208f0d453083a86e16909cecc1e95e2618d5d927c93ace22b8200fc90600090a250565b60006114a782614fbf565b6000828152602081905260409020614b20908263ffffffff614fc316565b156118035760005b600083815260016020526040902054811015614ba55760008381526001602052604090208054600160a060020a038416919083908110614b6457fe5b600091825260209091200154600160a060020a03161415614b9d576000838152600160205260409020614b98908290614fd8565b614ba5565b600101614b28565b50614bae61466d565b600160a060020a031681600160a060020a0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b614c0360038263ffffffff614e1016565b604051600160a060020a038216907f26b6063d78aefcf96f02ff06bc9822b5a623278253add7fffa5fb453db39981090600090a250565b614c4b60068263ffffffff61446216565b604051600160a060020a038216907e47706786c922d17b39285dc59d696bafea72c0b003d3841ae1202076f4c2e490600090a250565b60009081526002919091016020526040902054151590565b6000614ca58484614c81565b614d0657508254600180820185556000858152602080822090930185905581860180548084018255908252838220018054600160a060020a031916600160a060020a038616179055855485825260028701909352604090209190915561146a565b50600061146a565b60008183614d9d5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614d62578181015183820152602001614d4a565b50505050905090810190601f168015614d8f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614da957fe5b0495945050505050565b60008184841115614e085760405160e560020a62461bcd028152602060048201818152835160248401528351909283926044909101919085019080838360008315614d62578181015183820152602001614d4a565b505050900390565b614e1a8282614547565b614e585760405160e560020a62461bcd02815260040180806020018281038252602181526020018061541b6021913960400191505060405180910390fd5b600160a060020a03811660009081526002830160205260409020548015614f335782546000198083019190810190600090869083908110614e9557fe5b6000918252602090912001548654600160a060020a0390911691508190879085908110614ebe57fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790558554869080614ef257fe5b6000828152602080822083016000199081018054600160a060020a0319169055909201909255600160a060020a038716825260028801905260408120555050505b50600160a060020a03166000908152600190910160205260409020805460ff19169055565b81546000908210614f9d5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806152666022913960400191505060405180910390fd5b826000018281548110614fac57fe5b9060005260206000200154905092915050565b5490565b600061146a83600160a060020a038416615082565b815b81546000190181101561505157818160010181548110614ff657fe5b9060005260206000200160009054906101000a9004600160a060020a031682828154811061502057fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600101614fda565b508080548061505c57fe5b60008281526020902081016000199081018054600160a060020a03191690550190555050565b600081815260028301602052604081205480156151c357835460001980830191908101906000908790839081106150b557fe5b90600052602060002001549050808760000184815481106150d257fe5b60009182526020909120015586548790806150e957fe5b60019003818190600052602060002001600090559055600087600101838154811061511057fe5b600091825260209091200154600189018054600160a060020a03909216925082918690811061513b57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055508760010180548061517657fe5b6000828152602080822083016000199081018054600160a060020a031916905590920190925592815260028901909252506040808220600194850190558682528120555091506114a79050565b60009150506114a7565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061520e5782800160ff1982351617855561523b565b8280016001018555821561523b579182015b8281111561523b578235825591602001919060010190615220565b5061524792915061524b565b5090565b61126491905b80821115615247576000815560010161525156fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74496e766573746d656e74506f6f6c3a207468652073656e64657220646f6573206e6f742068617665207065726d697373696f6e504f4f4c5f5245474953545259000000000000000000000000000000000000004c494d495445445f504152544e45525f524f4c450000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737347454e4552414c5f504152544e45525f524f4c45000000000000000000000000526f6c65733a2063616c6c657220646f6573206e6f7420686176652074686520706f6f6c20726567797374727920726f6c65546f6b656e73616c65506f6f6c3a2077652063616e27742073656c6c203020746f6b656e732e416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b655468652073656e64657220646f6573206e6f742068617665207065726d697373696f6e526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65546f6b656e73616c65506f6f6c3a2077652063616e27742073656c6c206d6f7265207468616e203330252066726f6d206f6e65207472616e73616374696f6e2e20506c6561736520646563726561736520696e766573746d656e7420616d6f756e742e496e766573746d656e74506f6f6c3a2074686520706f6f6c20697320616c7265616479206465616374697661746564546f6b656e73616c65506f6f6c3a206d696e696d616c20707572636861736520302e31424e422e535441525455505f5445414d5f524f4c45000000000000000000000000000000496e766573746d656e74506f6f6c3a2074686520706f6f6c20697320616c726561647920616374697661746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734f70656e42695365613a20796f75206d7573742073656e64206d696e696d616c20616d6f756e74206f72206d6f72655465616d526f6c653a2063616c6c657220646f6573206e6f74206861766520746865205465616d20726f6c65496e766573746d656e74506f6f6c3a20706f6f6c206465706f73697420626c6f636b6564526f6c65733a2063616c6c657220646f6573206e6f742068617665207468652072657475726e20696e7665736d656e74206c706172746e657220726f6c65a264697066735822122086c02bb618f6982101152cc80fe17c7b9cd0077892ff9b7d9bedec4f0398ab2564736f6c63430006080033416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e744f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f206164647265737353555045525f41444d494e5f524f4c4500000000000000000000000000000000000000000000000000000000490dba6180b089d8e36ebb1e56a33f1ae9b96b87000000000000000000000000da22293aa75e005f7a6411a85f5ae053ebafd3a9000000000000000000000000027d865ef0b4d1372affe941272f47e013cac66900000000000000000000000068af405930877980147caa9fa942ddd087ef513f00000000000000000000000051b486692321af984bc75d105c54419e35d963b90000000000000000000000004eac987ccbb935348570fd9fe963fb4d17c6571a000000000000000000000000aba81bdbdbf45edca8498d90ab1deb9d85186930000000000000000000000000a5ca66874ca008d7bcd3f3f817a87f98bea75fd20000000000000000000000000000000000000000000001b1ae4d6e2ef5000000000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56

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

000000000000000000000000490dba6180b089d8e36ebb1e56a33f1ae9b96b87000000000000000000000000da22293aa75e005f7a6411a85f5ae053ebafd3a9000000000000000000000000027d865ef0b4d1372affe941272f47e013cac66900000000000000000000000068af405930877980147caa9fa942ddd087ef513f00000000000000000000000051b486692321af984bc75d105c54419e35d963b90000000000000000000000004eac987ccbb935348570fd9fe963fb4d17c6571a000000000000000000000000aba81bdbdbf45edca8498d90ab1deb9d85186930000000000000000000000000a5ca66874ca008d7bcd3f3f817a87f98bea75fd20000000000000000000000000000000000000000000001b1ae4d6e2ef5000000000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56

-----Decoded View---------------
Arg [0] : tokenForTokensale (address): 0x490dba6180b089d8e36ebb1e56a33f1ae9b96b87
Arg [1] : superAdmin (address): 0xda22293aa75e005f7a6411a85f5ae053ebafd3a9
Arg [2] : gPartner (address): 0x027d865ef0b4d1372affe941272f47e013cac669
Arg [3] : lPartner (address): 0x68af405930877980147caa9fa942ddd087ef513f
Arg [4] : team (address): 0x51b486692321af984bc75d105c54419e35d963b9
Arg [5] : poolRegistry (address): 0x4eac987ccbb935348570fd9fe963fb4d17c6571a
Arg [6] : returnInvestmentLpartner (address): 0xaba81bdbdbf45edca8498d90ab1deb9d85186930
Arg [7] : assetsManageTeam (address): 0xa5ca66874ca008d7bcd3f3f817a87f98bea75fd2
Arg [8] : initialBalance (uint256): 8000000000000000000000
Arg [9] : busdContract (address): 0xe9e7cea3dedca5984780bafc599bd69add087d56

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 000000000000000000000000490dba6180b089d8e36ebb1e56a33f1ae9b96b87
Arg [1] : 000000000000000000000000da22293aa75e005f7a6411a85f5ae053ebafd3a9
Arg [2] : 000000000000000000000000027d865ef0b4d1372affe941272f47e013cac669
Arg [3] : 00000000000000000000000068af405930877980147caa9fa942ddd087ef513f
Arg [4] : 00000000000000000000000051b486692321af984bc75d105c54419e35d963b9
Arg [5] : 0000000000000000000000004eac987ccbb935348570fd9fe963fb4d17c6571a
Arg [6] : 000000000000000000000000aba81bdbdbf45edca8498d90ab1deb9d85186930
Arg [7] : 000000000000000000000000a5ca66874ca008d7bcd3f3f817a87f98bea75fd2
Arg [8] : 0000000000000000000000000000000000000000000001b1ae4d6e2ef5000000
Arg [9] : 000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56


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.