diff --git a/CHANGELOG.md b/CHANGELOG.md index cee44ebd0..e3329a773 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ ## __WORK IN PROGRESS__ * (@Apollon77) Allows only numbers for ts and tc fields in state when provided for setState +* (@foxriver76) Added objects warn limit per instance ## 7.0.7 (2025-04-17) - Lucy * (@foxriver76) fixed the edge-case problem on Windows (if adapter calls `readDir` on single file) diff --git a/README.md b/README.md index 7b6133be4..1e71aa960 100644 --- a/README.md +++ b/README.md @@ -91,6 +91,7 @@ The main configuration is stored in `iobroker-data/iobroker.json`. Normally, the - [Error Reporting via ioBroker Sentry](#error-reporting-via-iobroker-sentry) - [Notification System](#notification-system) - [Disk space warnings](#disk-space-warnings) +- [Objects warn limit](#objects-warn-limit) - [Controlling and monitoring of adapter processes](#controlling-and-monitoring-of-adapter-processes) - [Multihost](#multihost) - [TIERS: Start instances in an ordered manner](#tiers-start-instances-in-an-ordered-manner) @@ -552,6 +553,12 @@ All three are optional and can be a string or null/undefined if omitted. The js-controller will generate a notification of in the scope `system` and the category `diskSpaceIssues` on warning level, if your free disk space falls under a specified threshold. By default, this threshold is 5 % of disk space. Via the state `system.host..diskWarning` you can override this level to any level between `0` and `100`. +### Objects warn limit +**Feature status:** New in 7.1.0 + +The js-controller will generate a notification of in the scope `system` and the category `numberObjectsLimitExceeded` on warning level, if your number of objects for an adapter instance exceed a specified threshold. +By default, this is set to `5000` objects. Via the state `system.host.adapter...objectsWarnLimit` you can override this threshold to any positive number. + ### Logging #### Log levels **Feature status:** stable diff --git a/packages/adapter/src/lib/adapter/adapter.ts b/packages/adapter/src/lib/adapter/adapter.ts index ffc1c8ea9..6d31eafa9 100644 --- a/packages/adapter/src/lib/adapter/adapter.ts +++ b/packages/adapter/src/lib/adapter/adapter.ts @@ -138,7 +138,7 @@ import type { UserInterfaceClientRemoveMessage, } from '@/lib/_Types.js'; import { UserInterfaceMessagingController } from '@/lib/adapter/userInterfaceMessagingController.js'; -import { SYSTEM_ADAPTER_PREFIX } from '@iobroker/js-controller-common-db/constants'; +import { SYSTEM_ADAPTER_PREFIX, DEFAULT_OBJECTS_WARN_LIMIT } from '@iobroker/js-controller-common-db/constants'; import { isLogLevel } from '@iobroker/js-controller-common-db/tools'; const controllerVersion = packJson.version; @@ -11506,30 +11506,15 @@ export class AdapterClass extends EventEmitter { if (!this._config.isInstall && (!process.argv || !this._config.forceIfDisabled)) { const id = `system.adapter.${this.namespace}`; - this.outputCount += 2; - this.#states.setState(`${id}.alive`, { val: true, ack: true, expire: 30, from: id }); - let done = false; - this.#states.setState( - `${id}.connected`, - { - val: true, - ack: true, - expire: 30, - from: id, - }, - () => { - if (!done) { - done = true; - this.terminate(EXIT_CODES.NO_ADAPTER_CONFIG_FOUND); - } - }, - ); - setTimeout(() => { - if (!done) { - done = true; - this.terminate(EXIT_CODES.NO_ADAPTER_CONFIG_FOUND); - } - }, 1_000); + await this.#setStateWithOutputCount(`${id}.alive`, { val: true, ack: true, expire: 30, from: id }); + await this.#setStateWithOutputCount(`${id}.connected`, { + val: true, + ack: true, + expire: 30, + from: id, + }); + + this.terminate(EXIT_CODES.NO_ADAPTER_CONFIG_FOUND); return; } } @@ -11590,7 +11575,7 @@ export class AdapterClass extends EventEmitter { // @ts-expect-error this.config = adapterConfig.native; // @ts-expect-error - this.host = adapterConfig.common.host; + this.host = adapterConfig.common.host || tools.getHostName(); // @ts-expect-error this.common = adapterConfig.common; @@ -11635,7 +11620,7 @@ export class AdapterClass extends EventEmitter { this.config = adapterConfig.native || {}; // @ts-expect-error this.common = adapterConfig.common || {}; - this.host = this.common?.host || tools.getHostName() || os.hostname(); + this.host = this.common?.host || tools.getHostName(); } this.adapterConfig = adapterConfig; @@ -11706,13 +11691,19 @@ export class AdapterClass extends EventEmitter { from: `system.adapter.${this.namespace}`, }); + try { + await this.#checkObjectsWarnLimit(); + } catch (e) { + this._logger.error(`${this.namespaceLog} Could not check objects warn limit: ${e.message}`); + } + if (this._options.instance === undefined) { this.version = this.pack?.version ? this.pack.version : this.ioPack?.common ? this.ioPack.common.version : 'unknown'; - // display if it's a non-official version - only if installedFrom is explicitly given and differs it's not npm + // display if it's a non-official version - only if installedFrom is explicitly given and differs it's not npm const isNpmVersion = isInstalledFromNpm({ adapterName: this.name, @@ -11982,6 +11973,67 @@ export class AdapterClass extends EventEmitter { }); } + /** + * Check if the number of objects exceeds the warning limit + */ + async #checkObjectsWarnLimit(): Promise { + if (!this.#objects || !this.#states) { + throw new Error(tools.ERRORS.ERROR_DB_CLOSED); + } + + const warnLimitId = `${SYSTEM_ADAPTER_PREFIX + this.namespace}.objectsWarnLimit`; + + const warnLimitState = await this.#getStateWithInputCount(warnLimitId); + + const objectsWarnLimit = + typeof warnLimitState?.val === 'number' ? warnLimitState.val : DEFAULT_OBJECTS_WARN_LIMIT; + + if (warnLimitState?.ack === false) { + await this.#setStateWithOutputCount(warnLimitId, { val: objectsWarnLimit, ack: true }); + } + + const keys = await this.#objects.getKeysAsync(`${this.namespace}*`); + const objectsCount = keys?.length ?? 0; + + if (objectsCount > objectsWarnLimit) { + const message = `This instance has ${objectsCount} objects, the limit for this instance is set to ${objectsWarnLimit}.`; + this._logger.warn(`${this.namespaceLog} ${message}`); + await this.registerNotification('system', 'numberObjectsLimitExceeded', message); + } + } + + /** + * Get a state and automatically increase the input count + * + * @param id id of the state + */ + #getStateWithInputCount(id: string): ioBroker.GetStatePromise { + if (!this.#states) { + throw new Error(tools.ERRORS.ERROR_DB_CLOSED); + } + + this.inputCount++; + return this.#states.getState(id); + } + + /** + * Set a state and automatically increase the output count + * + * @param id if of the state + * @param state state to set + */ + #setStateWithOutputCount( + id: string, + state: ioBroker.SettableState | ioBroker.StateValue, + ): ioBroker.SetStatePromise { + if (!this.#states) { + throw new Error(tools.ERRORS.ERROR_DB_CLOSED); + } + + this.outputCount++; + return this.#states.setState(id, state); + } + private async _extendObjects(tasks: Record, callback: () => void): Promise { if (!tasks || !tasks.length) { return tools.maybeCallback(callback); diff --git a/packages/common-db/src/lib/common/constants.ts b/packages/common-db/src/lib/common/constants.ts index dc4cf9f2d..fdcf9383d 100644 --- a/packages/common-db/src/lib/common/constants.ts +++ b/packages/common-db/src/lib/common/constants.ts @@ -8,3 +8,5 @@ export const SYSTEM_REPOSITORIES_ID = 'system.repositories'; export const SYSTEM_CONFIG_ID = 'system.config'; /** Unicode symbol to be appended on endkey of getObjectView */ export const HIGHEST_UNICODE_SYMBOL = '\u9999'; +/** Default limit for generating a warning if exceeding the number of objects per instance */ +export const DEFAULT_OBJECTS_WARN_LIMIT = 5_000; diff --git a/packages/common-db/src/lib/common/tools.ts b/packages/common-db/src/lib/common/tools.ts index 80205dbe0..0ed455248 100644 --- a/packages/common-db/src/lib/common/tools.ts +++ b/packages/common-db/src/lib/common/tools.ts @@ -32,6 +32,7 @@ import type * as DiskUsage from 'diskusage'; import * as url from 'node:url'; import { createRequire } from 'node:module'; import type { WithRequired } from '@iobroker/types-dev'; +import { DEFAULT_OBJECTS_WARN_LIMIT } from '@/lib/common/constants.js'; // eslint-disable-next-line unicorn/prefer-module const thisDir = url.fileURLToPath(new URL('.', import.meta.url || `file://${__filename}`)); @@ -3536,6 +3537,20 @@ export function getInstanceIndicatorObjects(namespace: string): ioBroker.StateOb }, native: {}, }, + { + _id: `${id}.objectsWarnLimit`, + type: 'state', + common: { + name: `${namespace} objects warn limit`, + type: 'number', + read: true, + write: true, + desc: 'If the number of objects of this adapter instance exceeds this limit, the user will receive a warning', + role: 'state', + def: DEFAULT_OBJECTS_WARN_LIMIT, + }, + native: {}, + }, ]; } diff --git a/packages/controller/io-package.json b/packages/controller/io-package.json index c2b797169..fb1600c70 100644 --- a/packages/controller/io-package.json +++ b/packages/controller/io-package.json @@ -1310,6 +1310,38 @@ }, "regex": [], "limit": 1 + }, + { + "category": "numberObjectsLimitExceeded", + "name": { + "en": "The configured limit of objects for this adapter instance has been exceeded.", + "de": "Das konfigurierte Limit an Objekten für diese Adapterinstanz wurde überschritten.", + "ru": "Превышен настроенный лимит объектов для данного экземпляра адаптера.", + "pt": "O limite configurado de objectos para esta instância de adaptador foi ultrapassado.", + "nl": "De geconfigureerde limiet van objecten voor deze instantie van de adapter is overschreden.", + "fr": "La limite d'objets configurée pour cette instance d'adaptateur a été dépassée.", + "it": "È stato superato il limite di oggetti configurato per questa istanza dell'adattatore.", + "es": "Se ha superado el límite configurado de objetos para esta instancia de adaptador.", + "pl": "Skonfigurowany limit obiektów dla tej instancji adaptera został przekroczony.", + "uk": "Перевищено ліміт об'єктів для цього екземпляра адаптера.", + "zh-cn": "The configured limit of objects for this adapter instance has been exceeded." + }, + "severity": "alert", + "description": { + "en": "This adapter instance has exceeded the configured limit of objects. Too many objects are often caused by misconfigurations or bugs. This can lead to massive performance issues. If this is expected, you can increase the limit for this adapter instance.", + "de": "Diese Adapterinstanz hat das konfigurierte Limit an Objekten überschritten. Zu viele Objekte werden oft durch Fehlkonfigurationen oder Bugs verursacht. Dies kann zu massiven Performance-Problemen führen. Wenn dies zu erwarten ist, können Sie das Limit für diese Adapterinstanz erhöhen.", + "ru": "Этот экземпляр адаптера превысил установленный лимит объектов. Слишком большое количество объектов часто вызвано неправильной конфигурацией или ошибками. Это может привести к серьезным проблемам с производительностью. Если это ожидаемо, вы можете увеличить лимит для этого экземпляра адаптера.", + "pt": "Esta instância do adaptador excedeu o limite configurado de objectos. A existência de demasiados objectos é frequentemente causada por configurações incorrectas ou erros. Isto pode levar a grandes problemas de desempenho. Se isto for expetável, pode aumentar o limite para esta instância do adaptador.", + "nl": "Deze instantie van de adapter heeft de geconfigureerde limiet van objecten overschreden. Te veel objecten worden vaak veroorzaakt door verkeerde configuraties of bugs. Dit kan leiden tot enorme prestatieproblemen. Als dit wordt verwacht, kun je de limiet voor deze adapterinstantie verhogen.", + "fr": "Cette instance d'adaptateur a dépassé la limite d'objets configurée. Un trop grand nombre d'objets est souvent dû à une mauvaise configuration ou à des bogues. Cela peut entraîner d'importants problèmes de performance. Si cela est prévisible, vous pouvez augmenter la limite de cette instance d'adaptateur.", + "it": "L'istanza di questo adattatore ha superato il limite di oggetti configurato. Un numero eccessivo di oggetti è spesso causato da configurazioni errate o da bug. Ciò può causare gravi problemi di prestazioni. Se questo è previsto, è possibile aumentare il limite per questa istanza dell'adattatore.", + "es": "Esta instancia de adaptador ha superado el límite configurado de objetos. El exceso de objetos suele deberse a errores o errores de configuración. Esto puede conducir a problemas de rendimiento masivos. Si esto es lo esperado, puedes aumentar el límite para esta instancia de adaptador.", + "pl": "Ta instancja adaptera przekroczyła skonfigurowany limit obiektów. Zbyt duża liczba obiektów jest często spowodowana błędną konfiguracją lub błędami. Może to prowadzić do poważnych problemów z wydajnością. Jeśli jest to oczekiwane, można zwiększyć limit dla tej instancji adaptera.", + "uk": "Цей екземпляр адаптера перевищив встановлений ліміт об'єктів. Надмірна кількість об'єктів часто спричинена неправильними конфігураціями або помилками. Це може призвести до значних проблем з продуктивністю. Якщо це очікується, ви можете збільшити ліміт для цього екземпляра адаптера.", + "zh-cn": "This adapter instance has exceeded the configured limit of objects. Too many objects are often caused by misconfigurations or bugs. This can lead to massive performance issues. If this is expected, you can increase the limit for this adapter instance." + }, + "regex": [], + "limit": 1 } ] } diff --git a/packages/types-dev/index.d.ts b/packages/types-dev/index.d.ts index 3e5eabca9..f75d413a4 100644 --- a/packages/types-dev/index.d.ts +++ b/packages/types-dev/index.d.ts @@ -376,7 +376,16 @@ declare global { | 'nonExistingFileErrors' | 'remoteHostErrors' | 'restartLoop' - | 'fileToJsonl'; + | 'fileToJsonl' + | 'numberObjectsLimitExceeded' + | 'systemRebootRequired' + | 'dockerUpdate' + | 'packageUpdates' + | 'securityIssues' + | 'databaseErrors' + | 'blockedVersions' + | 'automaticAdapterUpgradeSuccessful' + | 'automaticAdapterUpgradeFailed'; [other: string]: string; } diff --git a/schemas/io-package.json b/schemas/io-package.json index cf9e94079..8ac20f8f4 100644 --- a/schemas/io-package.json +++ b/schemas/io-package.json @@ -52,654 +52,673 @@ "description": "The license this software is published under.", "type": "string", "enum": [ - "DSDP", - "NIST-PD", - "CC-BY-NC-SA-2.0", - "NLOD-1.0", - "RHeCos-1.1", - "GFDL-1.3-no-invariants-only", - "RSCPL", - "ASWF-Digital-Assets-1.1", + "X11", + "HPND-export2-US", + "OpenPBS-2.3", + "OSL-3.0", + "Rdisc", + "LPD-document", + "BSD-3-Clause-LBNL", + "AFL-1.1", + "HP-1989", + "CC-BY-ND-4.0", + "RSA-MD", + "HPND-sell-variant", + "threeparttable", + "AMPAS", + "ngrep", + "mplus", + "MIT-Festival", + "HDF5", + "Artistic-1.0-Perl", + "BSD-4-Clause-UC", + "SAX-PD", + "APSL-1.1", + "AGPL-1.0-or-later", + "ANTLR-PD", + "Zimbra-1.3", "GLWTPL", - "Info-ZIP", + "Minpack", + "OSL-2.1", + "PolyForm-Small-Business-1.0.0", + "DOC", + "Cronyx", "LPPL-1.3c", - "zlib-acknowledgement", - "checkmk", - "OLDAP-2.8", - "cve-tou", - "MirOS", - "Parity-6.0.0", - "CC-BY-SA-2.1-JP", - "InnoSetup", - "IPL-1.0", - "Spencer-86", - "JPNIC", + "SGI-OpenGL", + "libtiff", "OpenVision", - "SGP4", - "MPL-1.1", - "BSD-3-Clause-Clear", - "AML-glslang", - "Vim", - "Community-Spec-1.0", - "OSL-3.0", - "CrystalStacker", - "MPL-1.0", - "OLDAP-1.2", + "TrustedQSL", + "Sun-PPP", + "Entessa", + "AFL-2.0", + "Sleepycat", + "Latex2e", + "FDK-AAC", + "CECILL-C", + "ODC-By-1.0", + "Bitstream-Charter", + "UMich-Merit", + "CC-BY-NC-2.5", + "diffmark", + "BlueOak-1.0.0", + "Info-ZIP", + "CC-BY-NC-ND-4.0", + "JSON", "Sendmail-8.23", - "CMU-Mach", - "xpp", - "ECL-1.0", - "Plexus", - "Elastic-2.0", - "CPL-1.0", - "GFDL-1.2-no-invariants-only", - "OPL-1.0", - "CC-BY-SA-4.0", + "SGI-B-1.0", + "RPL-1.1", + "ISC", + "FSFUL", + "Multics", + "3D-Slicer-1.0", + "Libpng", + "LPPL-1.0", + "NGPL", + "Clips", + "CC-BY-4.0", + "GFDL-1.1-or-later", + "GPL-1.0-or-later", + "GFDL-1.3-invariants-only", + "Sun-PPP-2000", + "Glide", + "Furuseth", + "GFDL-1.3-no-invariants-or-later", + "any-OSI", + "LGPL-2.0-or-later", "ADSL", - "SGI-B-1.1", - "XFree86-1.1", - "Latex2e-translated-notice", - "IPA", - "psutils", + "Noweb", + "Linux-man-pages-1-para", + "CC-BY-SA-3.0", + "TAPR-OHL-1.0", + "SMLNJ", + "OFL-1.1-RFN", + "SL", + "Afmparse", + "CC-SA-1.0", + "APSL-1.0", + "Hippocratic-2.1", + "UPL-1.0", + "CC-BY-NC-SA-4.0", + "xzoom", + "SchemeReport", + "Boehm-GC", + "xinetd", "CC-BY-NC-ND-3.0", - "FSFULLR", + "CECILL-2.1", "SSLeay-standalone", - "MMIXware", - "Graphics-Gems", - "HPND-export-US-acknowledgement", - "CC-BY-NC-2.0", - "OLDAP-1.3", - "LGPL-2.1-only", - "NLOD-2.0", - "BSD-2-Clause", - "mailprio", - "CC-BY-SA-3.0", - "Noweb", - "Soundex", - "CECILL-1.0", - "Aladdin", - "SSH-OpenSSH", - "BSD-Attribution-HPND-disclaimer", - "CC-BY-NC-SA-2.0-UK", - "Kazlib", - "Ubuntu-font-1.0", - "SGI-OpenGL", - "Rdisc", - "HPND-sell-variant-MIT-disclaimer", + "CATOSL-1.1", + "NIST-PD", + "GPL-2.0-or-later", + "CECILL-1.1", + "GFDL-1.2-no-invariants-only", + "mpich2", + "JasPer-2.0", + "RPSL-1.0", + "OLDAP-1.4", + "TU-Berlin-1.0", + "CC-BY-3.0-AT", + "BSD-3-Clause-No-Nuclear-License", + "Xdebug-1.03", + "SISSL", + "Apache-1.1", + "HPND-DEC", + "Unlicense-libtelnet", + "Condor-1.1", + "Unicode-TOU", + "OML", + "QPL-1.0-INRIA-2004", + "CC-BY-ND-1.0", + "PolyForm-Noncommercial-1.0.0", + "man2html", + "OLFL-1.3", + "copyleft-next-0.3.0", "LGPLLR", - "OAR", - "HTMLTIDY", - "AMPAS", - "NOSL", - "fwlw", + "CDDL-1.1", + "Xfig", + "CC-BY-2.5-AU", + "APL-1.0", + "OpenSSL-standalone", + "OGDL-Taiwan-1.0", + "BSL-1.0", + "generic-xts", + "PHP-3.0", + "LAL-1.2", + "DRL-1.1", + "LPL-1.0", + "Leptonica", + "CNRI-Jython", + "DL-DE-ZERO-2.0", + "Cube", "w3m", - "Latex2e", - "O-UDA-1.0", - "mplus", - "HPND-Intel", - "PPL", - "OFL-1.1-RFN", - "EPL-1.0", + "TGPPL-1.0", "HPND-UC-export-US", - "CC-BY-3.0-DE", - "SNIA", - "Barr", + "EFL-1.0", + "NRL", + "CPAL-1.0", + "NCSA", + "CC-BY-SA-2.1-JP", + "PPL", + "GPL-1.0-only", + "ASWF-Digital-Assets-1.1", + "NCL", + "App-s2p", + "BitTorrent-1.0", + "HPND-merchantability-variant", + "EPICS", + "BSD-3-Clause-Attribution", + "curl", + "NLPL", + "Apache-2.0", + "BSD-Protection", + "DEC-3-Clause", + "MakeIndex", + "RSCPL", + "bcrypt-Solar-Designer", + "OGL-UK-1.0", "OLDAP-2.1", - "CC-BY-ND-4.0", - "softSurfer", + "HPND-export-US-modify", + "MIT-0", + "MPL-2.0-no-copyleft-exception", + "CERN-OHL-S-2.0", + "TMate", + "CMU-Mach", + "OSL-2.0", + "UnixCrypt", + "Plexus", + "MulanPSL-2.0", + "OSET-PL-2.1", + "DocBook-Schema", + "CC-BY-NC-ND-3.0-DE", + "IPA", "LGPL-2.1-or-later", - "OFL-1.0", - "BSD-3-Clause-flex", - "psfrag", - "BSD-1-Clause", - "BSD-3-Clause-No-Military-License", - "Cube", - "LPPL-1.2", - "OLDAP-2.2.2", - "TTWL", - "CC-BY-3.0", - "BSD-3-Clause-Open-MPI", - "CC-BY-NC-ND-3.0-IGO", - "ZPL-2.1", - "CC0-1.0", - "NPL-1.0", - "CECILL-2.0", - "wwl", - "NGPL", - "FSFAP", - "any-OSI", - "mpich2", - "EUDatagrid", - "Sleepycat", - "AFL-3.0", - "Arphic-1999", - "BSD-4-Clause-UC", - "dtoa", - "Unicode-DFS-2015", - "TCP-wrappers", - "MIT-0", + "zlib-acknowledgement", + "Zed", + "Fair", + "AGPL-3.0-only", + "GFDL-1.2-invariants-only", + "Spencer-86", + "AMDPLPA", + "NPOSL-3.0", + "SWL", + "CC-BY-SA-2.0-UK", + "Brian-Gladman-2-Clause", + "CC-BY-NC-SA-2.0", + "CERN-OHL-P-2.0", + "OFL-1.0-RFN", + "Linux-man-pages-copyleft-var", + "OFL-1.1-no-RFN", + "BSD-3-Clause-flex", + "Intel-ACPI", + "CFITSIO", + "Bitstream-Vera", + "HPND", + "HPND-UC", + "PSF-2.0", + "xkeyboard-config-Zinoviev", + "mpi-permissive", + "TORQUE-1.1", + "CC-BY-NC-ND-2.5", + "cve-tou", + "Artistic-2.0", + "ANTLR-PD-fallback", + "CERN-OHL-W-2.0", + "Spencer-99", + "PHP-3.01", "SugarCRM-1.1.3", - "iMatix", - "CC-BY-3.0-AT", - "Adobe-2006", + "GFDL-1.3-only", + "SNIA", + "HPND-sell-variant-MIT-disclaimer", + "libpng-2.0", + "BSD-4-Clause", + "HPND-Intel", + "LiLiQ-R-1.1", + "any-OSI-perl-modules", + "Aspell-RU", + "LiLiQ-P-1.1", + "HPND-INRIA-IMAG", + "BUSL-1.1", + "Parity-7.0.0", + "TTYP0", "LOOP", - "MIT-testregex", - "eGenix", + "LiLiQ-Rplus-1.1", + "BSD-3-Clause-No-Nuclear-License-2014", + "BSD-3-Clause-Sun", + "Parity-6.0.0", + "IBM-pibs", + "bzip2-1.0.6", + "GFDL-1.2-no-invariants-or-later", + "FSFULLRWD", + "Game-Programming-Gems", + "gnuplot", + "X11-swapped", + "NLOD-1.0", + "CPOL-1.02", + "OAR", + "Abstyles", + "SISSL-1.2", + "Unicode-DFS-2015", + "Graphics-Gems", + "CC-BY-SA-4.0", + "Dotseqn", + "RHeCos-1.1", + "BSD-3-Clause-Clear", + "CC-BY-SA-2.0", + "GFDL-1.2-invariants-or-later", + "EUDatagrid", + "libselinux-1.0", + "FreeImage", + "APSL-1.2", + "Sendmail", + "SHL-0.5", + "Ubuntu-font-1.0", + "BSD-4-Clause-Shortened", "GCR-docs", - "AAL", - "CAL-1.0", - "PHP-3.0", + "GFDL-1.1-invariants-only", + "ZPL-2.1", + "CC-PDDC", + "OCLC-2.0", + "OpenSSL", + "MS-RL", + "BSD-3-Clause-acpica", + "TCP-wrappers", + "CC-BY-NC-SA-3.0-DE", + "LPPL-1.3a", + "OLDAP-1.2", + "HP-1986", "hdparm", - "OpenPBS-2.3", - "DL-DE-BY-2.0", - "GFDL-1.3-or-later", - "CERN-OHL-1.2", - "MIT", + "PADL", + "OPL-UK-3.0", + "BSD-1-Clause", + "MIT-CMU", + "Mup", + "ICU", + "xpp", + "Artistic-1.0-cl8", + "CC-BY-2.5", "XSkat", - "Gutmann", - "CC-BY-NC-SA-2.5", - "PDDL-1.0", - "Unlicense", + "YPL-1.0", + "W3C-20150513", + "SGI-B-1.1", + "LGPL-2.1-only", "CUA-OPL-1.0", - "NCL", - "GFDL-1.1-invariants-or-later", - "CECILL-2.1", - "PolyForm-Small-Business-1.0.0", - "HP-1986", - "HPND-export-US", - "X11-swapped", - "SHL-0.5", - "BSD-Systemics", - "CDLA-Sharing-1.0", - "GFDL-1.1-or-later", - "Newsletr", - "TMate", - "EPICS", - "SAX-PD", - "MIT-Festival", - "LGPL-2.0-or-later", - "QPL-1.0", - "SSH-short", - "OGL-UK-1.0", - "GPL-2.0-only", - "ECL-2.0", - "CATOSL-1.1", - "Cornell-Lossless-JPEG", - "DOC", - "RSA-MD", - "OCLC-2.0", - "AGPL-3.0-only", - "OLDAP-2.5", - "CC-BY-SA-3.0-DE", - "Artistic-1.0-Perl", - "CC-BY-NC-ND-4.0", - "BSD-3-Clause-No-Nuclear-License-2014", - "Martin-Birgmeier", - "EUPL-1.0", - "McPhee-slideshow", - "CC-BY-NC-ND-1.0", - "BlueOak-1.0.0", - "ODC-By-1.0", - "COIL-1.0", - "Bitstream-Vera", + "Eurosym", + "FSFULLRSD", + "CC-BY-NC-SA-2.0-FR", + "X11-distribute-modifications-variant", + "MPEG-SSG", + "MIT-Modern-Variant", + "CAL-1.0", + "HPND-doc-sell", + "Naumen", + "Unicode-3.0", + "Unicode-DFS-2016", + "HIDAPI", + "Baekmuk", + "Kazlib", + "HPND-MIT-disclaimer", + "OLDAP-2.2.2", + "AdaCore-doc", + "0BSD", + "ISC-Veillard", + "CERN-OHL-1.2", + "dvipdfm", + "MulanPSL-1.0", "JPL-image", - "MIT-enna", - "BSD-Inferno-Nettverk", - "CDDL-1.1", - "FSFULLRWD", - "GFDL-1.2-invariants-only", - "EFL-1.0", - "Entessa", - "Glide", + "FSFULLR", + "CryptoSwift", "CC-BY-NC-3.0-DE", - "Artistic-1.0-cl8", - "W3C-19980720", - "HPND-merchantability-variant", - "Motosoto", + "BitTorrent-1.1", + "EPL-2.0", + "Vim", + "Inner-Net-2.0", + "LGPL-2.0-only", + "Zimbra-1.4", + "Cornell-Lossless-JPEG", + "Knuth-CTAN", "OLDAP-1.1", - "HP-1989", - "IEC-Code-Components-EULA", - "NCGL-UK-2.0", - "CC-BY-3.0-IGO", - "BSD-Source-Code", - "GFDL-1.1-no-invariants-only", - "W3C", - "magaz", - "libutil-David-Nugent", - "AFL-2.1", - "NAIST-2003", - "DocBook-XML", - "LiLiQ-Rplus-1.1", - "MIT-feh", - "UMich-Merit", - "CC-BY-NC-3.0", - "NTP", - "Frameworx-1.0", - "HPND-sell-variant", - "CC-BY-1.0", - "APL-1.0", - "WTFPL", - "FBM", - "ClArtistic", - "SunPro", - "VSL-1.0", - "CC-BY-NC-SA-3.0-IGO", - "NBPL-1.0", - "OPUBL-1.0", "CC-BY-NC-ND-2.0", - "BSD-3-Clause-LBNL", - "Ruby", - "Fair", - "MIT-advertising", - "OGDL-Taiwan-1.0", - "OPL-UK-3.0", - "MPL-2.0", - "DocBook-Stylesheet", - "TPL-1.0", - "TAPR-OHL-1.0", - "UnixCrypt", - "FreeBSD-DOC", - "CMU-Mach-nodoc", - "CC-BY-3.0-AU", - "Zimbra-1.4", - "BSD-3-Clause", - "lsof", - "FreeImage", - "OLDAP-2.0", - "APSL-1.2", - "APSL-1.0", - "CC-BY-NC-SA-2.0-FR", - "D-FSL-1.0", - "pnmstitch", - "CC-BY-SA-2.0-UK", - "CERN-OHL-W-2.0", - "LPL-1.02", - "CNRI-Jython", - "BSD-2-Clause-first-lines", - "BSL-1.0", - "LZMA-SDK-9.11-to-9.20", - "Condor-1.1", - "CC-BY-3.0-US", - "CECILL-C", - "diffmark", - "HPND-Kevlin-Henney", - "RPL-1.1", - "Hippocratic-2.1", + "Borceux", + "DSDP", + "Unlicense", + "ECL-2.0", + "HPND-Pbmplus", + "ASWF-Digital-Assets-1.0", + "HPND-sell-MIT-disclaimer-xserver", + "SPL-1.0", + "AFL-3.0", + "OLDAP-2.6", + "BSD-Advertising-Acknowledgement", + "SAX-PD-2.0", + "Crossword", "swrule", - "CDDL-1.0", - "MS-RL", - "any-OSI-perl-modules", + "LZMA-SDK-9.11-to-9.20", + "MIPS", "CNRI-Python", - "OLDAP-2.3", - "LiLiQ-P-1.1", - "Python-2.0.1", - "MakeIndex", - "AFL-1.2", - "CC-BY-ND-2.0", - "FDK-AAC", - "SL", - "TU-Berlin-1.0", - "Saxpath", - "dvipdfm", - "BSD-2-Clause-Darwin", - "CPAL-1.0", - "copyleft-next-0.3.1", - "NetCDF", - "FTL", - "DocBook-Schema", - "CERN-OHL-S-2.0", - "X11-distribute-modifications-variant", - "copyleft-next-0.3.0", - "X11", + "UCAR", + "InnoSetup", + "MIT-Wu", "CC-BY-NC-SA-2.0-DE", - "GFDL-1.3-only", - "Bahyph", - "LGPL-3.0-or-later", - "ZPL-1.1", - "gSOAP-1.3b", - "JasPer-2.0", - "Sendmail-Open-Source-1.1", - "BUSL-1.1", - "Eurosym", - "ThirdEye", - "CC-SA-1.0", - "Watcom-1.0", - "Caldera", - "Parity-7.0.0", - "SMPPL", - "MulanPSL-2.0", - "Afmparse", - "GFDL-1.2-no-invariants-or-later", - "Lucida-Bitmap-Fonts", - "DRL-1.0", - "CC-BY-NC-2.5", - "GD", - "Zend-2.0", - "Cronyx", - "TTYP0", - "CC-BY-ND-1.0", - "Ferguson-Twofish", - "SchemeReport", - "MIT-Khronos-old", - "LPD-document", - "UPL-1.0", - "CECILL-1.1", - "Crossword", - "C-UDA-1.0", - "BSD-3-Clause-HP", + "HPND-sell-variant-MIT-disclaimer-rev", + "CC-BY-NC-SA-3.0", + "GL2PS", + "Martin-Birgmeier", + "xlock", + "etalab-2.0", + "OLDAP-2.8", + "W3C-19980720", + "CC-BY-3.0-US", + "CPL-1.0", + "OFFIS", + "CC0-1.0", + "CECILL-2.0", + "OCCT-PL", + "NPL-1.0", + "magaz", + "Soundex", + "SOFA", + "Frameworx-1.0", + "check-cvs", + "OLDAP-2.2.1", "Apache-1.0", - "CERN-OHL-1.1", - "SISSL", - "MPL-2.0-no-copyleft-exception", - "OLFL-1.3", - "Inner-Net-2.0", - "GPL-1.0-only", - "LiLiQ-R-1.1", - "BSD-4.3TAHOE", - "AFL-2.0", - "GFDL-1.2-invariants-or-later", - "CC-BY-NC-ND-2.5", + "URT-RLE", + "mailprio", "OLDAP-2.4", - "Brian-Gladman-3-Clause", - "gtkbook", - "OFL-1.0-no-RFN", - "LAL-1.3", - "threeparttable", - "Imlib2", - "Adobe-Display-PostScript", - "Xnet", - "OSL-2.1", - "OLDAP-2.2", - "MS-LPL", - "Mup", - "BSD-4.3RENO", - "MIT-Click", - "W3C-20150513", - "GPL-1.0-or-later", - "OSL-2.0", - "EPL-2.0", - "ASWF-Digital-Assets-1.0", - "APSL-1.1", - "HPND", - "Linux-OpenIB", - "Zeeff", - "OGL-UK-3.0", - "CC-BY-ND-3.0-DE", - "BSD-4-Clause-Shortened", - "gnuplot", - "libpng-2.0", - "Leptonica", - "Clips", - "OpenSSL", - "Sendmail", - "NCBI-PD", - "TrustedQSL", - "Catharon", - "EUPL-1.2", - "Wsuipa", + "BSD-Source-beginning-file", + "CC-BY-SA-1.0", + "CDL-1.0", + "OLDAP-1.3", + "HPND-Netrek", + "Artistic-1.0", + "checkmk", + "Saxpath", + "CMU-Mach-nodoc", + "NCGL-UK-2.0", + "EUPL-1.1", + "CC-BY-ND-2.5", + "SunPro", + "Elastic-2.0", + "ODbL-1.0", + "CERN-OHL-1.1", + "IEC-Code-Components-EULA", "OGL-UK-2.0", - "ISC-Veillard", - "CC-BY-3.0-NL", - "AdaCore-doc", + "Caldera-no-preamble", + "libutil-David-Nugent", + "ThirdEye", + "MIT-open-group", + "EUPL-1.0", + "NICTA-1.0", + "CDDL-1.0", + "MIT-feh", + "CC-BY-3.0-IGO", + "OLDAP-2.3", + "RPL-1.5", + "OPUBL-1.0", "AGPL-1.0-only", - "libselinux-1.0", - "HPND-Fenneberg-Livingston", - "Xdebug-1.03", - "Jam", - "check-cvs", - "AMD-newlib", - "CC-BY-NC-1.0", - "xinetd", - "BSD-4-Clause", - "IBM-pibs", - "Apache-2.0", - "Linux-man-pages-1-para", - "CPOL-1.02", - "BSD-Source-beginning-file", - "CERN-OHL-P-2.0", - "OFFIS", - "GPL-2.0-or-later", - "radvd", - "Xfig", - "Multics", - "AFL-1.1", - "Beerware", - "MS-PL", - "ssh-keyscan", - "Spencer-99", - "OFL-1.1", - "Baekmuk", - "Qhull", - "GFDL-1.2-or-later", - "CC-BY-NC-SA-4.0", - "APSL-2.0", - "VOSTROM", - "HPND-doc", - "NRL", - "TPDL", - "AGPL-1.0-or-later", - "HPND-Markus-Kuhn", - "LZMA-SDK-9.22", - "Unicode-3.0", - "GPL-3.0-or-later", - "OpenSSL-standalone", - "Zimbra-1.3", - "xkeyboard-config-Zinoviev", - "GFDL-1.1-invariants-only", - "OML", - "ANTLR-PD", - "HPND-MIT-disclaimer", - "Dotseqn", - "HPND-DEC", - "LGPL-2.0-only", - "CC-BY-2.5-AU", - "DEC-3-Clause", - "QPL-1.0-INRIA-2004", + "TOSL", + "FTL", + "WTFPL", "Intel", - "NIST-PD-fallback", - "CC-BY-NC-4.0", - "BSD-3-Clause-No-Nuclear-Warranty", - "HPND-UC", - "MIT-Wu", - "Kastrup", - "MIT-CMU", - "DL-DE-ZERO-2.0", + "Barr", + "Zlib", + "BSD-Systemics-W3Works", + "psfrag", + "AAL", + "CECILL-B", + "NTIA-PD", + "CC-BY-NC-1.0", + "libpng-1.6.35", + "BSD-2-Clause", + "NASA-1.3", + "Mackerras-3-Clause-acknowledgment", + "BSD-4.3RENO", + "Pixar", + "CC-BY-3.0-NL", + "AMD-newlib", + "MIT-Click", + "AML-glslang", + "MIT-advertising", + "CC-BY-2.0", + "CC-BY-NC-ND-1.0", + "OLDAP-2.5", + "Zend-2.0", + "HPND-Fenneberg-Livingston", + "DRL-1.0", "NIST-Software", + "CrystalStacker", + "BSD-Source-Code", "Spencer-94", - "CC-BY-2.0", - "EUPL-1.1", - "HPND-export-US-modify", - "generic-xts", - "NLPL", - "NCSA", - "PSF-2.0", - "Linux-man-pages-copyleft-var", + "SimPL-2.0", "OSL-1.1", - "mpi-permissive", - "Glulxe", - "LAL-1.2", - "SMAIL-GPL", - "NASA-1.3", - "SPL-1.0", - "BSD-Advertising-Acknowledgement", - "BSD-3-Clause-Modification", - "3D-Slicer-1.0", - "NPL-1.1", - "IJG-short", - "CC-BY-4.0", - "ulem", - "BSD-3-Clause-Sun", - "SAX-PD-2.0", - "TORQUE-1.1", - "TU-Berlin-2.0", - "Borceux", - "0BSD", - "Mackerras-3-Clause", - "GFDL-1.3-invariants-or-later", - "Knuth-CTAN", - "SMLNJ", - "NPOSL-3.0", - "OLDAP-1.4", - "Intel-ACPI", - "Adobe-Glyph", - "BSD-3-Clause-Attribution", + "CDLA-Permissive-1.0", "metamail", - "Zed", - "Sun-PPP-2000", - "SGI-B-1.0", - "xlock", + "GFDL-1.1-only", + "CC-BY-ND-3.0", + "CC-BY-3.0-DE", + "HPND-export-US", + "NBPL-1.0", + "GPL-2.0-only", + "NAIST-2003", + "SSH-OpenSSH", + "Nokia", + "gtkbook", + "Boehm-GC-without-fee", + "GPL-3.0-or-later", + "CECILL-1.0", + "AGPL-3.0-or-later", + "Xnet", + "NOSL", + "ImageMagick", + "MITNFA", + "APAFML", + "Jam", + "FBM", + "BSD-2-Clause-Darwin", + "HTMLTIDY", + "W3C", + "AFL-1.2", + "YPL-1.1", + "iMatix", + "Caldera", "SCEA", - "Artistic-2.0", - "ICU", - "CC-BY-2.5", - "SHL-0.51", - "LPPL-1.3a", - "CDLA-Permissive-1.0", - "EFL-2.0", - "URT-RLE", - "HPND-sell-regexpr", - "GFDL-1.3-no-invariants-or-later", - "AMDPLPA", - "Bitstream-Charter", - "python-ldap", + "O-UDA-1.0", + "LPPL-1.2", + "HPND-export-US-acknowledgement", + "GFDL-1.2-or-later", + "McPhee-slideshow", + "Ruby", + "Kastrup", + "Adobe-Glyph", "CC-BY-SA-3.0-AT", - "OGC-1.0", - "CC-BY-SA-2.0", - "PADL", - "NICTA-1.0", - "LPL-1.0", - "LPPL-1.1", - "CDL-1.0", - "Boehm-GC", - "Sun-PPP", - "OLDAP-2.2.1", - "AGPL-3.0-or-later", - "OLDAP-2.6", - "BSD-3-Clause-No-Nuclear-License", - "BSD-Protection", - "OCCT-PL", - "YPL-1.0", - "MIPS", - "SGI-B-2.0", - "MIT-open-group", - "AML", - "OSL-1.0", - "GFDL-1.3-invariants-only", + "DocBook-Stylesheet", + "Aladdin", + "MIT-testregex", + "BSD-3-Clause-Modification", + "BSD-3-Clause-No-Military-License", + "Adobe-Display-PostScript", + "psutils", + "LGPL-3.0-or-later", + "LZMA-SDK-9.22", + "Bahyph", + "BSD-Attribution-HPND-disclaimer", + "Motosoto", + "MIT-Khronos-old", + "Ruby-pty", + "CC-BY-NC-SA-1.0", + "Artistic-dist", + "IJG", + "Linux-OpenIB", + "ulem", + "MIT", + "GFDL-1.3-no-invariants-only", "Symlinks", - "Ruby-pty", - "UCAR", - "SimPL-2.0", - "PolyForm-Noncommercial-1.0.0", - "OFL-1.1-no-RFN", - "Furuseth", - "Mackerras-3-Clause-acknowledgment", - "CC-PDM-1.0", - "Zlib", - "BSD-2-Clause-Views", + "NPL-1.1", + "Giftware", + "CDLA-Permissive-2.0", + "LAL-1.3", + "Widget-Workshop", + "Latex2e-translated-notice", + "Gutmann", + "COIL-1.0", + "Watcom-1.0", + "HPND-Kevlin-Henney", + "fwlw", + "DL-DE-BY-2.0", "Interbase-1.0", - "LGPL-3.0-only", - "CC-BY-NC-SA-3.0", - "MIT-Modern-Variant", - "Unicode-TOU", - "APAFML", - "TCL", - "Xerox", - "FSFUL", - "FSFAP-no-warranty-disclaimer", - "Artistic-1.0", - "ImageMagick", - "Brian-Gladman-2-Clause", - "BitTorrent-1.1", - "GPL-3.0-only", - "Linux-man-pages-copyleft", - "NTP-0", - "curl", - "MITNFA", - "libtiff", + "OGTSL", + "BSD-Inferno-Nettverk", + "BSD-2-Clause-Views", + "ssh-keyscan", + "GFDL-1.1-invariants-or-later", + "Mackerras-3-Clause", + "TPL-1.0", "ErlPL-1.1", + "LPPL-1.1", + "BSD-2-Clause-first-lines", + "OGL-Canada-2.0", + "D-FSL-1.0", + "SMAIL-GPL", + "CC-PDM-1.0", + "CDLA-Sharing-1.0", + "GD", + "GFDL-1.3-invariants-or-later", + "Zeeff", + "Imlib2", + "CC-BY-NC-2.0", "Adobe-Utopia", - "HaskellReport", - "ISC", - "Naumen", - "CC-BY-SA-1.0", - "etalab-2.0", - "MPEG-SSG", - "CFITSIO", - "MulanPSL-1.0", - "BSD-2-Clause-Patent", - "CC-PDDC", - "TGPPL-1.0", - "snprintf", - "Boehm-GC-without-fee", - "Pixar", - "HPND-Netrek", - "Minpack", - "GFDL-1.1-only", - "HPND-INRIA-IMAG", - "App-s2p", - "BSD-3-Clause-acpica", - "OGTSL", - "ODbL-1.0", - "CC-BY-ND-3.0", - "CC-BY-SA-2.5", - "OLDAP-2.7", - "UCL-1.0", - "MTLL", - "HPND-export2-US", - "OFL-1.0-RFN", "ZPL-2.0", - "bcrypt-Solar-Designer", - "CC-BY-NC-SA-3.0-DE", - "GFDL-1.1-no-invariants-or-later", + "Beerware", + "SUL-1.0", + "EPL-1.0", + "CC-BY-1.0", + "CC-BY-NC-4.0", + "FSFAP", + "VSL-1.0", + "lsof", + "Wsuipa", + "Unlicense-libwhirlpool", + "NTP-0", + "BSD-3-Clause", + "APSL-2.0", + "CAL-1.0-Combined-Work-Exception", + "OGL-UK-3.0", "CC-BY-SA-3.0-IGO", - "Apache-1.1", - "Caldera-no-preamble", - "SSPL-1.0", - "DRL-1.1", + "SGP4", + "SSH-short", + "OLDAP-2.7", + "VOSTROM", + "CC-BY-3.0", + "CC-BY-NC-ND-3.0-IGO", + "dtoa", + "SMPPL", + "MIT-enna", + "Catharon", + "SHL-0.51", + "copyleft-next-0.3.1", + "BSD-2-Clause-Patent", + "FSL-1.1-ALv2", + "Python-2.0.1", + "CC-BY-ND-2.0", + "MTLL", + "OFL-1.0", + "Qhull", + "IPL-1.0", "Linux-man-pages-copyleft-2-para", - "OLDAP-2.0.1", - "ANTLR-PD-fallback", - "CDLA-Permissive-2.0", - "HIDAPI", - "bzip2-1.0.6", - "GL2PS", - "TOSL", - "Abstyles", + "softSurfer", + "snprintf", + "GFDL-1.2-only", + "EUPL-1.2", + "ZPL-1.1", + "TTWL", + "MPL-2.0", + "HPND-doc", + "BSD-Systemics", + "DocBook-DTD", + "EFL-2.0", + "HaskellReport", + "BSD-3-Clause-No-Nuclear-Warranty", + "Newsletr", + "OFL-1.1", + "GFDL-1.1-no-invariants-only", + "CC-BY-ND-3.0-DE", + "UCL-1.0", + "OGC-1.0", + "eGenix", + "OPL-1.0", + "Xerox", + "NIST-PD-fallback", + "SGI-B-2.0", "TermReadKey", - "xzoom", - "PostgreSQL", - "CNRI-Python-GPL-Compatible", - "Widget-Workshop", - "Libpng", - "HPND-sell-MIT-disclaimer-xserver", - "CC-BY-NC-SA-1.0", + "Sendmail-Open-Source-1.1", + "NTP", + "HPND-Markus-Kuhn", + "BSD-2-Clause-pkgconf-disclaimer", + "TCL", + "NetCDF", + "wwl", "Python-2.0", - "BSD-Systemics-W3Works", - "LPPL-1.0", - "YPL-1.1", - "SWL", - "Giftware", - "CECILL-B", - "OSET-PL-2.1", - "CAL-1.0-Combined-Work-Exception", - "HPND-sell-variant-MIT-disclaimer-rev", - "JSON", - "GFDL-1.2-only", + "FSFAP-no-warranty-disclaimer", + "python-ldap", + "CC-BY-SA-2.5", + "GPL-3.0-only", + "GFDL-1.3-or-later", + "LGPL-3.0-only", + "Glulxe", + "CC-BY-NC-SA-3.0-IGO", + "BSD-3-Clause-Open-MPI", + "FSL-1.1-MIT", + "Linux-man-pages-copyleft", + "ECL-1.0", + "jove", + "BSD-3-Clause-HP", + "AML", + "FreeBSD-DOC", + "XFree86-1.1", + "CC-BY-3.0-AU", + "Arphic-1999", + "OSL-1.0", + "OFL-1.0-no-RFN", + "OLDAP-2.0.1", + "JPNIC", + "LPL-1.02", + "OLDAP-2.0", + "Adobe-2006", + "CC-BY-NC-SA-2.5", + "C-UDA-1.0", + "Lucida-Bitmap-Fonts", + "Ferguson-Twofish", + "MMIXware", + "SSPL-1.0", + "MPL-1.0", + "TPDL", + "OLDAP-2.2", + "gSOAP-1.3b", + "TU-Berlin-2.0", "pkgconf", - "Unicode-DFS-2016", - "PHP-3.01", + "CC-BY-NC-SA-2.0-UK", + "DocBook-XML", + "CNRI-Python-GPL-Compatible", + "MS-LPL", + "Brian-Gladman-3-Clause", + "radvd", + "MPL-1.1", "blessing", - "RPSL-1.0", - "BitTorrent-1.0", - "SISSL-1.2", - "IJG", - "OGL-Canada-2.0", - "CC-BY-ND-2.5", - "HPND-Pbmplus", - "CC-BY-NC-ND-3.0-DE", - "RPL-1.5", - "Nokia", - "HPND-doc-sell" + "HPND-sell-regexpr", + "AFL-2.1", + "CC-BY-SA-3.0-DE", + "PDDL-1.0", + "BSD-4.3TAHOE", + "CC-BY-NC-3.0", + "NLOD-2.0", + "GFDL-1.1-no-invariants-or-later", + "ClArtistic", + "pnmstitch", + "MirOS", + "QPL-1.0", + "IJG-short", + "Community-Spec-1.0", + "NCBI-PD", + "PostgreSQL", + "MS-PL" ] } },