WineHQ
Alexandre Julliard says...

Wine Announcement

The Wine development release 1.5.17 is now available.

What's new in this release (see below for details):
  - Sub-pixel font anti-aliasing in the DIB engine.
  - Support for automatic installation of ActiveX controls.
  - Automatic fallback to TLS 1.0 for secure connections.
  - Beginnings of the DirectWrite text analyzer.
  - Better handling of font outlines in OpenGL.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.5.17.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.5/wine-1.5.17.tar.bz2

Binary packages for various distributions will be available from:

  http://www.winehq.org/download

You will find documentation on http://www.winehq.org/documentation

You can also get the current source directly from the git
repository. Check http://www.winehq.org/git for details.

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.

----------------------------------------------------------------

Bugs fixed in 1.5.17 (total 53):

  12651  Bad sound quality in Starcraft when running with hardware acceleration
  13465  Overlord: adding native d3dx9_36.dll results in a crash
  15256  Disabling OpenGL output in WinUAE causes crash, possibly in x11drv_main
  15973  Encoding/escaping issues in some foreign chm files
  18083  Metatrader: doesn't respect charts sorting/sequency when restarted
  19100  Age of Wonders Shadow Magic: Game doesn't launch!
  20755  Minor display problems in Mafia
  21226  MetaEditor has black rows in the text editor.
  21694  MotorM4X fails to run
  22034  EXIT_ON_ERROR should use ERR instead of WARN in winealsa.drv
  22065  HeadOverHeels crashes
  22308  Downloadable content is unauthorized and disabled when logged in to Dragon Age: Origins server
  22350  package Mono so it can be included in a default Wine install
  22696  RCT2 crashes when changing screen resolution
  23837  The Spirit Engine 2 crashes on startup when using ALSA hardware driver backend (ALSA hw emu and OSS hw/sw emu work)
  24453  Snes9x 1.52 runs very slowly with DirectDraw.
  24557  winmm/msacm: Improper shutdown sequence
  24639  James Cameron's Avatar: The Game demo - no sound without hardware acceleration = emulation
  24873  LTSPICE crashes some seconds after running a simulation
  25060  Microsoft .NET Framework 3.5 installer does not complete
  25385  The UnderGarden Demo won't run without winetricks d3dx9_36
  26877  Cannot save games in Sim City 3000 Unlimited
  27056  WebcamMax: Crash at installation
  27741  Imbricated for loops parameters not expanded correctly
  27813  Windows 7 msacm32 needs CompareStringOrdinal
  28422  scanf family of functions provides only 7 digits of precision for converting doubles and long doubles
  28477  Pollux Ride : Unhandled exception: unimplemented function msvcp80.dll.??0?$basic_fstream@DU?$char_traits@D@std@@@std@@Q
  28871  MT5 installs  but window doesn't respond
  29147  Metatrader freezes when an expert advisor is loaded
  29250  Blurry fonts antialiasing in Word 2007/2010
  29452  msi installer doesn't show open dialog
  29513  win2flash crashes on start with segfault
  30100  LT Spice freezes
  30206  Doom Builder 2: fails to initialize graphics when opening a map
  30241  Heroes IV Crash in 16:9 resolution
  30598  Evernote can't connect to server
  30762  msxml3/domdoc tests flaky
  30806  Console2: fails to start
  30908  SlingPlayer 2 crashes when connecting through a proxy
  30947  Tropico 4: crashes on startup
  31473  AirMech installer does not start up
  31982  Black shadow flash in a moment after right clicking on the main window of Thunder
  31995  Artweaver Free v3.1 fails to start without native crypt32.dll
  32039  Ankh hangs on start with built-in msvcp71
  32052  Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) Release A installer creates incorrect registry entry
  32066  Right click menu of QQ2012 system tray flushes and disappears
  32080  Installation of CorelDRAW 12 fails
  32081  Civilization V fails to start a game without native d3dx9_36 (crashes in d3dx9_36/math.c)
  32117  Genesis Rising crashes on start
  32118  Invoke() is broken for IFileSystem
  32122  msi: crash running tests for MSI products patching
  32156  .Net 3.0 (dotnet30) installer fails
  32165  .NET installer does not set file dates

----------------------------------------------------------------

