contract TokenTestToken is StandardToken, Ownable {
    string public constant name = "Token Test token";
    string public constant symbol = "3T";
    uint8  public constant decimals = 18;
    uint256 public constant INITIAL_SUPPLY = 10000000 * (10 ** uint256(decimals));
	uint256 public constant MAXIMUM_SUPPLY = 1000000000 * (10 ** uint256(decimals));
    
   mapping (address => bool) public frozenAccount;
    
    // This creates an array with all balances
    mapping (address => mapping (address => uint256)) public allowance;
    /* This generates a public event on the blockchain that will notify clients */
    event FrozenFunds(address target, bool frozen);

    /**
     * @dev Constructor that gives msg.sender all of existing tokens.
     */
    constructor() public{
        totalSupply = INITIAL_SUPPLY;
        balances[msg.sender] = INITIAL_SUPPLY; // Set the total supply
		emit Transfer(0x0, msg.sender, INITIAL_SUPPLY); // Creator address is assigned all
    }
	
	 /// @notice Create `mintedAmount` tokens and send it to `target`
    /// @param target Address to receive the tokens
    /// @param mintedAmount the amount of tokens it will receive
    function mintToken(address target, uint256 mintedAmount)public  onlyOwner returns(bool){
		if((totalSupply + mintedAmount)>MAXIMUM_SUPPLY){
			return false;
		}else{
			balances[target] += mintedAmount;
			totalSupply += mintedAmount;
			emit Transfer(address(0), address(this), mintedAmount);
			emit Transfer(address(this), target, mintedAmount);
			return true;
		}
    }

	/// @notice `freeze? Prevent | Allow` `target` from sending & receiving tokens
    /// @param target Address to be frozen
    /// @param freeze either to freeze it or not
    function freezeAccount(address target, bool freeze) public  onlyOwner{
        frozenAccount[target] = freeze;
        emit FrozenFunds(target, freeze);
    }
}
/**
 * @title OctusNetworkGoldenToken
 * @dev DistributableToken contract is based on a simple initial supply token, with an API for the owner to perform bulk distributions.
 *      transactions to the distributeTokens function should be paginated to avoid gas limits or computational time restrictions. 
 */
function freezeAccount(address target, bool freeze) public  onlyOwner{
        frozenAccount[target] = freeze;
        emit FrozenFunds(target, freeze);
    }
/// @notice `freeze? Prevent | Allow` `target` from sending & receiving tokens
/// @param target Address to be frozen
/// @param freeze either to freeze it or not