<?xml version="1.0" encoding="UTF-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->
<!-- more info here: https://jeremylong.github.io/DependencyCheck/general/suppression.html -->
<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd">
  <suppress>
   <notes><![CDATA[
   file name: jython-standalone-2.7.2.jar (shaded: org.apache.commons:commons-compress:1.19)
   ]]></notes>
   <packageUrl regex="true">^pkg:maven/org\.apache\.commons/commons\-compress@.*$</packageUrl>
   <cpe>cpe:/a:apache:commons_compress</cpe>
</suppress>
<suppress>
   <notes><![CDATA[
   file name: jython-standalone-2.7.2.jar (shaded: com.google.guava:guava:28.0-android)
   ]]></notes>
   <packageUrl regex="true">^pkg:maven/com\.google\.guava/guava@.*$</packageUrl>
   <cpe>cpe:/a:google:guava</cpe>
</suppress>
<suppress>
   <notes><![CDATA[
   file name: jython-standalone-2.7.2.jar (shaded: org.apache.commons:commons-compress:1.19)
   ]]></notes>
   <packageUrl regex="true">^pkg:maven/org\.apache\.commons/commons\-compress@.*$</packageUrl>
   <cve>CVE-2021-35515</cve>
</suppress>
<suppress>
   <notes><![CDATA[
   file name: jython-standalone-2.7.2.jar (shaded: org.apache.commons:commons-compress:1.19)
   ]]></notes>
   <packageUrl regex="true">^pkg:maven/org\.apache\.commons/commons\-compress@.*$</packageUrl>
   <cve>CVE-2021-35516</cve>
</suppress>
<suppress>
   <notes><![CDATA[
   file name: jython-standalone-2.7.2.jar (shaded: org.apache.commons:commons-compress:1.19)
   ]]></notes>
   <packageUrl regex="true">^pkg:maven/org\.apache\.commons/commons\-compress@.*$</packageUrl>
   <cve>CVE-2021-35517</cve>
</suppress>
<suppress>
   <notes><![CDATA[
   file name: jython-standalone-2.7.2.jar (shaded: org.apache.commons:commons-compress:1.19)
   ]]></notes>
   <packageUrl regex="true">^pkg:maven/org\.apache\.commons/commons\-compress@.*$</packageUrl>
   <cve>CVE-2021-36090</cve>
</suppress>
<suppress>
   <notes><![CDATA[
   file name: commons-io-2.6.jar
   ]]></notes>
   <packageUrl regex="true">^pkg:maven/commons\-io/commons\-io@.*$</packageUrl>
   <cve>CVE-2021-29425</cve>
</suppress>
<suppress>
   <notes><![CDATA[
   file name: jython-standalone-2.7.2.jar (shaded: com.google.guava:guava:28.0-android)
   ]]></notes>
   <packageUrl regex="true">^pkg:maven/com\.google\.guava/guava@.*$</packageUrl>
   <cve>CVE-2020-8908</cve>
</suppress>
<suppress>
   <notes><![CDATA[
   file name: commons-configuration2-2.8.0.jar
   ]]></notes>
   <packageUrl regex="true">^pkg:maven/org\.apache\.commons/commons\-configuration2@.*$</packageUrl>
   <cve>CVE-2021-37533</cve>
</suppress>
<suppress>
   <notes><![CDATA[
   file name: commons-email-1.5.jar
   ]]></notes>
   <packageUrl regex="true">^pkg:maven/org\.apache\.commons/commons\-email@.*$</packageUrl>
   <cve>CVE-2021-37533</cve>
</suppress>
<suppress>
   <notes><![CDATA[
   file name: commons-beanutils-1.9.4.jar
   ]]></notes>
   <packageUrl regex="true">^pkg:maven/commons\-beanutils/commons\-beanutils@.*$</packageUrl>
   <cve>CVE-2021-37533</cve>
</suppress>
<suppress>
   <notes><![CDATA[
   file name: angus-activation-2.0.1.jar
   ]]></notes>
   <packageUrl regex="true">^pkg:maven/org\.eclipse\.angus/angus\-activation@.*$</packageUrl>
   <cve>CVE-2023-4218</cve>
</suppress>

</suppressions>