Apache Felix OSGi Web Console
Copyright 2007-2009 The Apache Software Foundation


I. Included Software

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
Licensed under the Apache License 2.0.

This product includes software developed at
The OSGi Alliance (http://www.osgi.org/).
Copyright (c) OSGi Alliance (2000, 2007).
Licensed under the Apache License 2.0.

This product includes software from http://kxml.sourceforge.net.
Copyright (c) 2002,2003, Stefan Haustein, Oberhausen, Rhld., Germany.
Licensed under the BSD License

This product includes software from http://www.json.org.
Copyright (c) 2002 JSON.org
Licensed under the JSON License

This product includes software from http://www.jquery.com
Copyright (c) 2009 John Resig, http://jquery.com/
Licensed under the MIT License

This product includes software from http://tablesorter.com
Copyright (c) 2007 Christian Bach
Licensed under the MIT License

This product includes software from http://www.fyneworks.com
Copyright (c) 2008 Fyneworks.com
Licensed under the MIT License

This product includes icons from the Silk Icon set
(http://www.famfamfam.com/lab/icons/silk/)
Copyright (c) 2006 Mark James
Licensed under the Creative Commons Attribution 2.5 License


II. Used Software

This product uses software developed at
The OSGi Alliance (http://www.osgi.org/).
Copyright (c) OSGi Alliance (2000, 2007).
Licensed under the Apache License 2.0.


III. License Summary
- Apache License 2.0
- BSD License
- JSON License
- MIT License
- Creative Commons Attribution 2.5 License
