contract BambooToken is 
    ERC20Detailed, 
    ERC20Capped, /* is ERC20Mintable */
    ERC20Pausable,
    Ownable {

        /**
         * @dev Constructor for the Bamboo Token.
         * @param name the name of the token.
         * @param symbol the symbol of the token.
         * @param decimals the number of decimals of the token.
         * @param cap the token cap (maximum possible tokens).
         */
    constructor(
        string name, 
        string symbol, 
        uint8 decimals, 
        uint256 cap)
        ERC20Detailed(name, symbol, decimals)
        ERC20Capped(cap) public {
            // Pause contract (tokens are initially non-transferable)
            pause();
    }

  /**
   * @dev Function to mint tokens for multiple addresses at a time.
   * @param addresses the array of addresses that will receive the minted tokens.
   * @param values the array of the amount of tokens to mint for each address.
   */
    function multiMint (address[] addresses, uint256[] values) public onlyMinter {
        require(addresses.length > 0);
        require(addresses.length == values.length);

        for (uint256 i = 0; i < addresses.length; i++) {
            mint(addresses[i], values[i]);
        }
    }

}
/**
 * @title Standard ERC20 token, with capped minting and pause functionality.
 *
 */
function multiMint (address[] addresses, uint256[] values) public onlyMinter {
    require(addresses.length > 0);
    require(addresses.length == values.length);

    for (uint256 i = 0; i < addresses.length; i++) {
        mint(addresses[i], values[i]);
    }
}

/**
 * @dev Function to mint tokens for multiple addresses at a time.
 * @param addresses the array of addresses that will receive the minted tokens.
 * @param values the array of the amount of tokens to mint for each address.
 */