Apache Syncope
Copyright 2012-2020 The Apache Software Foundation

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

The following copyright notice(s) were affixed to portions of this code
with which this file is now or was at one time distributed.

==

This product includes software developed by the Animate.css project.
Copyright (c) 2016 Daniel Eden

==

This product includes software developed by the AOP Alliance (Java/J2EE AOP standards).

==

This product includes software developed by the Bootbox.js project.
Copyright (C) 2011-2015 by Nick Payne nick@kurai.co.uk

==

This product includes software developed by the Bootstrap project.
Copyright (c) 2011-2016 Twitter, Inc.

==

This product includes software developed by the bootstrap-select project.
Copyright (c) 2013-2015 bootstrap-select]

==

This product includes software developed by the Modernizr project.
Copyright (C) 2016

==

This product includes software developed by the Jackson project.

==

This product includes software developed by the Java Uuid Generator (JUG) project.

==

This product includes software developed by the Google Guava project.
Copyright (c) 2016 The Guava Authors.

==

This product includes software developed by the Wicket - jQuery UI project.
Copyright 2012-2013 Sebastien Briquet

==

This product includes software developed by the JAXB project.
Copyright (c) 2013-2016 The JAXB project.

==

This product includes software developed by the HikariCP project.

==

This product includes software developed by the google-diff-match-patch project.
Copyright (c) 2006 Google Inc.

==

This product includes the Javascript syntax highlighter.
Copyright (c) 2006, Ivan Sagalaev

==

This product includes software developed by the Metrics project.
Copyright (c) 2010-2014 Coda Hale, Yammer.com

==

This product includes software developed by the Swagger project.
Copyright 2016 SmartBear Software

==

This product includes software developed by the Ionicons project.
Copyright (c) 2016 Drifty (http://drifty.com/)

==

This product includes software developed by the slimScroll project.
Copyright (c) 2011 Piotr Rochala (http://rocha.la)

==

This product includs software developed by Oracle.
Copyright (c) 2012-2013 Oracle and/or its affiliates. All rights reserved.

==

This product includes software developed by the Java Community Process (https://jcp.org/en/jsr/detail?id=181).
 Copyright (c) 2013 Oracle and/or its affiliates. All rights reserved.

==

This product includes software developed by the Bean Validation Project (http://beanvalidation.org).
Copyright (c) Red Hat, Inc., Emmanuel Bernard

==

This product includes software developed by the JAX-RS project.
Copyright (c) 2014, Oracle Corporation and/or its affiliates. All rights reserved.

==

This product includes software developed by the SAAJ Standard Implementation (https://saaj.java.net/).
 Copyright (c) 2013 Oracle and/or its affiliates. All rights reserved.

==

This product includes software developed by the JAX-WS project.
 Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.

==

This product includes software developed by the Joda Time project.
Copyright (c) 2002-2016 Joda.org. All Rights Reserved.

==

This product includes the jQuery Core JavaScript Library.
Copyright 2007, 2016 jQuery Foundation and other contributors.

==

This product includes software developed by the jquery.cookie project.
Copyright 2014 Klaus Hartl

==

This product includes the jQuery UI JavaScript Library.
Copyright 2007, 2015 jQuery Foundation and other contributors.

==

This product includes software developed by the jQuery++ project.
Copyright (C) 2012 Bitovi

==

This product includes software developed by the jsPlumb project.
Copyright (c) 2010 - 2014 jsPlumb, http://jsplumbtoolkit.com/

==

This product includes software developed by the Kendo UI project.
Copyright (c) 2014-2015 Telerik]

==

This product includes software developed by the lodash project.
Copyright jQuery Foundation and other contributors <https://jquery.org/>]

==

This product includes software developed by Terracotta. Inc.
Ehcache source code and documentation are Copyright (c) Terracotta, Inc.

==

This product includes software developed by the SERP Project.
Copyright (c) 2002-2007, A. Abram White http://serp.sourceforge.net/
All rights reserved.

==

This product includes software developed by the ConnId project.
Copyright 2008-2009 Sun Microsystems, Inc. All rights reserved.
Copyright 2011-2016 Tirasa S.r.l. All rights reserved.

==

This product includes software developed by the Flowable project.

==

This product includes AspectJ (>= 1.52) software developed by the Eclipse
Software Foundation.

==

This product includes software developed by the Legion of the Bouncy Castle.
Copyright (c) 2000-2016 The Legion of the Bouncy Castle Inc. (http://www.bouncycastle.org)

==

This product includes software developed by the Stax 2 Extension API Project.

==

This product includes software developed by the Woodstox Project.

==

This project includes software developed by the Jasypt project.
Copyright (c) 2014 The JASYPT team. All Rights Reserved

==

This product includes softare developed by the Javassist project.
Copyright (C) 1999- by Shigeru Chiba, All rights reserved.

==

This product includes software developed by the MyBatis project.

==

This product includes software developed by the Shibboleth project.

==

This product includes software developed by the ASM project.
Copyright (c) 2000-2011 INRIA, France Telecom
All rights reserved.

==

This product includes software developed by Terracotta. Inc.
Quartz Scheduler source code and documentation are Copyright (c) Terracotta, Inc.

==

This product includes software developed by the Reflections project.

==

This products includes software developed by the Simple Logging Facade for Java (SLF4J) project.
Copyright (c) 2004-2016 QOS.ch.

==

This product includes software developed by SpringSource.
Copyright (c) 2004-2016 SpringSource
All rights reserved.

==

This product includes software developed by the spin.js project.
Copyright (c) 2011-2015 Felix Gnass [fgnass at gmail dot com]

==

This product includes software developed by the FileSaver.js project.
Copyright (c) 2015 Carlos A. Gomes.

==

This product includes software developed by the Bootstrap File Input project.
Copyright (c) 2014 - 2016, Kartik Visweswaran Krajee.com All rights reserved.

==

This product includes software developed by the Chart.js project.
Copyright (c) 2018 Chart.js Contributors

==

This product contains unmodified binary redistributions for H2 database engine,
which is dual licensed and available under a modified version of the MPL 1.1 (Mozilla Public License) or under the
(unmodified) EPL 1.0 (Eclipse Public License).
An original copy of the license agreement can be found at: http://www.h2database.com/html/license.html

==

This product includes software developed by the Select2 project.
Copyright (c) 2012-2015 Kevin Brown, Igor Vaynberg, and Select2 contributors

==

This product includes software developed by the SnakeYAML project.

==

This product includes software developed by the Web Services Description Language for Java project.
Copyright (c) Dice.
All Rights Reserved.

==

This product includes software developed by the X-editable project.
Copyright (c) 2012 Vitaliy Potapov

==

This product includes software developed by Adobe Systems Incorporated (http://www.adobe.com/).
Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.
