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

This software was developed at the Apache Software Foundation
(http://www.apache.org) and may have dependencies on other
Apache software licensed under Apache License 2.0.


I. Included Third-Party 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, 2009).
Licensed under the Apache License 2.0.

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://www.jqueryui.com
Copyright (c) 2009 AUTHORS.txt, http://jqueryui.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

This product includes software from http://code.google.com/p/cookies/
Copyright (c) 2005 - 2009, James Auldridge
Licensed under the MIT License

This product includes software from http://developer.yahoo.net/yui/
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Licensed under the BSD License

This product includes software from the Mozilla Foundation
Licensed under the MIT License

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


II. Used Third-Party Software

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


III. License Summary

- Apache License 2.0
- JSON License
- MIT License
- Creative Commons Attribution 2.5 License
- Tanner Hildebrand's License