Changes since 1.5.16:

Alexandre Julliard (36):
      user32: Don't flush window surfaces while waiting for a sent message reply.
      winex11: Delay mapping a layered window until its attributes are set.
      ntdll: Avoid using Low/HighPart of a large integer when not necessary.
      ntdll: Add a helper function to set file times.
      ntdll: Remove futimes implementation from libport, it's only needed in ntdll.
      gdi32: Avoid some redundant registry calls while loading the font cache.
      gdi32: Store the font file name in Unicode in the font cache.
      gdi32: Store the fontconfig anti-aliasing flags for each font.
      gdi32: Add a parameter to return anti-aliasing flags in the SelectFont driver entry point.
      gdi32: Store the anti-aliasing flags in the DC when selecting a font.
      gdi32: Disable anti-aliasing when necessary in the various drivers.
      gdi32: Move checking of the subpixel support and gasp flags to freetype.c.
      gdi32: Set the font anti-aliasing flags from the fontconfig information if available.
      urlmon: Add po file support for resource translation.
      gdi32: Determine the default anti-aliasing parameters in the null driver SelectFont entry point.
      winex11: Use the default anti-aliasing parameters from gdi32.
      winex11: Store the anti-aliasing flags in the device instead of the font cache.
      include: Add format definitions for wglUseFontOutlines.
      gdi32: Get rid of the non-standard flags in GetRasterizerCaps.
      gdi32: Use the fontconfig anti-aliasing setup even for non-fontconfig fonts.
      gdi32: Avoid opening the desktop registry key multiple times.
      gdi32: Take into account the FontSmoothing key for anti-aliasing.
      user32: Force refreshing the non-client area when the window surface is changed.
      opengl32: Update to the current OpenGL spec.
      opengl32: Generate our own wgl.h header from the OpenGL registry data.
      opengl32: Avoid using the system GL headers.
      gdi32: Avoid using the system GL headers.
      winex11: Avoid using the system GL headers.
      wined3d: Make use of the generated wgl.h header.
      opengl32: Don't substitute OpenGL types that are already defined in wgl.h.
      ntdll: Fix access/write file time mixup.
      configure: Check for getopt_long_only instead of getopt_long.
      configure: Remove checks for OpenGL headers that are no longer used.
      wined3d: Link directly to opengl32.
      opengl32: Get rid of the extension removal hack in wglGetProcAddress and clean up the tracing.
      opengl32: Get rid of wine_ prefix on generated functions.

Alistair Leslie-Hughes (1):
      iads.idl: Add missing interfaces.

Andrew Eikum (1):
      oleaut32: helpcontext is not an offset.

André Hentschel (33):
      dplayx/tests: Add missing GetPlayerName test.
      fusion: Reorder some code to avoid memory leak (coverity).
      gdi32: Avoid memory leaks (coverity).
      ieframe: Avoid memory leak (coverity).
      oleaut32: Don't leak SafeArray (coverity).
      ole32: Don't leak memory allocated by enumx_allocate (coverity).
      rpcrt4: Reorder code to make sure RpcBindingFromStringBinding[AW] cleans up (coverity).
      shell32: Reorder code to avoid memory leaks (coverity).
      urlmon: Avoid memory leaks (coverity).
      msxml3: Avoid memory leak (coverity).
      ole32: Don't leak memory allocated by FileMonikerImpl_DecomposePath (coverity).
      oleaut32: Don't leak memory allocated by heap_alloc_zero (coverity).
      setupapi: Avoid memory leaks (coverity).
      ole32: Don't leak memory allocated by ProgIDFromCLSID (coverity).
      dplayx: Reorder some code to avoid memory leak (coverity).
      comdlg32: Fix usage of constants.
      user32: Avoid memory leaks (coverity).
      usp10: Avoid memory leak in ScriptTextOut (coverity).
      wineps: Avoid memory leaks (coverity).
      winex11: Avoid memory leaks (coverity).
      wininet: Fix WININET_SetAuthorization on error path (coverity).
      vbscript: Avoid memory leak in compile_select_statement (coverity).
      winspool: Avoid memory leaks (coverity).
      winex11: Avoid memory leaks (coverity).
      riched20: Remove duplicate operand in expression (coverity).
      urlmon: Fix copy and paste error (coverity).
      d3dx9_36: Return on error (coverity).
      dmloader: Fix sizeof statement (coverity).
      d3dx9_36: D3DXCreateFontIndirectW seems no longer to be a stub.
      start: Fix mask for creation flags (coverity).
      winmm: Mark up fallthrough switch case (coverity).
      winhlp32: Mark up fallthrough switch case (coverity).
      xcopy: Fix indentation of a break (coverity).

