2019-08-07  7.0.8-60 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-60, GIT revision 15986:c3de0e7:20190804.

2019-08-07  7.0.8-60 Cristy  <quetzlzacatenango@image...>
  * Enable reading EXR image file from stdin.

2019-08-04  7.0.8-59 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-59, GIT revision 15986:c3de0e7:20190804.

2019-08-01  7.0.8-59 Cristy  <quetzlzacatenango@image...>
  * Module is a reserved keyword for C++ 20 (reference
    https://github.com/ImageMagick/ImageMagick/issues/1650).

2019-07-29  7.0.8-58 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-58, GIT revision 15962:cf00632:20190729.

2019-07-27  7.0.8-58 Cristy  <quetzlzacatenango@image...>
  * Improve GetNextToken() performance.

2019-07-26  7.0.8-57 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-57, GIT revision 15948:8fba4a3:20190726.

2019-07-22  7.0.8-57 Cristy  <quetzlzacatenango@image...>
  * Heap-buffer-overflow in Postscript coder (reference
    https://github.com/ImageMagick/ImageMagick/issues/1644).
  * The -alpha shape option nondeteministic under OpenMP (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36396).
  * Correction to the ModulusAdd and ModulusSubtract composite op (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=36413).

2019-07-20  7.0.8-56 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-56, GIT revision 15936:2ac4147:20190720.

2019-07-20  7.0.8-56 Cristy  <quetzlzacatenango@image...>
  * Unexpected -alpha shape results (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36396).
  * Converting from PDF to PBM inverts the image (reference
    https://github.com/ImageMagick/ImageMagick/issues/1643).

2019-07-18  7.0.8-55 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-55, GIT revision 15930:ac09240:20190718.

2019-07-18  7.0.8-55 Cristy  <quetzlzacatenango@image...>
  * Heap-buffer overflow (reference
    https://github.com/ImageMagick/ImageMagick/issues/1641
  * PerlMagick test suite passes again (reference
    https://github.com/ImageMagick/ImageMagick/issues/1640) 

2019-07-16  7.0.8-54 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-54, GIT revision 15916:e868e22:20190716.

2019-07-08  7.0.8-54 Cristy  <quetzlzacatenango@image...>
  * resolve division by zero  (reference
     https://github.com/ImageMagick/ImageMagick/issues/1629).
  * introducing MagickLevelImageColors() MagickWand method.
  * Transient problem with text placement with gravity (reference
    https://github.com/ImageMagick/ImageMagick/issues/1633).
  * Support TIM2 image format (reference
    https://github.com/ImageMagick/ImageMagick/pull/1571).
  * For -magnify option, specify an alternative scaling method with -define
    magnify:method=method, choose from these methods: eagle2X, eagle3X,
    eagle3XB, epb2X, fish2X, hq2X,  scale2X (default), scale3X, xbr2X.

2019-07-05  7.0.8-53 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-53, GIT revision 15828:f5d59c0:20190705.

2019-07-05  7.0.8-53 Cristy  <quetzlzacatenango@image...>
   * Fix -fx parsing issue (reference
     https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36314).

2019-07-05  7.0.8-52 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-52, GIT revision 15825:ea47310:20190705.

2019-07-01  7.0.8-52 Cristy  <quetzlzacatenango@image...>
  * Eliminate buffer overflow in TranslateEvent() (reference
    https://github.com/ImageMagick/ImageMagick/issues/1621).

2019-06-30  7.0.8-51 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-51, GIT revision 15812:51f11c4:20190630.

2019-06-24  7.0.8-51 Cristy  <quetzlzacatenango@image...>
  * Clone rather than copy X window name/icon.
  * Optimize PDF reader.

2019-06-23  7.0.8-50 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-50, GIT revision 15778:4a60519:20190623

2019-06-14  7.0.8-50 Dirk Lemstra <dirk@lem.....org>
  * Added support for reading all images from a HEIC image (reference
    https://github.com/ImageMagick/ImageMagick/issues/1391).
  * Heap-buffer-overflow in MagickCore/fourier.c (reference
   https://github.com/ImageMagick/ImageMagick/issues/1588).
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-06-08  7.0.8-49 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-49, GIT revision 15708:6d7e1db:20190608

2019-06-03  7.0.8-49 Cristy  <quetzlzacatenango@image...>
  * Add support for RGB565 image format (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=36078).
  * Use user defined allocator instead of `malloc` (reference
    https://github.com/ImageMagick/ImageMagick6/pull/49/).
  * Add static decorator to accelerator kernels (reference
    https://github.com/ImageMagick/ImageMagick/issues/1366).

2019-06-01  7.0.8-48 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-48, GIT revision 15689:061a3bb82:20190601

2019-06-01  7.0.8-48 Cristy  <quetzlzacatenango@image...>
  * Fix transient convolution bug (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36119).

2019-05-26  7.0.8-47 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-47, GIT revision 15681:5cffc6cbb:20190526

2019-05-19  7.0.8-47 Cristy  <quetzlzacatenango@image...>
  * Support 16 and 32 bit tiled float TIFF images.
  * Convolve morphology alpha channel fix (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36086).
  * Text improvements to the internal SVG renderer.

2019-05-14  7.0.8-46 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-46, GIT revision 15655:84dd3301c:20190518

2019-05-14  7.0.8-46 Cristy  <quetzlzacatenango@image...>
  * PerlMagick unit tests pass again.
  * Builds under MacOS X and FreeBSD works again.
  * Return HEIC images in the sRGB colorspace.

2019-05-12  7.0.8-45 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-45, GIT revision 15634:784105bcb:20190512

2019-05-06  7.0.8-45 Cristy  <quetzlzacatenango@image...>
  * Fix image signatures to ensure they are Q-depth invariant (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=35970).
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-05-03  7.0.8-44 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-44, GIT revision 15600:41f47759a:20190503

2019-05-03  7.0.8-44 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-05-01  7.0.8-43 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-43, GIT revision 15595:0062cef74:20190502

2019-05-01  7.0.8-43 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-04-29  7.0.8-42 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-42, GIT revision 15570:71190ccd0:20190424

2019-04-20  7.0.8-42 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-04-19  7.0.8-41 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-41, GIT revision 15540:c78993d13:20190420

2019-04-13  7.0.8-41 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Honor SOURCE_DATE_EPOCH environment variable (reference
    https://github.com/ImageMagick/ImageMagick/pull/1496/).
  * Standardize on UTC time for any image format timestamp.
  * Add MagickAutoThresholdImage(), MagickCannyEdgeImage(),
    MagickComplexImages(), MagickConnectedComponentsImage(),
    MagickHoughLineImage(), MagickKuwaharaImage(), MagickLevelizeImageColors(),
    MagickLevelImageColors(), MagickMeanShiftImage(), MagickPolynomialImage(),
    MagickRangeThresholdImage(), MagickSetSeed(), MagickWaveletDenoiseImage()
    methods to MagickWand API.

2019-04-12  7.0.8-40 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-40, GIT revision 15510:7e503e231:20190412

2019-04-10  7.0.8-40 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).


2019-04-07  7.0.8-39 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-39, GIT revision 15489:6120f8bc1:20190406

2019-04-06  7.0.8-39 Cristy  <quetzlzacatenango@image...>
  * The -layers option compared pixels inocorrectly as opacity rather than
    alpha.
  * The -preview raise option now returns expected results.
  * Initialise ghostscript instances with NULL (reference
    https://github.com/ImageMagick/ImageMagick/pull/1538).

2019-04-06  7.0.8-38 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-38, GIT revision 15483:23edcef04:20190406

2019-04-06  7.0.8-38 Cristy  <quetzlzacatenango@image...>
  * Modulo off by one patch for -virtual-pixel option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=35789).

2019-04-03  7.0.8-37 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-37, GIT revision 15470:477216fd7:20190403

2019-04-03  7.0.8-37 Cristy  <quetzlzacatenango@image...>
  * Fixed -virtual-pixel option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=35789).

2019-03-31  7.0.8-36 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-36, GIT revision 15464:3a928224d:20190331

2019-03-27  7.0.8-36 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-03-24  7.0.8-35 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-35, GIT revision 15440:4a0a88e41:20190324

2019-03-23  7.0.8-35 Cristy  <quetzlzacatenango@image...>
  * -draw image DstOver is now responsive to the composite operator (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=35650).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-03-15  7.0.8-34 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-34, GIT revision 15413:860af935d:20190315

2019-03-11  7.0.8-34 Cristy  <quetzlzacatenango@image...>
  * Associate one lock with each resource.
  * Report exception if opening TIFF did not work out.
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2019-03-10  7.0.8-33 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-33, GIT revision 15401:c805e3205:20190310

2019-03-06  7.0.8-33 Cristy  <quetzlzacatenango@image...>
  * Fix SVG conversion infinite loop (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=35591).
  * Initialize primitive drawing structure after resizing.

2019-03-05  7.0.8-32 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-32, GIT revision 15386:58d9c4692:20190305

2019-03-05  7.0.8-32 Cristy  <quetzlzacatenango@image...>
  * Fix out-of-boundary LocaleLowerCase() @
    https://github.com/ImageMagick/ImageMagick/issues/1495

2019-03-04  7.0.8-31 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-31, GIT revision 15381:3122a669d:20190304

2019-03-04  7.0.8-31 Cristy  <quetzlzacatenango@image...>
  * -trim is no longer sensitive to the image virtual canvas.

2019-03-03  7.0.8-30 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-30, GIT revision 15376:16d2b4e6a:20190303

2019-03-03  7.0.8-30 Cristy  <quetzlzacatenango@image...>
  * Support define to remove additional background from an image during a
    trim, e.g. -fuzz 5% -define trim:percent-background=0% -trim.

2019-02-28  7.0.8-29 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-29, GIT revision 15368:5d8ed9f56:20190228

2019-02-28  7.0.8-29 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2019-02-18  7.0.8-28 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-28, GIT revision 15345:09a7c67dd:20190218

2019-02-12  7.0.8-28 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-02-09  7.0.8-27 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-27, GIT revision 15315:5d48cd312:20190209

2019-02-09  7.0.8-27 Cristy  <quetzlzacatenango@image...>
  * Mod patch to properly handle subimage ranges (e.g. image.gif[2-3]).

2019-02-03  7.0.8-26 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-26, GIT revision 15294:726bd82a3:20190203

2019-02-02  7.0.8-26 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-01-27  7.0.8-25 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-25, GIT revision 15279:7da783a5b:20190127

2019-01-19  7.0.8-25 Cristy  <quetzlzacatenango@image...>
  * Eliminate spurious font warning (reference
    https://github.com/ImageMagick/ImageMagick/issues/1458).
  * Support HEIC EXIF & XMP profiles.

2019-01-12  7.0.8-24 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-24, GIT revision 15233:db129ba64:20190112

2019-01-08  7.0.8-24 Cristy  <quetzlzacatenango@image...>
  * Support -clahe option real clip limit (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=35292).
  * ShadeImage() kernels can return negative pixels, clamp to range (reference
    https://github.com/ImageMagick/ImageMagick/issues/1319).
  * Annotate with negative offsets no longer renders slanted text.

2019-01-01  7.0.8-23 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-23, GIT revision 15199:ba07f7d07:20190101

2019-01-01  7.0.8-23 Cristy  <quetzlzacatenango@image...>
  * CacheInfo destructor must be aligned in DestroyPixelStream().

2018-12-30  7.0.8-22 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-22, GIT revision 15189:842164090:20181230

2018-12-29  7.0.8-22 Cristy  <quetzlzacatenango@image...>
  * Support negative rotations in a geometry (e.g. -10x-10+10+10).
  * Return expected canvas offset after a crop with gravity.

2018-12-27  7.0.8-21 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-21, GIT revision 15179:114be1716:20181227

2018-12-27  7.0.8-21 Cristy  <quetzlzacatenango@image...>
  * Check to ensure SeekBlob() offset can be represented in an off_t.

2018-12-23  7.0.8-20 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-20, GIT revision 15170:8e8222e87:20181223

2018-12-23  7.0.8-20 Cristy  <quetzlzacatenango@image...>
  * Cube image format returns a HALD image.
  * CLAHE tiles overlapped are now centered relative to the image.

2018-12-19  7.0.8-19 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-19, GIT revision 15153:e74ed77f5:20181219

2018-12-18  7.0.8-18 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-18, GIT revision 15146:b5eccd295:20181218

2018-12-18  7.0.8-18 Cristy  <quetzlzacatenango@image...>
  * Fixed Magick++ compile error on Mac OS X.

2018-12-17  7.0.8-17 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-17, GIT revision 15142:32f2d195e:20181217

2018-12-02  7.0.8-16 Cristy  <quetzlzacatenango@image...>
  * Support -clahe clip limit with percentages (e.g. -clahe 50x50%+128+3).

2018-12-10  7.0.8-16 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-16, GIT revision 15109:9a9af88de:20181210.

2018-12-02  7.0.8-16 Cristy  <quetzlzacatenango@image...>
  * Check for modulo underflow.
  * Change SVG default DPI to 96 from 90 to meet recommendation of SVG2 & CSS.

2018-12-01  7.0.8-15 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-15, GIT revision 15059:2fb22e07b:20181201

2018-11-21  7.0.8-15 Cristy  <quetzlzacatenango@image...>
  * Added support for the -clahe option: contrast limited adaptive histogram
    equalization.

2018-11-13  7.0.8-15 Dirk Lemstra <dirk@lem.....org>
  * Added support for GIMP 2.10 files (reference
    https://github.com/ImageMagick/ImageMagick/pull/1381).

2018-10-23  7.0.8-14 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-14, GIT revision 14943:1a0da3dd0:20181023

2018-10-21  7.0.8-13 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-13, GIT revision 14936:d3ec5abe2:20181021.

2018-10-04  7.0.8-13 Dirk Lemstra <dirk@lem.....org>
  * Adding coder headers with magic.xml will no longer be supported.
  * Adding coder aliases with coder.xml will no longer be supported.

2018-09-16  7.0.8-12 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-12, GIT revision 14843:cb5cf1959:20180923

2018-09-15  7.0.8-12 Dirk Lemstra <dirk@lem.....org>
  * Added support for arithmetic coding to the jpeg encoder:
    -define jpeg:arithmetic-coding=true.

2018-09-08  7.0.8-12 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-08-28  7.0.8-11 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-11, GIT revision 14729:798fbdb5b:20180828

2018-08-15  7.0.8-11 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).
  * Add support for "module" security policy.

2018-08-13  7.0.8-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-10, GIT revision 14646:48fba3256:20180813

2018-08-12  7.0.8-10 Dirk Lemstra <dirk@lem.....org>
  * Added dcraw coder (dcraw:img.cr2) that can be used to force the use of the
    dcraw delegate when libraw is the default raw delegate.
  * Restored thread support for the HEIC coder.

2018-08-08  7.0.8-10 Cristy  <quetzlzacatenango@image...>
  * ThumbnailImage function no longer reveals sensitive information (reference
    https://github.com/ImageMagick/ImageMagick/issues/1243).

2018-08-06  7.0.8-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-9, GIT revision 14618:a3663c3dc:20180805.

2018-07-24  7.0.8-9 Cristy  <quetzlzacatenango@image...>
  * XBM coder leaves the hex image data uninitialized if hex value of the
    pixel is negative.
  * More improvements to SVG text handling.
  * New -range-threshold option that combines hard and soft thresholding.

2018-07-23  7.0.8-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-8, GIT revision 14583:300fdbcfd:20180723.

2018-07-20  7.0.8-8 Cristy  <quetzlzacatenango@image...>
  * Non-HDRI ScaleLongToQuantum() private method no longer adds a half interval.
  * Fixed memset() negative-size-param (reference
    https://github.com/ImageMagick/ImageMagick/issues/1217).

2018-07-16  7.0.8-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-7, GIT revision 14561:f85c23180:20180716.

2018-07-15  7.0.8-7 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-07-08  7.0.8-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-6, GIT revision 14541:db940ccd2:20180708.

2018-07-06  7.0.8-6 Cristy  <quetzlzacatenango@image...>
  * Improve SVG support for tspan element.
  * Add support for -fx image.extent.

2018-07-04  7.0.8-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-5, GIT revision 14514:bba545bbb:20180704.

2018-07-04  7.0.8-5 Cristy  <quetzlzacatenango@image...>
  * Fixed a few potential memory leaks
    https://github.com/ImageMagick/ImageMagick/issues).

2018-07-02  7.0.8-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-4, GIT revision 14505:4613eed4a:20180702.

2018-06-28  7.0.8-4 Cristy  <quetzlzacatenango@image...>
  * Small tweaks to compile under Cygwin.
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).
  * Support %B property, the image file size without any decorations.

2018-06-24  7.0.8-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-3, GIT revision 14489:c63c504e8:20180624.

2018-06-24  7.0.8-3 Cristy  <quetzlzacatenango@image...>
  * Apply translate component of SVG transform rotate.

2018-06-18  7.0.8-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-2, GIT revision 14476:cda11d81d:20180618.

2018-06-18  7.0.8-2 Cristy  <quetzlzacatenango@image...>
  * More robust SVG text handling.

2018-06-16  7.0.8-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-1, GIT revision 14468:94cb08785:20180616.

2018-06-16  7.0.8-1 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).
  * Fixed an issue with stroke and label: (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=34142).
  * PNG: set storage class to DirectClass if alpha enabled (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=34121).

2018-06-12  7.0.8-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-0, GIT revision 14459:d7c892d5a:20180612.

2018-06-11  7.0.8-0  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-06-11  7.0.7-39 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-39, GIT revision 14445:cc962acde:20180611.

2018-06-06  7.0.7-39  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-06-02  7.0.7-38 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-38, GIT revision 14409:01e395a73:20180602.

2018-05-30  7.0.7-38  <quetzlzacatenango@image...>
  * Heap buffer overflow fix (reference
    https://github.com/ImageMagick/ImageMagick/issues/1156).
  * Boundary issues with -gamma option when HDRI is enabled (reference
    https://github.com/ImageMagick/ImageMagick/issues/1151).
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-05-29  7.0.7-37 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-37, GIT revision 14393:61d7e8b17:20180529.

2018-05-29  7.0.7-37  <quetzlzacatenango@image...>
  * Properly initialize SVG color style.

2018-05-28  7.0.7-36 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-36, GIT revision 14390:3a6bd703f:20180528.

2018-05-28  7.0.7-36  <quetzlzacatenango@image...>
  * A SVG rectangle with a width and height of 1 is a point.

2018-05-21  7.0.7-35 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-35, GIT revision 14356:13507412c:20180521.

2018-05-21  7.0.7-35  <quetzlzacatenango@image...>
  * Fixed memory corruption for MVG paths.

2018-05-20  7.0.7-34 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-34, GIT revision 14348:ac9ff6ba1:20180520.

2018-05-20  7.0.7-34 Dirk Lemstra <dirk@lem.....org>
  * Added support for reading eXIf chunks to the PNG coder.

2018-05-19  7.0.7-34  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).
  * Improved clip / composite mask handling.

2018-05-16  7.0.7-33 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-33, GIT revision 14326:58c2e4972:20180516.

2018-05-03  7.0.7-33  <quetzlzacatenango@image...>
  * Restore SetImageAlpha() behavior.
  * Fix -clip and -mask options.

2018-05-13  7.0.7-32 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-32, GIT revision 14307:f61f674e3:20180513.

2018-05-03  7.0.7-31  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-05-01  7.0.7-30 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-30, GIT revision 14242:730f1d1d3:20180501.

2018-05-01  7.0.7-30  <quetzlzacatenango@image...>
  * Missing break when checking "compliance" element.

2018-04-30  7.0.7-29 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-29, GIT revision 14225:41edbdcea:20180430.

2018-03-26  7.0.7-29  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-03-24  7.0.7-28 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-28, GIT revision 23615:edd71782e:20180325.

2018-03-21  7.0.7-28  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-03-18  7.0.7-27 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-27, GIT revision 23466:734b146df:20180318.

2018-03-17  7.0.7-27  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-03-11  7.0.7-26 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-26, GIT revision 23344:7a03766ef:20180311.

2018-03-10  7.0.7-26  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-03-04  7.0.7-25 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-25, GIT revision 23177:17a986472:20180304.

2018-03-04  7.0.7-25 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-02-25  7.0.7-24 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-24, GIT revision 23079:7ccb76178:20180225.

2018-02-19  7.0.7-24 Cristy  <quetzlzacatenango@image...>
  * Do not refer to page in OptimizeLayerFrames (reference
    https://github.com/ImageMagick/ImageMagick/pull/987).
  * PerlMagick unit tests pass again.
  * Fixed numerous use of uninitialized values, integer overflow,
    memory exceeded, and timeouts (credit to OSS Fuzz).

2018-02-18  7.0.7-23 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.0-23, GIT revision 22969:c6b3a22b0:20180218.

2018-02-09  7.0.7-23 Dirk Lemstra <dirk@lem.....org>
  * Add support for reading the HEIC image format to the Windows build.

2018-01-23  7.0.7-23 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow,
    memory exceeded, and timeouts (credit to OSS Fuzz).
  * Add list-length policy to limit the maximum image sequence length.

2018-01-22  7.0.7-22 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.0-22, GIT revision 22391:e8be814f1:20180122.

2018-01-06  7.0.7-22 Cristy  <quetzlzacatenango@image...>
  * Support aspect ratio geometry, e.g. -crop 3:2.
  * Add support for reading the HEIC image format (reference
    https://github.com/ImageMagick/ImageMagick/issues/507).
  * Fixed numerous memory leaks, credit to OSS Fuzz.

2018-01-06  7.0.7-21 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.0-21, GIT revision 22168:a91afc45b:20180106.

2018-01-06  7.0.7-21 Dirk Lemstra <dirk@lem.....org>
  * Fix some enum values in the OpenCL code.

2018-01-06  7.0.7-20 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-20, GIT revision 22161:33a04d3e5:20180105.

2018-01-05  7.0.7-20 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2018-01-01  7.0.7-19 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-19, GIT revision 22133:977fe08bf:20180101.

2017-12-29  7.0.7-19 Cristy  <quetzlzacatenango@image...>
  * Check for webpmux library version 0.4.4 (reference
    https://github.com/ImageMagick/ImageMagick/issues/896).

2017-12-26  7.0.7-18 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-18, GIT revision 22096:ad4bdeb40:20171228.

2017-12-28  7.0.7-18 Cristy  <quetzlzacatenango@image...>
  * Fix error reading from pipe under Windows (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=33288).

2017-12-26  7.0.7-17 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-17, GIT revision 22093:9caea323b:20171227.

2017-12-26  7.0.7-17 Cristy  <quetzlzacatenango@image...>
  * Fix heap use after free error (reference
    https://github.com/ImageMagick/ImageMagick/issues/918).

2017-12-24  7.0.7-16 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-16, GIT revision 22038:e55dc7626:20171225.

2017-12-18  7.0.7-16 Cristy  <quetzlzacatenango@image...>
  * Fix error reading multi-layer XCF image file.
  * Fix possible stack overflow in WEBP reader (reference
    https://github.com/ImageMagick/ImageMagick/issues/907)
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-12-16  7.0.7-15 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-15, GIT revision 21924:30cb31746:20171216.

2017-12-08  7.0.7-15 Cristy  <quetzlzacatenango@image...>
  * Overall standard deviation is the average of each pixel channel (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Update to the latest ImageMagick documentation.

2017-12-05  7.0.7-14 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-14, GIT revision 21855:dc73b2aba:20171205.

2017-11-30  7.0.7-14 Cristy  <quetzlzacatenango@image...>
  * Support Stereo composite operator.
  * Fix build failure with --without-modules (reference
    https://github.com/ImageMagick/ImageMagick/issues/890).

2017-11-30  7.0.7-13 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-13, GIT revision 21823:72cb0fd0c:20171130.

2017-11-30  7.0.7-13 Cristy  <quetzlzacatenango@image...>
  * Fix build failure with libraw 0.14.8 (reference
    https://github.com/ImageMagick/ImageMagick/issues/888).

2017-11-29  7.0.7-12 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-12, GIT revision 21814:5ef2c5a67:20171129.

2017-11-12  7.0.7-12 Cristy  <quetzlzacatenango@image...>
  * The -tint option no longer munges the alpha channel (reference
    http://imagemagick.org/discourse-server/viewtopic.php?f=1&t=33070).
  * Don't delete in-memory blob when reading an image (reference
    https://github.com/ImageMagick/ImageMagick/issues/886).
  * Support HDRI color profile management.

2017-11-11  7.0.7-11 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-11, GIT revision 21635:0447c6b46:20171111.

2017-11-05  7.0.7-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-10, GIT revision 21612:36e2aabfd:20171105.

2017-11-03  7.0.7-10 Dirk Lemstra <dirk@lem.....org>
  * Fixed a problem with resource bookkeeping in AcquireMatrixInfo().

2017-10-30  7.0.7-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-9, GIT revision 21580:2682a311e:20171031.

2017-10-20  7.0.7-9 Cristy  <quetzlzacatenango@image...>
  * Encode JSON control characters (reference
    https://github.com/ImageMagick/ImageMagick/issues/848).

2017-10-27  7.0.7-9 Dirk Lemstra <dirk@lem.....org>
  * Added support for reading mipmaps in dds images (reference
    https://github.com/ImageMagick/ImageMagick/issues/845).

2017-10-15  7.0.7-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-8, GIT revision 21507:63ffc9878:20171015.

2017-10-08  7.0.7-8 Cristy  <quetzlzacatenango@image...>
  * Return expected results for a percent 0 -chop option argument (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32806).
  * Tweaks to OpenMP support within ImageMagick.

2017-10-07  7.0.7-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-7, GIT revision 21432:29003eeed:20171007.

2017-10-06  7.0.7-7 Cristy  <quetzlzacatenango@image...>
  * Correct handling of GIF transparency (reference
    https://github.com/ImageMagick/ImageMagick/issues/831).

2017-10-04  7.0.7-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-6, GIT revision 21426:0a1cb507b:20171004.

2017-10-03  7.0.7-6 Cristy  <quetzlzacatenango@image...>
  * Reset the magick_list_initialized boolean when needed (reference
    https://github.com/ImageMagick/ImageMagick/pull/826).

2017-10-01  7.0.7-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-5, GIT revision 21382:3846f9d97:20171001.

2017-09-28  7.0.7-5 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Support URW-base35 fonts.

2017-09-26  7.0.7-5 Glenn Randers-Pehrson <glennrp@image...>
  * Removed "ping_preserve_iCCP=MagickTrue;" statement that was inadvertently
    added to coders/png.c (reference
    http://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32771).

2017-09-23  7.0.7-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-4, GIT revision 21265:bdbc14590:20170923.

2017-09-23  7.0.7-4 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/pull/763).

2017-09-17  7.0.7-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-3, GIT revision 21202:6e6907ac7:20170917.

2017-09-17  7.0.7-3 ADLab of Venustech
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/pull/763).

2017-09-15  7.0.7-3 Glenn Randers-Pehrson <glennrp@image...>
  * Stop potential leaks in the JNG decoder (reference:
    https://github.com/ImageMagick/ImageMagick/issues/760).
  * Maximum valid hour is 23, not 24, in the PNG tIME chunk, and maximum
    valid minute is 59, not 60.

2017-09-12  7.0.7-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-2, GIT revision 21089:4e46ad9dd:20170912.

2017-09-11  7.0.7-2 Glenn Randers-Pehrson <glennrp@image...>
  * Use signed integer arithmetic to calculate timezone corrections (reference
    https://github.com/ImageMagick/ImageMagick/issues/685).

2017-09-09  7.0.7-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-1, GIT revision 21065:ab2194121:20170909.

2017-09-09  7.0.7-1 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-09-05 7.0.7-1 Dirk Lemstra <dirk@lem.....org>
  * Added -define tiff:write-layers=true to add support for writing layered
    tiff files.

2017-09-03  7.0.7-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-0, GIT revision 20996:2f8ac2203:20170903.

2017-08-28  7.0.7-0 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Don't overwrite symbolic links when the shred policy is enabled.

2017-08-27  7.0.6-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-10, GIT revision 20920:9940c367a:20170827.

2017-08-27  7.0.6-10 Cristy  <quetzlzacatenango@image...>
  * Support -metric ssim, structual similarity index.

2017-08-26  7.0.6-10 Dirk Lemstra <dirk@lem.....org>
  * Fixed thread safety issue inside the pango and librsvg decoder
    (reference: https://github.com/dlemstra/Magick.NET/issues/91).

2017-08-20  7.0.6-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-9, GIT revision 20860:3f307d8ad:20170820.

2017-08-18  7.0.6-9 Glenn Randers-Pehrson <glennrp@image...>
  * Fixed bug with writing tIME chunk when timezone has a negative offset
    (reference: https://github.com/ImageMagick/ImageMagick/issues/685)

2017-08-18  7.0.6-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-8, GIT revision 20838:e2eb79427:20170818.

2017-08-14  7.0.6-7 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Support CubicSpline resize filter.  Define the lobes with the
    -define filter:lobes={2,3,4} (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=32506).
  * Prevent assertion failure when creating PDF thumbnail (reference
    https://github.com/ImageMagick/ImageMagick/issues/674).

2017-08-12  7.0.6-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-7, GIT revision 20799:0db4d8a16:20170812.

2017-08-12  7.0.6-7 Cristy  <quetzlzacatenango@image...>
  * Improve EPS aliasing (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32497).

2017-08-11  7.0.6-7 Dirk Lemstra <dirk@lem.....org>
  * Added a new option called 'dds:fast-mipmaps' (reference
    https://github.com/ImageMagick/ImageMagick/issues/558)
  * The mipmaps of a dds image can now be created from a list of images with
    -define dds:mipmaps=fromlist (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=30236).

2017-08-10  7.0.6-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-6, GIT revision 20775:061d0fa25:20170810.

2017-08-10  7.0.6-6 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-08-10  7.0.6-6 Glenn Randers-Pehrson <glennrp@image...>
  * tests/validate.c: Show the reason for failures in the test logs,
    if available.

2017-08-03  7.0.6-6 Glenn Randers-Pehrson <glennrp@image...>
  * Put UTC time in the PNG tIME chunk instead of local time (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32447).

2017-08-02  7.0.6-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-5, GIT revision 20715:26b28d50a:20170802.

2017-08-01  7.0.6-5 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-07-29  7.0.6-5 Glenn Randers-Pehrson <glennrp@image...>
  * Properly set image->colorspace in the PNG decoder (previously
    it was setting image->gamma, but only setting image->colorspace
    for grayscale and gray-alpha images.  Reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32418).
  * Fix improper use of NULL in the JNG decoder (CVE-2017-11750, Reference
    https://github.com/ImageMagick/ImageMagick/issues/632).
  * Added "-define png:ignore-crc" option to PNG decoder. When you know
    your image has no CRC or ADLER32 errors, this can speed up decoding.
    It is also helpful in debugging bug reports from "fuzzers".

2017-07-29  7.0.6-5 Cristy  <quetzlzacatenango@image...>
  * Off by one error for gradient coder (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32416),
    https://github.com/ImageMagick/ImageMagick/issues/612).

2017-07-28  7.0.6-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-4, GIT revision 20657:4e81160d6:20170728.

2017-07-24  7.0.6-4 Cristy  <quetzlzacatenango@image...>
  * YUV coder no longer renders streaks (reference
    https://github.com/ImageMagick/ImageMagick/issues/612).
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues) including
    https://github.com/ImageMagick/ImageMagick/issues/618 (CVE-2017-12676).
  * coders/png.c: Initialized quantum_scanline and quantum_info
    to prevent a bad free (reference
    https://github.com/ImageMagick/ImageMagick/issues/621).

2017-07-25  7.0.6-4 Glenn Randers-Pehrson <glennrp@image...>
  * Removed write_chunk_from_profile() from coders/png.c because it has
    not worked at least since version 6.7.6.
  * Removed many redundant checks before RelinquishMagickMemory(), which
    is safe to call with a NULL argument.
  * Added experimental PNG orNT chunk, to store image->orientation.
  * Removed vpAg chunk write support (we are now writing caNv instead).

2017-07-24  7.0.6-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-3, GIT revision 20598:cc9c43b44:20170724.

2017-07-23  7.0.6-3 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-07-23  7.0.6-3 Glenn Randers-Pehrson <glennrp@image...>
  * Fix memory leaks when reading a malformed JNG image:
    https://github.com/ImageMagick/ImageMagick/issues/600 (CVE-2017-13141),
    https://github.com/ImageMagick/ImageMagick/issues/602 (CVE-2017-12565).

2017-07-21  7.0.6-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-2, GIT revision 20549:62fcf3d96:20170721.

2017-07-19  7.0.6-2 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * The -monochrome option no longer returns a blank canvas (reference
    https://github.com/ImageMagick/ImageMagick/issues/594).
  * coders/png.c: fixed memory leak of quantum_info (CVE-2017-11539, reference
    https://github.com/ImageMagick/ImageMagick/issues/582
  * coders/png.c: fixed NULL dereference when trying to write an empty MNG
    (CVE-2017-11522, reference
    https://github.com/ImageMagick/ImageMagick/issues/586).

2017-07-15  7.0.6-2 Glenn Randers-Pehrson <glennrp@image...>
  * Added caNv, eXIf, and pHYs to the list of PNG chunks to be removed
    by the "-strip" option.

2017-07-15  7.0.6-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-1, GIT revision 20447:c2a315e10:20170715.

2017-07-13  7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
  * Implemented PNG eXIf chunk support.

2017-07-08  7.0.6-1 Cristy  <quetzlzacatenango@image...>
  * Support new -auto-threshold option.  OTSU and Triangle methods are
    currently supported.  Look for the Kapur method in the next release.
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Don't use variable float_t / double_t, bump SO (reference
    https://github.com/ImageMagick/ImageMagick/issues/510).
  * Support DNG images with libraw delegate library.

2017-07-02  7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
  * Reject PNG file that is too small (under 60 bytes) to contain
    a valid image.
  * Reject JPEG file that is too small (under 107 bytes) to contain
    a valid image.
  * Reject JNG file that is too small (under 147 bytes) to contain
    a valid image.

2017-06-22  7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
  * Stop a memory leak in read_user_chunk_callback() (reference
    https://github.com/ImageMagick/ImageMagick/issues/517,
    CVE 2017-11310).

2017-06-10  7.0.6-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-0, GIT revision 20194:b0c0d00:20170611.

2017-06-10  7.0.6-0 Glenn Randers-Pehrson <glennrp@image...>
  * coders/png.c: Accept exIf chunks whose data segment
    erroneously begins with "Exif\0\0".

2017-06-10  7.0.6-0 Cristy  <quetzlzacatenango@image...>
  * Introduce SetMagickSecurityPolicy() (MagickCore) and
    MagickSetSecurityPolicy() (MagickWand) to set the ImageMagick security
    policy (reference https://github.com/ImageMagick/ImageMagick/issues/407).

2017-06-02  7.0.5-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-10, GIT revision 20155:38ebc02:20170602.

2017-06-01  7.0.5-10 Glenn Randers-Pehrson <glennrp@image...>
  * Removed experimental PNG zxIF chunk support; the proposal is dead.

2017-06-01  7.0.5-10 Cristy  <quetzlzacatenango@image...>
  * Fix choppy bitmap font rendering (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32071).
  * The +opaque option is not longer a noop (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32081).
  * Add support  for 'hex:' property.

2017-05-28  7.0.5-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-9, GIT revision 20113:8b67333:20170528.

2017-05-28  7.0.5-9 Cristy  <quetzlzacatenango@image...>
  * Transient error validating the JPEG-2000 image format (reference
    https://github.com/ImageMagick/ImageMagick/issues/501).
  * Properly allocate DCM image colormap (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32063).

2017-05-26  7.0.5-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-8, GIT revision 20099:870a016:20170526.

2017-05-23  7.0.5-8 Cristy  <quetzlzacatenango@image...>
  * Improper allocation of memory for IM instances without threads (reference
    https://github.com/ImageMagick/ImageMagick/issues/497).
  * Delete corrupt image from list (reference
    https://github.com/ImageMagick/ImageMagick/issues/500).

2017-05-19  7.0.5-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-6, GIT revision 20078:7ce2d38:20170519.

2017-05-15  7.0.5-7 Cristy  <quetzlzacatenango@image...>
  * Support various image operators for the compare utility (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=31938).

 2017-05-12  7.0.5-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-6, GIT revision 20039:9371904:20170512.

2017-05-10  7.0.5-6 John Cupitt <jcupitt@gmail.com>
  * Revise DICOM window and rescale handling (reference
    https://github.com/ImageMagick/ImageMagick/pull/484)

2017-05-06  7.0.5-6 Cristy  <quetzlzacatenango@image...>
  * Restore the -alpha Shape option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31879).
  * Fix transient PDF bug (reference
    https://github.com/ImageMagick/ImageMagick/issues/463).
  * The +opaque option now works on all channels (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31862).
  * Ensure backwards compatibility for the -combine option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31855).
  * Check for EOF conditions for RLE image format.
  * Reset histogram page geometry (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31920).

2017-04-24  7.0.5-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-5, GIT revision 19915:12eec43:20170424.

2017-03-26  7.0.5-5 Cristy  <quetzlzacatenango@image...>
  * Minimize buffer copies to improve OpenCL performance.
  * Morphology thinning is no longer a no-op (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31650).
  * Patch two PCD writer problems, corrupt output and dark pixels (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=3164).
  * Support ICC based PDF's (reference
    https://github.com/ImageMagick/ImageMagick/issues/417).
  * Fix improper EPS clip path rendering (reference
    http://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31722).

2017-03-24  7.0.5-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-4, GIT revision 19754:350fff3:20170324.

2017-03-21  7.0.5-4 Cristy  <quetzlzacatenango@image...>
  * Respect -loop option for animate -window (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31619).

2017-03-17  7.0.5-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-3, GIT revision 19741:070c3fb:20170317.

2017-03-14  7.0.5-3 Cristy  <quetzlzacatenango@image...>
  * Support namespaces for the security policy.
  * Support the -authenticate option for PDF (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31530).

2017-03-11  7.0.5-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-2, GIT revision 19696:da91a7c:20170311.

2017-03-06  7.0.5-2 Cristy  <quetzlzacatenango@image...>
  * Respect throttle policy (reference
    https://github.com/ImageMagick/ImageMagick/issues/393).
  * Return proper minima / maxima (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31377).

2017-03-03  7.0.5-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-1, GIT revision 19662:b7f455a:20170303.

2017-02-21  7.0.5-1 Cristy  <quetzlzacatenango@image...>
  * Fix Spurious memory allocation message (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31438).
  * Identical images should return inf for PSNR (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31487).

2017-02-20  7.0.5-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-0, GIT revision 19616:505fea9:20170220.

2017-02-20  7.0.5-0 Cristy  <quetzlzacatenango@image...>
  * Fix transient bug with -separate option (reference
    https://github.com/ImageMagick/ImageMagick/issues/385).

2017-02-18  7.0.4-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-10, GIT revision 19608:fe757a2:20170218.

2017-02-18  7.0.4-10 Dirk Lemstra <dirk@lem.....org>
  * Fixed fd leak for webp coder (reference
    https://github.com/ImageMagick/ImageMagick/pull/382)

2017-02-15  7.0.4-10 Cristy  <quetzlzacatenango@image...>
  * Prevent random pixel data for corrupt JPEG image (bug report from
    Hirokazu Moriguchi, Sony).
  * Restore -mattecolor option.
  * Support pixel-cache and shred security policies.
  * Bump Magick++ SO.  Previously a global replace changed matteColor to
    alphaColor.

2017-02-14  7.0.4-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-9, GIT revision 19580:d474b37:20170214.

2017-02-14  7.0.4-9 Cristy  <quetzlzacatenango@image...>
  * Revert patch that did not set update trait on alpha channel.

2017-02-13  7.0.4-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-8, GIT revision 19574:7642384:20170213.

2017-02-09  7.0.4-8 Dirk Lemstra <dirk@lem.....org>
  * Fixed memory leak when creating nested exceptions in Magick++ (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=23&p=142634)

2017-02-09  7.0.4-8 Cristy  <quetzlzacatenango@image...>
  * Unbreak build without JPEG support (reference
    https://github.com/ImageMagick/ImageMagick/pull/373).
  * Document behavior change in the security policy (thanks to yoya @
    https://blog.awm.jp/2017/02/09/imagemagick-en/).
  * Return unbiased standard deviation for image statistics (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31377).
  * Don't set update trait on alpha channel (private e-mail concerning
    -levels-colors option).

2017-02-04  7.0.4-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-7, GIT revision 19513:5783e57:20170204.

2017-01-28  7.0.4-7 Cristy  <quetzlzacatenango@image...>
  * Sanitize comments that include braces for the MIFF image format (reference
    https://github.com/ImageMagick/ImageMagick/issues/368).

2017-01-27  7.0.4-7 Glenn Randers-Pehrson <glennrp@image...>
  * coders/png.c: Added support for a proposed new PNG chunk
    (zxIf, read-only) that is currently being discussed on the
    png-mng-misc at lists.sourceforge.net mailing list.  Enable
    exIf and zxIf with CPPFLAGS="-DexIf_SUPPORTED -DxzIf_SUPPORTED".
    If exIf is enabled, only the uncompressed exIF chunk will be
    written and the hex-encoded zTXt chunk containing the raw Exif
    profile won't be written.

2017-01-27  7.0.4-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-6, GIT revision 19442:4747de9:20170127.

2017-01-27  7.0.4-6 Cristy  <quetzlzacatenango@image...>
  * Uninitialized data in MAT image format (reference
    https://github.com/ImageMagick/ImageMagick/issues/362).
  * Properly auto-fit caption (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30887).
  * Correction to composite Over operator (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31282).
  * Respect gravity option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31284).

2017-01-22  7.0.4-6 Glenn Randers-Pehrson <glennrp@image...>
  * Renamed read_vpag_chunk_callback() function to png_user_chunk_callback()
    in coders/png.c
  * Implemented a private PNG caNv (canvas) chunk for remembering the
    original dimensions and offsets when an image is cropped.  Previously
    we used the oFFs and vpAg chunks for this purpose, but this had potential
    conflicts with other applications that also use the oFFs chunk.
  * coders/png.c: Added support for a proposed new PNG chunk (exIf
    read-write, eXIf read-only) that is currently being discussed on the
    png-mng-misc at lists.sourceforge.net mailing list.

2017-01-22  7.0.4-6 Dirk Lemstra <dirk@lem.....org>
  * Replaced CoderSeekableStreamFlag with CoderDecoderSeekableStreamFlag and
    CoderEncoderSeekableStreamFlag.

2017-01-21  7.0.4-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-5, GIT revision 19381:7ae396f:20170121.

2017-01-18  7.0.4-5 Cristy  <quetzlzacatenango@image...>
  * Don't set background for transparent tiled images (reference
    http://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31210).

2017-01-14  7.0.4-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-4, GIT revision 19361:a12953c:20170114.

2017-01-14  7.0.4-4 Dirk Lemstra <dirk@lem.....org>
  * Added support for RGB555, RGB565, ARGB4444 and ARGB1555 to the
    BMP encoder (reference
    https://github.com/ImageMagick/ImageMagick/issues/344).

2017-01-10  7.0.4-4 Cristy  <quetzlzacatenango@image...>
  * Recognize XML policy closing tags (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31182).
  * Fix memory leak in the MPC format.

2017-01-07  7.0.4-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-3, GIT revision 19329:930ca78:20170107.

2017-01-04  7.0.4-3 Cristy  <quetzlzacatenango@image...>
  * Increase memory allocation for TIFF pixels (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31161).

2017-01-03  7.0.4-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-2, GIT revision 19318:8766311:20170103.

2017-01-02  7.0.4-2 Cristy  <quetzlzacatenango@image...>
  * Validation unit test for MNG works again.

2016-12-31  7.0.4-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-1, GIT revision 19292:c5ccfa8:20161231.

2016-12-26  7.0.4-1 Cristy  <quetzlzacatenango@image...>
  * Initialize draw_info alpha member to OpaqueAlpha.
  * Monochrome images no longer have inverted colors (reference
    https://github.com/ImageMagick/ImageMagick/issues/332).

2016-12-18  7.0.4-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-0, GIT revision 19221:d5e8abc:20161218.

2016-12-14  7.0.4-0 Cristy  <quetzlzacatenango@image...>
 * Do not close path for linejoins of round (reference
   https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31039).

2016-12-10  7.0.3-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-10, GIT revision 19191:338f088:20161210.

2016-12-07  7.0.3-10 Cristy  <quetzlzacatenango@image...>
  * Set colorspace to sRGB if -append has non-homogenous colorspaces (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29105).
  * Respect connected-components:area-threshold define (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31006).
  * Enable alpha channel if background color is non-opaque (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31016).
  * Return correct offset for negative index for -fx option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31019).
  * Fixed improper scaling of certain FITS images (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31028).
  * Properly center text label (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31027).

2016-12-05  7.0.3-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-9, GIT revision 19139:6fed3f1:20161205.

2016-11-26  7.0.3-9 Cristy  <quetzlzacatenango@image...>
  * Support the compare -read-mask option.
  * Support read-masks for the -modulate option.
  * Prevent buffer overflow when streaming an image (reference
    https://github.com/ImageMagick/ImageMagick/issues/312).
  * Fix possible buffer overflow when writing compressed TIFFS (vulnerability
    report from Cisco Talos, CVE-2016-8707).

2016-11-15  7.0.3-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-8, GIT revision 19067:5aceded:20161125.

2016-11-18  7.0.3-8 Cristy  <quetzlzacatenango@image...>
  * Support the phash:colorspaces and phash:normalize options.
  * If a convenient line break is not found, force it for caption: (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30887).
  * Set alpha member of draw structure to OpaqueAlpha (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30894).
  * Off by 1 error when computing the standard deviation (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=30866).
  * Apply Debian patches, (reference
    https://github.com/ImageMagick/ImageMagick/issues/304).
  * Permit EPT images with just a TIFF or EPS image, not both (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30921).
  * The -clone option no longer leaks memory.
  * Render to clip mask rather than image for clip-path MVG graphics primitive.

2016-11-15  7.0.3-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-7, GIT revision 19024:87aca83:20161115.

2016-11-10  7.0.3-7 Cristy  <quetzlzacatenango@image...>
  * Web pages were broken when we moved to HTTPS protocol.

2016-11-08  7.0.3-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-6, GIT revision 19001:4cff747:20161108.

2016-11-01  7.0.3-6 Cristy  <quetzlzacatenango@image...>
  * Off by one memory allocation (reference
    https://github.com/ImageMagick/ImageMagick/issues/296).
  * The -extent option now matches the results of IMv6 (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=30779).
  * Prevent fault in MSL interpreter (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30797).
  * Mask composite produces proper results for the convert utility (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29675).

2016-10-10  7.0.3-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-5, GIT revision 18975:a8174a2:20161030.

2016-10-16  7.0.3-5 Dirk Lemstra <dirk@lem.....org>
  * Added layer RLE compression to the PSD encoder.

2016-10-10  7.0.3-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-4, GIT revision 18937:83da034:20161010.

2016-10-10  7.0.3-4 Dirk Lemstra <dirk@lem.....org>
  * Fixed incorrect parsing with ordered dither. (reference
    https://github.com/ImageMagick/ImageMagick/issues/254)

2016-10-10  7.0.3-4 Cristy  <quetzlzacatenango@image...>
  * Unit test pass again after small SUN image patch.

2016-10-08  7.0.3-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-3, GIT revision 18924:d6614e7:20161008.

2016-10-07  7.0.3-3 Dirk Lemstra <dirk@lem.....org>
  * Fixed incorrect RLE decoding when reading a DCM image that contains
    multiple segments.

2016-10-02  7.0.3-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-2, GIT revision 18887:6b27c5b:20161002.

2016-09-27  7.0.3-2 Dirk Lemstra <dirk@lem.....org>
  * Fixed incorrect RLE decoding when reading an SGI image (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30514)

2016-09-20  7.0.3-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-1, GIT revision 18851:ad91ea8:20160920.

2016-09-16  7.0.3-1 Dirk Lemstra <dirk@lem.....org>
  * Added layer RLE compression to the PSD encoder.
  * Added define 'psd:preserve-opacity-mask' to preserve the opacity mask
    in a PSD file.
  * Fixed issue where the display window was used instead of the data window
    when reading EXR files (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&p=137849).

2016-09-05  7.0.3-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-0, GIT revision 18786:10aa64c:20160905.

2016-08-29  7.0.3-0 Dirk Lemstra <dirk@lem.....org>
  * Fixed reading DXT1 images with an alpha channel.
  * Fixed incorrect padding calculation in PSD encoder.

2016-08-27  7.0.2-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-10, GIT revision 18750:e3335b3:20160827.

2016-08-27  7.0.2-10 Dirk Lemstra <dirk@lem.....org>
  * Added define 'psd:additional-info' to preserve the additional information
    in a PSD file.

2016-08-15  7.0.2-10 Cristy  <quetzlzacatenango@image...>
  * Prevent buffer overflow in BMP & SGI coders (bug report from
    pwchen&rayzhong of tencent).
  * Prevent buffer overflow and other problems in SIXEL, PDB, MAP, TIFF and
    CALS coders (bug report from Donghai Zhu).
  * The -stream option now increments the pixel pointer properly (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30327).

2016-08-14  7.0.2-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-9, GIT revision 18707:2c02f09:20160814.

2016-08-14  7.0.2-9 Cristy  <quetzlzacatenango@image...>
  * Fix compile error in opencl.c (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30289).
  * Eliminate compiler warning.

2016-08-14  7.0.2-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-8, GIT revision 18698:74b1d5d:20160814.

2016-08-07  7.0.2-8 Cristy  <quetzlzacatenango@image...>
  * Prevent spurious removal of MPC cache files (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30256).
  * Note alpha channel when combining 4 or more images (reference
    https://github.com/ImageMagick/ImageMagick/issues/250).

2016-08-06  7.0.2-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-7, GIT revision 10980:ecc03a2:20160806.

2016-08-01  7.0.2-7 Cristy  <quetzlzacatenango@image...>
  * Evaluate lazy pixel cache morphology to prevent buffer overflow (bug report
    from Ibrahim M. El-Sayed).
  * Prevent buffer overflow (bug report from Max Thrane).
  * Prevent memory use after free (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30245).

2016-07-30  7.0.2-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-6, GIT revision 18651:df24175:20160729.

2016-07-29  7.0.2-6 Cristy  <quetzlzacatenango@image...>
  * Support -region option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=29692).

2016-07-21  7.0.2-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-5, GIT revision 18627:2b5ddbd:20160721.

2016-07-13  7.0.2-5 Cristy  <quetzlzacatenango@image...>
  * Fix MVG stroke-opacity (reference
    https://github.com/ImageMagick/ImageMagick/issues/229).
  * Prevent possible buffer overflow when reading TIFF images (bug report from
    Shi Pu of MS509 Team).
  * Initialize index channel to get expected results from the stegano coder.

2016-07-11  7.0.2-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-4, GIT revision 18591:50debe5:20160710.

2016-07-10  7.0.2-4 Cristy  <quetzlzacatenango@image...>
  * To comply with the SVG standard, use stroke-opacity for transparent strokes.
  * Define CompositeChannels mask to Red, Green, Blue, Alpha, and Black.

2016-07-09  7.0.2-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-3, GIT revision 18572:28560fc:20160709.

2016-07-01  7.0.2-3 Cristy  <quetzlzacatenango@image...>
  * Patch so -kuwahara option can preserve colormapped edges.
  * The histogram coder now returns the correct extent.
  * Use CopyMagickString() rather than CopyMagickMemory() for strings.

2016-06-26  7.0.2-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-2, GIT revision 18514:a7b5b46:20160626.

2016-06-23  7.0.2-2 Cristy  <quetzlzacatenango@image...>
  * Correct for numerical instability (reference
    https://github.com/ImageMagick/ImageMagick/issues/218).

2016-06-21  7.0.2-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-1, GIT revision 18479:931319b:20160622.

2016-06-17  7.0.2-1 Dirk Lemstra <dirk@lem.....org>
  * Added support for GROUP4 compression to the FAX coder.

2016-06-12  7.0.2-1 Cristy  <quetzlzacatenango@image...>
  * Distort no longer converts grayscale image to sRGB (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=29895).
  * Don't return a zero bounding box for QueryMultilineFontMetrics() (reference
    https://github.com/ImageMagick/ImageMagick/issues/222).

2016-06-12  7.0.2-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-0, GIT revision 10884:f0e15e8:20160612.

2016-06-09  7.0.2-0 Cristy  <quetzlzacatenango@image...>
  * Backoff finite precision epsilon (reference
    https://github.com/ImageMagick/ImageMagick/issues/215).
  * Fix drawing glitch for stroke widths greater than 2 (reference
    https://github.com/ImageMagick/ImageMagick/issues/218).

2016-06-05  7.0.1-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-10, GIT revision 18406:ba4ad2d:20160607.

2016-06-04  7.0.1-10 Cristy  <quetzlzacatenango@image...>
  * Deny indirect reads by policy, remove policy to permit, e.g.,
    convert caption:@mytext.txt ...
  * RLE check for pixel offset less than 0 (heap overflow report from Craig
    Young).
  * Properly initialze PES blocks (reference
    https://github.com/ImageMagick/ImageMagick/issues/213).

2016-06-03  7.0.1-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-9, GIT revision 10847:339f803:20160602.

2016-06-02  7.0.1-9 Cristy  <quetzlzacatenango@image...>
  * Fix small memory leak (patch provided by Андрей Черный).
  * Coder path traversal is not authorized (bug report provided by
    Masaaki Chida).
  * Turn off alpha channel for the compare difference image (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29828).

2016-05-31  7.0.1-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-8, GIT revision 18334:97775b5:20160531.

2016-05-31  7.0.1-8 Cristy  <quetzlzacatenango@image...>
  * Support configure script --enable-pipes option to enable pipes (|) in
    filenames.
  * Support configure script --enable-indirect-reads option to enable
    indirect reads (@) in filenames.

2016-05-30  7.0.1-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-7, GIT revision 18321:5511ef5:20160530.

2016-05-25  7.0.1-7 Cristy  <quetzlzacatenango@image...>
  * Security improvements to TEXT coder broke it (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29754).
  * Fix stroke offset problem for -annotate (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29626).
  * Don't interpret -fx option arguments (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29774);
  * Add additional checks to DCM reader to prevent data-driven faults (bug
    report from Hanno Böck).

2016-05-21  7.0.1-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-6, GIT revision 18241:d4f277c:20160521.

2016-05-20  7.0.1-6 Cristy  <quetzlzacatenango@image...>
  * Fixed proper placement of text annotation for east / west gravity.

2016-05-18  7.0.1-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-5, GIT revision 10789:f7c2e89:20160518,

2016-05-18  7.0.1-5 Cristy  <quetzlzacatenango@image...>
  * Process channels independently for -channel -equalize (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29708).
  * Fix pixel cache on disk regression (reference
    https://github.com/ImageMagick/ImageMagick/issues/202).

2016-05-15  7.0.1-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-4, GIT revision 10778:52dae14:20160516.

2016-05-10  7.0.1-4 Cristy  <quetzlzacatenango@image...>
  * Prevent possible shell command injection vulnerability through the
    authenticate parameter of the PDF, PCL and XPS coders (report from
    Erez Turjeman).
  * Quote passwords when passed to a delegate program.
  * Iterate channels over source image rather than destination (bug report
    from Hanno Böck).
  * Can read geo-related EXIF metdata once-again (reference
    https://github.com/ImageMagick/ImageMagick/issues/198).
  * Sanitize all delegate emedded formatting characters.
  * Don't sync pixel cache in AcquireAuthenticCacheView() (bug report from
    Hanno Böck).

2016-05-09  7.0.1-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-3, GIT revision 10755:d540dda:20160509.

2016-05-07  7.0.1-3 Cristy  <quetzlzacatenango@image...>
  * Remove https delegate.

2016-05-06  7.0.1-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-2, GIT revision 10741:5746147:20160507.

2016-05-04  7.0.1-2 Cristy  <quetzlzacatenango@image...>
  * Check for buffer overflow in magick/draw.c/DrawStrokePolygon().
  * Replace show delegate title with image filename rather than label.
  * Fix GetNextToken() off by one error.
  * Remove support for internal ephemeral coder.

2016-05-03  7.0.1-1 Cristy  <quetzlzacatenango@image...>
  * New version 7.0.1-1, GIT revision 10723:9fc8a0c:20160503.

2016-05-03  7.0.1-1 Cristy  <quetzlzacatenango@image...>
  * Sanitize input filename for http / https delegates (improved patch).
  * Fix for possible security vulnerabilities (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=4&t=29588).

2016-04-30  7.0.1-0 Cristy  <quetzlzacatenango@image...>
  * New version 7.0.1-0, GIT revision 10716:b527bce:20160430.

2016-01-30  7.0.0-0 Fahad-Alsaidi & ShamsaHamed
  * Add support for languages that require complex text layout (reference
    https://github.com/ImageMagick/ImageMagick/pull/88).

2012-04-27  7.0.0-0 Anthony thyssen <A.Thyssen@griffith...>
  * Allow the use of set and escapes when no images in memory
    (unless you attempt to access per-image meta-data)
    Currently does not include %[fx:...] and %[pixel:...]

2012-10-05  7.0.0-0 Anthony thyssen <A.Thyssen@griffith...>
  * Rather than replicate 'options' into 'artifacts' make a link
    from image to image_info and lookup a global option if no artifact
    is defined.

2012-09-11  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  * sigmoidal-contrast:
  * Remove unnecessary initial ClampToQuantum.

2012-09-10  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  * sigmoidal-contrast:
  * Direct computation, without LUT;
  * Fix re-declaration of i (at the top, and inside a conditional).

2012-09-04  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  * Add tanh/atanh clone of legacy sigmoidal map (faster & more accurate).

2012-08-08  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  * Add final ClampToQuantum in sigmoidal colormap loop.
  * Remove OpenMP calls from colormap update loops.

2011-08-01  7.0.0-0 Cristy  <quetzlzacatenango@image...>
  * New version 7.0.0-0.

