Short: App for chatting to ChatGPT Author: Cameron Armstrong (Nightfox) Uploader: Cameron Armstrong (Nightfox) Type: util/misc Version: 1.6.3 Replaces: util/misc/AmigaGPT.lha Requires: AmigaOS 3.9+/68020+ util/libs/AmiSSL-5.9-OS3.lha Architecture: m68k-amigaos >= 3.9; ppc-amigaos Kurz: App zum Chatten mit ChatGPT AmigaGPT is a text and image generation program that runs on the classic AmigaOS. Utilising the power of the OpenAI's GPT-3 and GPT-4 architectures, this program brings state-of-the-art language modeling to your Amiga computer. Features: - Generates text based on input prompts - Generates images based on input prompts - UI customisation - Full conversation history - Text-to-speech Requirements: - OCS/ECS/AGA Amiga - Motorola 68020 or higher CPU or PPC for AmigaOS 4 - AmigaOS 3.9 and AmigaOS 3.X (included in Amiga Forever) supported but 3.2 or higher required for best experience. AmigaOS 4.1 version also included. - AmiSSL 5.9 or higher (http://aminet.net/util/libs/AmiSSL-5.9-OS3.lha) - Internet access using a TCP/IP stack such as Roadshow (http://roadshow.apc-tcp.de/index-en.php) - An active OpenAI API key - For speech on AmigaOS 3, any version of narrator.device - For speech on AmigaOS 4, Flite Device (http://aminet.net/package/mus/misc/flite_device) - For OpenAI speech, AHI is required (http://aminet.net/package/driver/audio/ahiusr_4.18) Installation: 1. Install AmiSSL and a TCP/IP stack if not already done so 2. Unpack the archive to a directory of your choice. 3. Run the Installer script included in the package. 4. Follow the prompts to complete the installation. Optional steps to enable speech functionality: AmigaGPT supports reading the output aloud. How AmigaGPT does this depends on whether you are using AmigaOS 3 or 4. AmigaOS 3: Speech on AmigaOS 3 requires a file called `narrator.device` which cannot be included with AmigaGPT because it is still under copyright. Therefore, you must copy this file legally from yourWorkbench disks so that AmigaGPT will be able to synthesise speech. There are 2 versions of `narrator.device` supported, v34 and v37. v34 is the original version that came with Workbench 1.x. v37 was an updated version included with Workbench 2.0.x. It has more features and sounds more natural, however it does sound quite different which is why AmigaGPT supports you installing both versions and your choice of version to be used can be selected in the Speech menu in the app. Regardless of which version of `narrator.device` you choose to install (or both), AmigaGPT requires that you install the free third party `translator.library` v43. This works with both versions of `narrator.device`. Installing `translator.library` v43: Since `translator.library` v43 is not available as a standalone install, you will need to install v42 and then patch it to v43. * Download http://aminet.net/util/libs/translator42.lha and extract the archive to any convenient location on your Amiga such as `RAM:` * Navigate to that directory and double click the `Install` program * Run the installer using all the default settings * Download http://aminet.net/util/libs/Tran43pch.lha and once again extract it to a location of your choice * Navigate to that directory and double click the `Install` program * Run the installer using all the default settings * Reboot your Amiga - It will not work until the system is restarted Installing `narrator.device` v34: * Insert your Workbench 1.x disk and copy `df0:devs/narrator.device` to `{AmigaGPTProgramDirectory}/devs/speech/34` Installing `narrator.device` v37 * Insert your Workbench 2.0.x (you cannot use 2.1 because the speech libraries were removed after version 2.0.4) disk and copy `df0:devs/narrator.device` to `{AmigaGPTProgramDirectory}/devs/speech/37` Installing AHI: * If your OS does not come with AHI installed, you can get it from https://aminet.net/package/driver/audio/ahiusr_4.18 AmigaOS 4: Speech on AmigaOS 4 is done with the help of Flite Device. - Download Flite Device from http://aminet.net/package/mus/misc/flite_device - Extract the archive and run the installer Launching AmigaGPT: * Launch the application by double-clicking the AmigaGPT icon * You may also launch the app in the command line but before you do, run the command `STACK 20000` to give the program 20kb of stack since the default stack size for apps launched from the shell is 4kb and this is not enough for AmigaGPT and will cause random crashes due to stack overflow. This is not required when you launch the app by double clicking the icon since the stack size is saved in the icon. Usage: When launched, AmigaGPT presents you with a choice of opening the app in a new screen or opening in Workbench. If you open in a new screen you have the ability to create a screen for the app to open in. AmigaGPT supports anything from 320x200 all the way up to 4k resolution if using a video card for RTG. Bear in mind text will appear very tiny in resolutions above 1080p so you may want to increase the font size settings from the View menu when the app opens. When launching for the first time you will need to enter your OpenAI API key before you can start chatting. If you haven't already done so, create an OpenAI account and navigate to https://platform.openai.com/account/api-keys to generate an API key for use with AmigaGPT. *Chat* When the app has opened, you are presented with a text input box. You can type any prompt into this box and press "Send" to see the GPT-4 model's response. The generated text appears in the box above the input. You can choose to have this text read aloud using the "Speech" menu option. You can also select which model for OpenAI to use in the "OpenAI" menu option. To the left of the chat box is a conversation list which you can use to go to another saved conversation. New conversations can be created with the "New chat" button and conversations can be removed with the "Delete chat" button. There are 2 main modes of operation: Chat and Image Generation. You can switch between them via the tabs in the top left corner. *Image Generation* To generate images, simply select your desired image generation model from the "OpenAI" menu then type your prompt in the text box then hit the "Create Image" button. When it has been downloaded to your Amiga, you are then able to open the image to your desired scale, or save a copy of the file to a new location on your Amiga. Do note however that AmigaGPT will automatially save all your generated images until you delete them. This is just in case you would like to create a copy elsewhere. *General* In the "Edit" menu, you'll find basic text editing commands like Cut, Copy, Paste and Clear. The "View" menu allows you to change the font used in the chat and the UI. The "Project" menu includes an "About" option, which displays information about the program. Developing: Source code hosted at https://github.com/sacredbanana/AmigaGPT You can either compile the code natively or with the Docker container. ------ Native ------ *Building the AmigaOS 3 app* If you would like to build this project from source you will need Bebbo's amiga-gcc toolchain here https://github.com/bebbo/amiga-gcc Once installed, get the required other SDK's (AmiSSL, Translator, json-c) from https://github.com/sacredbanana/AmigaSDK-gcc and put these in your Amiga dev environment created in the above step. *Building the AmigaOS 4 app* Get this toolchain set up https://github.com/sba1/adtools Once installed, get the required other SDK's (AmiSSL, Translator, json-c) from https://github.com/sacredbanana/AmigaSDK-gcc and put these in your Amiga dev environment created in the above step. ------ Docker ------ You may use an all-in-one Docker image that is able to compile both the AmigaOS 3 and AmigaOS 4 versions of the app. Just install Docker on your machine and run the `build_os3.sh` or `build_os4.sh` scripts depending on which version of the app you want to build. If you want to perform a clean build, you can set the environment variable `CLEAN=1` for example you can run `CLEAN=1 ./build_os3.sh`. The build app will be saved to the `/out` directory. Contributing: We welcome contributions to AmigaGPT! If you have a bug to report, a feature to suggest, or a change you'd like to make to the code, please open a new issue or submit a pull request. Contributors: Code: - Cameron Armstrong (sacredbanana/Nightfox) https://github.com/sacredbanana/ Art: - Mauricio Sandoval - Icon design Special Thanks: - Bebbo for creating the Amiga GCC toolchain https://github.com/bebbo - OpenAI for making this all possible https://openai.com - EAB and everyone in it for answering my questions https://eab.abime.net/ - Hyperion Entertainment for bringinging us AmigaOS 3.2 https://www.hyperion-entertainment.com Changelog: ------------------ 1.6.3 (2024-09-18) ------------------ - Fixed error receiving chat messages ------------------ 1.6.2 (2024-09-01) ------------------ - Increase max OpenAI API key size to 256 characters ------------------ 1.6.1 (2024-08-31) ------------------ - Default to speech disabled - Fix crash when trying to close speech system when it failed to initialise ------------------ 1.6.0 (2024-08-10) ------------------ - Add the GPT4o Mini model - Remove the unused Accent menu item from OS4 version - Fix bug where some voice menu items in the OS4 version fail to display a checkmark after you select it ------------------ 1.5.1 (2024-06-26) ------------------ - Send button no longer appears after image creation - Create image button stays disabled after image creation. Select new image to create a new one - Updated to latest json-c ------------------ 1.5.0 (2024-05-18) ------------------ - Support for OpenAI's 16-bit text to speech voices. Fast internet connection recommended - Updated to latest OpenAI chat models (including GPT-4o which will only work for ChatGPT Plus subscribers for now) - Removed debug symbols for faster and smaller executable ------------------ 1.4.6 (2024-04-13) ------------------ - Send button no longer appears in top left corner after closing a generated image for Amiga 3.X ------------------ 1.4.5 (2024-04-06) ------------------ - Fixes the stack size calculation so it will no longer warn you that the stack size is too small if it really isn't ------------------ 1.4.4 (2024-03-23) ------------------ - Fixes a bug in chat mode in AmigaOS 3.X where the send button stays disabled after an error occurs - Change the stack size in the program .info file to the recommended 32768 bytes - Fix bug where accents were not loaded properly resulting in the speech to fail ------------------ 1.4.3 (2024-02-08) ------------------ - Updated to the latest OpenAI chat models - Fix crash when config.json doesn't exist - Fix crash when selecting the root menu items - Adjust screen colours to enhance visibility - Improved error handling for connection errors - Use a stack cookie to set minimum stack size to 32768 bytes (AmigaOS 3.1.4 or higher required) - Shows a warning if the stack size is smaller than 32768 bytes (AmigaOS 3 only) - Send button no longer appears in corner of screen on image mode in 3.X after an error message is dismissed ------------------ 1.4.2 (2024-01-31) ------------------ - Replaced clicktabs for AmigaOS 3.X since the version is too old and will crash. 3.X users can select the mode at startup. ------------------ 1.4.1 (2024-01-22) ------------------ - Fixed bug where the prompt textbox remains in a readonly state when switching from image mode to chat mode ------------------ 1.4.0 (2024-01-21) ------------------ - AI image generation! Switch between chat and image generation mode by clicking the tabs at the top of the screen - Colour tweaks - Status bar shows more information and colours - About screen can now be dismissed with any key press or mouse click - The OpenAI API key requester now populates with the existing key if it exists so you can more easily find and fix typos in the key - Added the ability to set the chat system (new "Chat System" menu item) - Fix crash when having a conversation consisting of a few messages ------------------ 1.3.1 (2023-12-02) ------------------ - Fix pasting into chat input textbox (AmigaOS 3.2 and 4.1 only for now) - Remove trailing newline from user messages - Enclose all user lines in asterisks to make bold - Fix memory leak that was present in downloading responses from OpenAI ------------------ 1.3.0 (2023-11-12) ------------------ - Native PPC version for AmigaOS 4.1 - Scrollbar works again - Improve response handling from OpenAI preventing a crash - Latest OpenAI models added ------------------ 1.2.1 (2023-11-04) ------------------ - Now fully backwards compatible with Cloanto's AmigaOS 3.X (included in Amiga Forever) ------------------ 1.2.0 (2023-10-04) ------------------ - Now fully backwards compatible with AmigaOS 3.9 ------------------ 1.1.0 (2023-07-22) ------------------ - Now supports characters from Western languages other than English - Blank responses from OpenAI no longer cause a crash ------------------ 1.0.1 (2023-06-24) ------------------ - After setting UI font, the font is now applied fully without needing to restart the app ---------------- 1.0 (2023-06-17) ---------------- - Initial release License: -------- AmigaGPT -------- MIT License Copyright (c) 2023 Cameron Armstrong Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------- THIRD PARTY LICENSES -------------------- ------ json-c ------ Copyright (c) 2009-2012 Eric Haszlakiewicz Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------------------------------------------- Copyright (c) 2004, 2005 Metaparadigm Pte Ltd Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----- Flite ----- Flite is free software. We have kept the core code to BSD-like copyright, thus the system is free to use in commercial products, with commercial extensions. GPL code is only included as part of the build process and does not taint any of the run-time code. Note the PalmOS code uses BSD code that requires acknowledgements in any distribution documentation. As a collection it is distributed under the following license. Note a few files in this distribution have a different but equally free non-conflicting licence, see below. Language Technologies Institute Carnegie Mellon University Copyright (c) 1999-2008 All Rights Reserved. Permission is hereby granted, free of charge, to use and distribute this software and its documentation without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of this work, and to permit persons to whom this work is furnished to do so, subject to the following conditions: 1. The code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Any modifications must be clearly marked as such. 3. Original authors' names are not deleted. 4. The authors' names are not used to endorse or promote products derived from this software without specific prior written permission. CARNEGIE MELLON UNIVERSITY AND THE CONTRIBUTORS TO THIS WORK DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY NOR THE CONTRIBUTORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. All files within this distribution have the above license except the following src/cg/cst_mlpg.h src/cg/cst_mlpg.c src/cg/cst_mlsa.h src/cg/cst_mlsa.c src/cg/cst_vc.h src/cg/cst_vc.c /*********************************************************************/ /* */ /* Nagoya Institute of Technology, Aichi, Japan, */ /* Nara Institute of Science and Technology, Nara, Japan */ /* and */ /* Carnegie Mellon University, Pittsburgh, PA */ /* Copyright (c) 2003-2004 */ /* All Rights Reserved. */ /* */ /* Permission is hereby granted, free of charge, to use and */ /* distribute this software and its documentation without */ /* restriction, including without limitation the rights to use, */ /* copy, modify, merge, publish, distribute, sublicense, and/or */ /* sell copies of this work, and to permit persons to whom this */ /* work is furnished to do so, subject to the following conditions: */ /* */ /* 1. The code must retain the above copyright notice, this list */ /* of conditions and the following disclaimer. */ /* 2. Any modifications must be clearly marked as such. */ /* 3. Original authors' names are not deleted. */ /* */ /* NAGOYA INSTITUTE OF TECHNOLOGY, NARA INSTITUTE OF SCIENCE AND */ /* TECHNOLOGY, CARNEGIE MELLON UNIVERSITY, AND THE CONTRIBUTORS TO */ /* THIS WORK DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, */ /* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, */ /* IN NO EVENT SHALL NAGOYA INSTITUTE OF TECHNOLOGY, NARA */ /* INSTITUTE OF SCIENCE AND TECHNOLOGY, CARNEGIE MELLON UNIVERSITY, */ /* NOR THE CONTRIBUTORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR */ /* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM */ /* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, */ /* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN */ /* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* */ /*********************************************************************/ These functions are derived from the versions in festvox/src/vc/ as modified by Tomoki Toda which in turn contain code derived from NITECH's HTS system. Their copyright has the same freedoms as as Flite's but under NAIST, NITECH and/or CMU. src/audio/au_wince.c src/utils/cst_file_stdio.c src/utils/cst_mmap_posix.c src/utils/cst_mmap_win32.c src/utils/cst_mmap_none.c src/utils/cst_file_wince.c sapi/ are copyright Cepstral, LLC rather than CMU but fall under the same free licence as the above, except for the owner. doc/alice Is the first two chapters of Alice in Wonderland as distributed by the Gutenburg project and is now in the public domain src/regex/regexp.c src/regex/regsub.c * Copyright (c) 1986 by University of Toronto. * Written by Henry Spencer. Not derived from licensed software. * * Permission is granted to anyone to use this software for any * purpose on any computer system, and to redistribute it freely, * subject to the following restrictions: * * 1. The author is not responsible for the consequences of use of * this software, no matter how awful, even if they arise * from defects in it. * * 2. The origin of this software must not be misrepresented, either * by explicit claim or by omission. * * 3. Altered versions must be plainly marked as such, and must not * be misrepresented as being the original software. src/speech/rateconv.c * Copyright (c) 1992, 1995 by Markus Mummert * * Redistribution and use of this software, modifcation and inclusion * into other forms of software are permitted provided that the following * conditions are met: * * 1. Redistributions of this software must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. If this software is redistributed in a modified condition * it must reveal clearly that it has been modified. lang/usenglish/us_durz_cart.c lang/usenglish/us_durz_cart.h lang/usenglish/us_int_accent_cart.c lang/usenglish/us_int_accent_cart.h lang/usenglish/us_int_tone_cart.c lang/usenglish/us_int_tone_cart.h lang/usenglish/us_phoneset.c lang/usenglish/us_f0lr.c These are directly (or indirectly) compiled/derived from files that are part of the Festival Speech Synthesis System (1.4.1). Hence they have a joint copyright CMU/Edinburgh but with the same free licence configure # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. configure.sub config.guess missing install-sh mkinstalldirs Copyright FSF, and under the GPL, these files are only used for convenient configuration and are not part of the generated binary, and therefore do not impose any GPL restrctions on the rest of the system. But as they are standard methods for configuration they are included. palm/include/peal.h palm/include/pealstub.h palm/arm_flite/pealstub.c palm/m68k_flite/peal.c /********** * Copyright (c) 2004 Greg Parker. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY GREG PARKER ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. **********/ The whole Sun Microsystems math library was ported to Palm for this but its not actually needed, though the include file is to allow bits of the system to compile that currently linked in to the system, so we just have the include file here palm/include/fdlibm.h * ==================================================== * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. * * Developed at SunSoft, a Sun Microsystems, Inc. business. * Permission to use, copy, modify, and distribute this * software is freely granted, provided that this notice * is preserved. * ==================================================== ------------ Flite Device ------------ /* Copyright (c) 2013 Fredrik Wikstrom. All rights reserved. ** ** Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions ** are met: ** ** 1. Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** ** 2. Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in the ** documentation and/or other materials provided with the distribution. ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' ** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE ** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ** POSSIBILITY OF SUCH DAMAGE. */