<copyright notice>

For the purposes of this copyright and license, "Contributing Authors"
is defined as the following set of individuals:

   <authors>

The MNG Library is supplied "AS IS".  The Contributing Authors
disclaim all warranties, expressed or implied, including, without
limitation, the warranties of merchantability and of fitness for any
purpose.  The Contributing Authors assume no liability for direct,
indirect, incidental, special, exemplary, or consequential damages,
which may result from the use of the MNG Library, even if advised of
the possibility of such damage.

Permission is hereby granted to use, copy, modify, and distribute this
source code, or portions hereof, for any purpose, without fee, subject
to the following restrictions:

1. The origin of this source code must not be misrepresented;
   you must not claim that you wrote the original software.

2. Altered versions must be plainly marked as such and must not be
   misrepresented as being the original source.

3. This Copyright notice may not be removed or altered from any source
   or altered source distribution.

The Contributing Authors specifically permit, without fee, and
encourage the use of this source code as a component to supporting
the MNG and JNG file format in commercial products.  If you use this
source code in a product, acknowledgment would be highly appreciated.


Parts of this software have been adapted from the libpng package.
Although this library supports all features from the PNG specification
(as MNG descends from it) it does not require the libpng package.
It does require the zlib library and optionally the IJG jpeg library,
and/or the "little-cms" library by Marti Maria (depending on the
inclusion of support for JNG and Full-Color-Management respectively.

This library's function is primarily to read and display MNG
animations. It is not meant as a full-featured image-editing
component! It does however offer creation and editing functionality
at the chunk level.
(future modifications may include some more support for creation
 and or editing)