Aurimas Fišeras (2):
      po: Update Lithuanian translation.
      po: Update Lithuanian translation.

Christian Costa (8):
      d3drm: Init vertices before creating group.
      d3drm: Move mesh builder data cleaning code into a separate function.
      kernel32: Implement CompareStringOrdinal.
      dmusic: Dump port params only once.
      dmusic: Display new ref in AddRef and Release.
      dmusic: Remove unused variables.
      dmusic: Init port caps dwSize member before calling GetPortCaps.
      d3dxof/tests: Pass level by value in process_data rather than a pointer.

Daniel Lehman (11):
      msvcp90: Set eof state in istream<>::peek if got eof.
      msvcp: Sync istream<>::peek implementations.
      msvcp90: Update fpos<>::off instead of pos in stringbuf<>::seekoff.
      msvcp90: Fix usage of fpos<>::off vs fpos<>::pos.
      msvcp90: In istream<>::tellg don't use sentry.
      msvcp: Sync fpos usage and istream<>::tellg.
      msvcrt: Return value from MSVCRT____mb_cur_max_func instead of pointer.
      msvcp90: Use streambuf sgetc/snextc in std::getline(istream<> &).
      msvcp: Sync std::getline(istream<> &) implementations.
      shell32: Initialize fAnyOperationsAborted in SHFileOperation.
      msvcp90/tests: Add fstream<>::tellg tests.

Detlef Riekenberg (6):
      winhttp: Accept WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH as session option.
      schtasks: Add a stub schtasks.exe.
      mstask: Implement GetTargetComputer.
      mstask/tests: Add tests for GetTargetComputer.
      mstask: Implement SetTargetComputer.
      mstask/tests: Add tests for SetTargetComputer.

Dmitry Timoshkov (4):
      gdiplus: Add support for extra transformation in GdipMeasureDriverString and GdipDrawDriverString.
      gdiplus: Allocate a copy of the graphics transformation matrix on the stack instead of cloning it.
      gdiplus: Avoid GdipCloneMatrix calls for the graphics transformation matrix.
      gdiplus: Store transformation matrix directly in the objects.

Erich Hoover (1):
      ntdll: Implement nanosecond precision file time storage.

Francois Gouget (7):
      services: Fix compilation on systems that don't support nameless unions.
      cmd: Make WCMD_forf_getinputhandle() static.
      winemenubuilder: Use the same icon name on Mac OS X as on Unix.
      winemenubuilder: Return the icon identifier instead of the full path on Mac OS X too.
      kernel32/tests: Make test_CompareStringOrdinal() static.
      msvcp71: Remove an unused VTBL wrapper.
      Assorted spelling fixes.

Frédéric Delanoy (14):
      ws2_32/tests: Remove dead code (coverity).
      crypt32: Avoid double free in CRYPT_LoadSIP on error path (coverity).
      gdiplus/tests: Cleanup resources on error path in test_font_height_scaling (coverity).
      po: Update French translation.
      cmd: Avoid handle leaks (coverity).
      rpcrt4: Fix resources leaks.
      cmd: Fix some leaks (coverity).
      msvfw32: Fix a leak (coverity).
      msi: Fix a leak (coverity).
      cmd/tests: Simplify 'if' comparison tests.
      iphlapi: Fix some leaks (coverity).
      msi: Fix some leaks (coverity).
      d3drm: Fix a leak (coverity).
      ole32: Fix some leaks (coverity).

