${pom.name}
Copyright (c) 2005 - 2012 The Apache Software Foundation

This product includes software developed by
The Apache Software Foundation (http://www.apache.org/).

This product also includes software under the BSD license 
(see the LICENSE file contained in this distribution), with
the following copyright:

Copyright (c) Django Software Foundation and individual contributors.
All rights reserved.

