Apache Cordova
Copyright 2012 The Apache Software Foundation

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

This software includes software developed by Baptiste Lepilleur
Copyright (C) 2007-2010 Baptiste Lepilleur

This software includes software developed by Joerg Wiedenmann
Copyright (C) 2006 Joerg Wiedenmann

This software includes software developed by BlackBerry Ltd.
Copyright (C) 2014 BlackBerry Ltd.