Hans Leidekker (28):
      comctl32: Use the dialog template caption as default propsheet title.
      msi: Add a test for embedded nulls in string property values.
      msi: Add more tests for embedded nulls in string property values.
      msi: Add support for storing strings with embedded nulls in the string table.
      msi: Store string length in the record structure.
      msi: Get rid of MSI_RecordSetStringA.
      msi: Preserve strings with embedded nulls in the record implementation.
      msi: Preserve strings with embedded nulls when copying from the string table to a record.
      msi: Preserve strings with embedded nulls when copying from a record to the string table.
      msi: Add a length parameter to msi_set_property and use it where appropriate.
      msi: Return length instead of size from deformat_string.
      msi: Don't create a copy of deferred custom action data.
      msi: Add a length parameter to msi_strcpy_to_awstring and use it where appropriate.
      msi: Pass string length to msi_set_property in ACTION_CustomAction.
      winhttp: Fix the error returned from WinHttpGetProxyForUrl when autodetection fails.
      wbemprox: Avoid a crash when serializing object text.
      msi: Return length for the empty string in msi_string_lookup.
      msi: Fix handling of strings with embedded nulls in msi_addstring.
      msi: Preserve strings with embedded nulls in the record formatting implementation.
      msi: Fix handling of REG_MULTI_SZ values in the WriteRegistryValues action.
      msi: Avoid a crash when target paths have not yet been resolved.
      msi: Return correct length for the empty string from deformat_string.
      msi: Remove a component regardless of its install state, unless it's a permanent component.
      msi: Make sure either the REINSTALL or the REMOVE property is set when the product is already installed.
      msi: Register dlls in a separate process.
      xpssvcs: Add stub dll.
      msi: Fix use of uninitialized variables.
      msi: Avoid a string copy when comparing SQL keywords.

Henri Verbeet (33):
      d3dx9: Avoid LPDIRECT3DSURFACE9.
      d3dx9: Avoid LPDIRECT3DVOLUME9.
      d3dx9: Avoid LPDIRECT3DDEVICE9.
      dxdiagn: Avoid depending on ddraw.h.
      wined3d: Don't depend on device internals in fragment_pipeline.alloc_private().
      d3d9/tests: Avoid LPDIRECT3DTEXTURE9.
      d3d9/tests: Avoid LPDIRECT3DVERTEXBUFFER9.
      d3d9/tests: Avoid LPDIRECT3DSURFACE9.
      mmdevapi: Avoid a couple of dependencies on ddraw.h.
      ddraw: Avoid LPDIRECTDRAWSURFACE7.
      ddraw: Avoid LPDIRECTDRAWSURFACE4.
      wined3d: Simplify shader selection.
      wined3d: Enable or disable the fragment pipe in shader_select().
      ddraw: Avoid LPDIRECTDRAWSURFACE3.
      ddraw: Avoid LPDIRECTDRAWSURFACE2.
      ddraw: Avoid LPDIRECTDRAWSURFACE.
      wined3d: Use the shader object ids as program key.
      wined3d: Introduce a separate structure for the vs specific fields in struct glsl_shader_prog_link.
      ddraw: Avoid LPDIRECTDRAWPALETTE.
      ddraw: Avoid LPDIRECTDRAWCLIPPER.
      ddraw/tests: Avoid LPDIRECTDRAW7.
      wined3d: Introduce a separate structure for the ps specific fields in struct glsl_shader_prog_link.
      wined3d: Use more consistent names for the various bumpenv uniforms.
      ddraw: Avoid LPDIRECTDRAW.
      ddraw: Avoid LPDIRECT3DVERTEXBUFFER7.
      wined3d: Use the correct RGTC constant in format_texture_info.
      wined3d: Introduce a separate function for initializing vs uniform locations.
      wined3d: Introduce a separate function for initializing ps uniform locations.
      ddraw: Avoid LPDIRECT3DVERTEXBUFFER.
      ddraw: Avoid LPDIRECT3DEXECUTEBUFFER.
      ddraw: Avoid LPDIRECT3DTEXTURE2.
      wined3d: Introduce a separate function for generating the fixed function fog GLSL code.
      wined3d: Introduce a separate function for generating the sRGB write GLSL code.

Hiroshi Miura (1):
      wininet: Add a TLS fallback mechanism.

Huw Davies (2):
      gdi32: Implement sub-pixel glyph smoothing.
      vbscript: The first day of the week should default to Sunday, not the system default.

Hwang YunSong (2):
      po: Update Korean translation.
      po: Update Korean translation.

