contract limitedFactor {
    using SafeMath for uint;
    
    uint256 public totalSupply = 0;
    uint256 public topTotalSupply = 18*10**8*10**6;
    uint256 public teamSupply = percent(15);
    uint256 public teamAlloacting = 0;
    uint256 internal teamReleasetokenEachMonth = 5 * teamSupply / 100;
    uint256 public creationInvestmentSupply = percent(15);
    uint256 public creationInvestmenting = 0;
    uint256 public ICOtotalSupply = percent(30);
    uint256 public ICOSupply = 0;
    uint256 public communitySupply = percent(20);
    uint256 public communityAllocating = 0;
    uint256 public angelWheelFinanceSupply = percent(20);
    uint256 public angelWheelFinancing = 0;
    address public walletAddress;
    uint256 public teamAddressFreezeTime = startTimeRoundOne;
    address public teamAddress;
    uint256 internal teamAddressTransfer = 0;
    uint256 public exchangeRateRoundOne = 16000;
    uint256 public exchangeRateRoundTwo = 10000;
    uint256 internal startTimeRoundOne = 1526313600;
    uint256 internal stopTimeRoundOne =  1528991999;
    
    modifier teamAccountNeedFreeze18Months(address _address) {
        if(_address == teamAddress) {
            require(now >= teamAddressFreezeTime + 1.5 years);
        }
        _;
    }
    
    modifier releaseToken (address _user, uint256 _time, uint256 _value) {
        if (_user == teamAddress){
            require (teamAddressTransfer + _value <= calcReleaseToken(_time)); 
        }
        _;
    }
    
    function calcReleaseToken (uint256 _time) internal view returns (uint256) {
        uint256 _timeDifference = _time - (teamAddressFreezeTime + 1.5 years);
        return _timeDifference / (3600 * 24 * 30) * teamReleasetokenEachMonth;
    } 
    
     /// @dev calcute the tokens
    function percent(uint256 percentage) internal view returns (uint256) {
        return percentage.mul(topTotalSupply).div(100);
    }

}
function percent(uint256 percentage) internal view returns (uint256) {
    return percentage.mul(topTotalSupply).div(100);
}

/// @dev calcute the tokens