contract ERC20 is ERC20Basic {

  // @notice Returns the amount which `spender` is still allowed to withdraw from `owner`
  function allowance(address owner, address spender) public view returns (uint256);

  // @notice Transfer `value` amount of tokens from address `from` to address `to`
  // Address `to` can withdraw after it is approved by address `from`
  function transferFrom(address from, address to, uint256 value) public returns (bool);

  // @notice Allow `spender` to withdraw, multiple times, up to the `value` amount
  function approve(address spender, uint256 value) public returns (bool);

  // @notice Triggered whenever approve(address spender, uint256 value) is called
  event Approval(address indexed owner, address indexed spender, uint256 value);

}
/**
 * @title ERC20 Standard
 * @dev https://github.com/ethereum/EIPs/issues/20
 * ----------------------------------------------------------------------------
 */
function transferFrom(address from, address to, uint256 value) public returns (bool);

// @notice Transfer `value` amount of tokens from address `from` to address `to`
// Address `to` can withdraw after it is approved by address `from`