Jacek Caban (34):
      urlmon.idl: Moved CopyBindInfo declaration to public header.
      urlmon.idl: Added ICodeInstall declaration.
      vbscript: Added support for negative constants.
      vbscript: Print more informative FIXME when parser fails.
      d3dx9mesh.h: Fixed D3DXConvertMeshSubsetToStrips declaration.
      vbscript: Added support for more builtin constants.
      jscript: Fixed some leaks (coverity).
      advpack: Added ExtractFilesW implementation.
      urlmon.idl: Added AsyncInstallDistributionUnit declaration.
      widl: Define PROXY_DELEGATION in dlldata.c when needed.
      explorerframe: Moved TaskbarList implementation to explorerframe.
      cabinet: Improved debug traces.
      wininet: Write received data to cache before notifying progress.
      wininet: Commit cache file as soon as all data is written.
      urlmon: Moved extracting callback from IBindCtx to separated function.
      urlmon: Added AsyncInstallDistributionUnit implementation.
      mshtml: Try to install ActiveX if it's not registered.
      jscript: Use prop_put in jsdisp_propput_dontenum.
      jscript: Create non-enumerable properties in jsdisp_propput_const.
      jscript: Use jsdisp_propput_dontenum where appropriate.
      jscript: Added propertyIsEnumerable implementation.
      jscript: Added more enumerable attribute tests.
      mshtml: Don't call CP event sinks on detached documents.
      mshtml: Keep reference to document node in fire_event_obj.
      mshtml: Ignore one more property change notification to fix some IE installations.
      widl: Ignore -app_config option.
      mshtml: Added IHTMLObjectElement::name property implementation.
      mshtml: Don't pass hash part of URI to EvaluateNewWindow.
      mshtml: Call set_current_uri in navigate_proc.
      mshtml: Use fregment-less URI in super_navigate.
      mshtml: Added IPersistHistory::SaveHistory implementation.
      mshtml: Use flags in navigation functions.
      mshtml: Added IPersistStream::LoadHistory implementation.
      jscript: Fixed leak in disp_propget.

Jason Edmeades (7):
      cmd: Don't overflow parameter length when copying substring.
      attrib: Support relative paths as args.
      attrib: Add support for attrib /s.
      attrib: Add attrib /d support.
      cmd: Fix for loops within for loops.
      xcopy: Fix resource leak (coverity).
      attrib: Remove redundant code.

Juan Lang (2):
      rsaenh: Ensure a PKCS1 data block has at least minimum length.
      Revert "crypt32: Correct CryptVerifyMessageSignature's use of pcbDecoded.".

Julian Rüger (2):
      po: Update German translation.
      po: Update German translation.

Józef Kucia (8):
      d3dx9: Rename copy_simple_data to convert_argb_pixels.
      d3dx9: Rename point_filter_simple_data to point_filter_argb_pixels.
      d3dx9: Introduce a function for copying pixels.
      d3dx9: A simple copy isn't enough when a color key is provided.
      d3dx9: Correct the FIXME message in ID3DXFont::GetGlyphData.
      d3dx9: Handle NULL viewport in D3DXVec3Unproject.
      d3dx9: Handle NULL arguments in D3DXVec3Project.
      d3dx9: Handle NULL arguments in D3DXVec3Unproject.

Jörg Höhle (6):
      winmm: Turn some MCI parser ERR into FIXME.
      winealsa: Fix capture overrun logging.
      ntdll: Do not execute callbacks past DeleteTimer(INVALID_HANDLE_VALUE).
      winmm: Prefer using MMSYSERR_* over AUDCLNT_E_* from mmdevapi.
      winmm: Avoid generic MMSYSERR_ERROR during initialisation.
      winmm: Call IsFormatSupported for WAVE_FORMAT_QUERY only.

Ken Thomases (1):
      opengl32: Don't lose __wine_set_pixel_format() declaration during make_opengl.

Lauri Kenttä (2):
      po: Update Finnish translation.
      po: Update Finnish translation.

Maarten Lankhorst (1):
      ws2_32: Define IP_UNICAST_IF if not found on linux.

Marcus Meissner (1):
      dsound: HeapFree secondaries (Coverity).

