
Apache JSPWiki
Copyright 2008 - 2012 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

Portions of this code donated by BaseN Corporation.

Based on JSPWiki by Janne Jalkanen, Andrew R. Jaquith, and others.

There have been many contributors so far.  Especially thanks go to
Andrew Jaquith, Dirk Frederickx, Murray Altheim, Olaf Kock, Mark
Rawling, Dan Frankowski, Terry Steichen, Chuck Smith, Christoph Sauer,
Erik Bunn, Niilo Neuvo, Alain Ravet, Kalle Kivimaa, Jeff Phillips,
Mahlen Morris, Paul Downes, Michael Gentry, John Volkar, Torsten
Hildebrandt, and Foster Schucker who have given quite a lot of
support and/or code.  There are also a number of other people who have
generously given their time, and you can find hopefully all of their
names in the ChangeLog.

SilkIconSet (C) Mark James. http://www.famfamfam.com/lab/icons/silk/

OSCache Copyright (c) 2001 The OpenSymphony Group, licensed under the OpenSymphony 
Software License 1.1 http://opensymphony.com/webwork/license.action

Jaxen  Copyright 2003 (C) The Werken Company. Licensed under Jaxen license 
http://jaxen.codehaus.org/license.html

HSQLDB Copyright (c) 2001-2005, The HSQL Development Group

Akismet Copyright (c) 2005-2006, David A. Czarnecki

Stripes Copyright (C) 2005 Tim Fennell

JDOM Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.

Sandler Copyright (c) 2003, Mark Lussier

Contains code Copyright by Mozilla Foundation.

Jetty Copyright 2004-2008 Mort Bay Consulting Pty. Ltd.

JUnit Copyright Eric Gamma and others.

Selenium (C) OpenQA.org

Prettify Copyright (C) 2006 Google Inc.

posteditor.js by Daniel Mota aka IceBeat, (see http://icebeat.bitacoras.com/mootools/posteditor/), 
licensed under the terms of the MIT license http://opensource.org/licenses/mit-license.php

Slimbox, adapted for JSPWiki, original by Christophe Bleys. (see http://www.digitalia.be/software/slimbox) 

Servlet-api Copyright 1997-2008 Sun Microsystems, Inc, licensed under CDDL 1.0: 
http://opensource.org/licenses/cddl-1.0

search_highlight.js  Copyright (c) 2002  Stuart Langridge

fckconfig.js Copyright (C) 2003-2008 Frederico Caldeira Knabben licensed under 
the terms of Mozilla Public License Version 2.0 http://http://www.mozilla.org/MPL/2.0

mootools.js Copyright (c) 2006 Valerio Proietti, <http://mad4milk.net>, licensed 
under the terms of the MIT license http://opensource.org/licenses/mit-license.php