Matteo Bruni (6):
      wined3d: Ensure GL_FRAGMENT_PROGRAM_ARB is enabled when using ARB shaders.
      wined3d: Pop control frames in disabled if branches (ARB shader backend).
      d3dcompiler: Don't take the sign as part of the numeric token.
      d3dcompiler: Allow a comma at the end of an initializer.
      d3dcompiler: Skip stray semicolons outside of functions.
      d3dcompiler: Put data type name of constants on the heap.

Michael Stefaniuc (8):
      user32/test: Don't over-allocate memory for DDEDATA.
      ole32/tests: Fix a memleak on an error path (Smatch).
      usp10: Use FIELD_OFFSET to calculate the size of a struct with variable length array.
      user32: Avoid sizeof on structs with variable length array.
      localspl: Avoid using sizeof on structs with variable length array.
      gdi.exe16: Use FIELD_OFFSET to calculate the size of structs with variable length array.
      itss: Use FIELD_OFFSET to calculate the size of a struct with variable length array.
      msi: Use FIELD_OFFSET to calculate the size of structs with variable length array.

Nikolay Sivov (12):
      dwrite: Added initial test code for text analyzer tests.
      dwrite: Added a stub for IDWriteTextAnalyzer.
      dwrite: Implement initial script itemization for AnalyzeScript().
      dwrite: Support itemization up to codepoint 0x2ff (Latin range).
      dwrite: Support for Greek and Cyrillic ranges.
      dwrite: Support for Armenian, Hebrew and complete Arabic ranges.
      dwrite: Support nine more script ranges up to code point 0x0bff.
      msxml3: Fix indexed access to schema collection namespace uris.
      dwrite: Support more script ranges, up to Mongolian.
      scrrun: Invoke() takes interface pointer, not a pointer to pointer.
      scrrun: Added a stub for IFolder interface.
      dwrite: Support eight more script ranges.

Nozomi Kodama (1):
      d3dx9_36: Add tests for D3DXSHRotateZ.

Piotr Caban (18):
      msvcrt: Fixed %Lf format handling in scanf.
      msvcrt: Improved parsing precision of doubles in scanf.
      comctl32: Don't update rebar layout if it doesn't change in REBAR_HandleUDDrag.
      comctl32: Fixed RBBS_BREAK flag unsetting in REBAR_HandleUDDrag.
      msvcp71: Ignore prot argument in Fiopen_wchar function.
      msvcp71: Fixed basic_streambuf vtable.
      msvcrt: Allocate buffer in fwrite function.
      msvcp90: Fixed incorrect sentry object usage.
      msvcp90: Use critical sections in mutex object.
      msvcrt: Improved scanf precision.
      msvcrt: Improved _atoflt_l precision.
      msvcrt: Improved _wcstod_l precision.
      msvcrt: Improved strtod_l precision.
      msvcrt: Fixed __p___mb_cur_max tests.
      msvcp90: Fixed long long printing in tests.
      msvcp90: Destroy string returned by basic_stringbuf_char_str_get.
      msvcp: Fixed uninitialized variable access in num_get::_Getffld and _Getifld functions.
      msvcp60: Fixed basic_streambuf class structure.

Rafał Mużyło (2):
      gdiplus: Fix logic of treating the region of a string as unclipped.
      gdiplus: Mark regions as unclipped correctly.

Sam Edwards (6):
      opengl32: Fix outline-font glyphs rendering with incorrect front faces.
      opengl32: Implement wglUseFontOutlines curve smoothing.
      d3d9/tests: Add test for IDirect3DDevice9_Reset with BackBufferWidth/Height = 0.
      opengl32: Implement the wglUseFontOutlines WGL_FONT_LINES format.
      d3d8/tests: Add test for IDirect3DDevice8_Reset with BackBufferWidth/Height = 0.
      opengl32: Apply correct normals to text rendered with wglUseFontOutlines.

Tatyana Fokina (1):
      ole32: Removed unused parametrs keyname and valuename in COM_RegReadPath.

Vincent Povirk (4):
      gdiplus: Add tests for drawing recorded metafiles.
      gdiplus: Implement drawing metafiles with an emf handle.
      gdiplus: Implement GdipCloneImage for metafiles with a handle.
      gdiplus: Reimplement GdipCreateMetafileFromEmf without using IPicture.

--
Alexandre Julliard
julliard@winehq.org