Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Factory
grant
grant-0.2.1.obscpio
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File grant-0.2.1.obscpio of Package grant
07070100000000000081A4000000000000000000000001668D56C30000075F000000000000000000000000000000000000001800000000grant-0.2.1/.binny.yamltools: - name: grant version: want: current method: go-install with: module: . entrypoint: cmd/grant ldflags: - -X main.version={{ .Version }} - -X main.gitCommit={{ .Version }} - -X main.gitDescription={{ .Version }} # note: sprig functions are available: http://masterminds.github.io/sprig/ - -X main.buildDate={{ now | date "2006-01-02T15:04:05Z07:00" }} - name: binny version: want: v0.6.2 method: github-release with: repo: anchore/binny - name: gh version: want: v2.35.0 method: github-release with: repo: cli/cli - name: quill version: want: v0.4.1 method: github-release with: repo: anchore/quill - name: chronicle version: want: v0.8.0 method: github-release with: repo: anchore/chronicle - name: gosimports version: want: v0.3.8 method: github-release with: repo: rinchsan/gosimports - name: glow version: want: v1.5.1 method: github-release with: repo: charmbracelet/glow # used for signing the checksums file at release - name: cosign version: want: v2.2.4 method: github-release with: repo: sigstore/cosign - name: goreleaser version: want: v1.25.1 method: github-release with: repo: goreleaser/goreleaser - name: golangci-lint version: want: v1.54.2 method: github-release with: repo: golangci/golangci-lint - name: bouncer version: want: v0.4.0 method: github-release with: repo: wagoodman/go-bouncer - name: task version: want: v3.30.1 method: github-release with: repo: go-task/task - name: syft version: want: v1.2.0 method: github-release with: repo: anchore/syft 07070100000001000081A4000000000000000000000001668D56C30000077C000000000000000000000000000000000000001A00000000grant-0.2.1/.bouncer.yamlpermit: - BSD.* - CC0.* - MIT.* - Apache.* - MPL.* - ISC - WTFPL ignore-packages: # packageurl-go is released under the MIT license located in the root of the repo at /mit.LICENSE - github.com/anchore/packageurl-go # both of these dependencies are specified as Apache-2.0 in their respective GitHub READMEs - github.com/alibabacloud-go/cr-20160607/client - github.com/alibabacloud-go/tea-xml/service # crypto/internal/boring is released under the openSSL license as a part of the Golang Standard Libary - crypto/internal/boring # from: https://github.com/spdx/tools-golang/blob/main/LICENSE.code # The tools-golang source code is provided and may be used, at your option, # under either: # * Apache License, version 2.0 (Apache-2.0), OR # * GNU General Public License, version 2.0 or later (GPL-2.0-or-later). # (we choose Apache-2.0) - github.com/spdx/tools-golang # from: https://github.com/xi2/xz/blob/master/LICENSE # All these files have been put into the public domain. # You can do whatever you want with these files. - github.com/xi2/xz # from: https://gitlab.com/cznic/sqlite/-/blob/v1.15.4/LICENSE # This is a BSD-3-Clause license - modernc.org/libc - modernc.org/libc/errno - modernc.org/libc/fcntl - modernc.org/libc/fts - modernc.org/libc/grp - modernc.org/libc/langinfo - modernc.org/libc/limits - modernc.org/libc/netdb - modernc.org/libc/netinet/in - modernc.org/libc/poll - modernc.org/libc/pthread - modernc.org/libc/pwd - modernc.org/libc/signal - modernc.org/libc/stdio - modernc.org/libc/stdlib - modernc.org/libc/sys/socket - modernc.org/libc/sys/stat - modernc.org/libc/sys/types - modernc.org/libc/termios - modernc.org/libc/time - modernc.org/libc/unistd - modernc.org/libc/utime - modernc.org/libc/uuid/uuid - modernc.org/libc/wctype - modernc.org/mathutil - modernc.org/memory 07070100000002000081A4000000000000000000000001668D56C30000005C000000000000000000000000000000000000001C00000000grant-0.2.1/.chronicle.yamlenforce-v0: true # don't make breaking-change label bump major version before 1.0. title: ""07070100000003000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001400000000grant-0.2.1/.github07070100000004000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001C00000000grant-0.2.1/.github/actions07070100000005000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000002600000000grant-0.2.1/.github/actions/bootstrap07070100000006000081A4000000000000000000000001668D56C3000005D9000000000000000000000000000000000000003200000000grant-0.2.1/.github/actions/bootstrap/action.yamlname: "Bootstrap" description: "Bootstrap all tools and dependencies" inputs: go-version: description: "Go version to install" required: true default: "1.22.x" cache-key-prefix: description: "Prefix all cache keys with this value" required: true default: "831180ac25" bootstrap-apt-packages: description: "Space delimited list of tools to install via apt" default: "" runs: using: "composite" steps: - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe #v4.1.0 with: go-version: ${{ inputs.go-version }} - name: Restore tool cache id: tool-cache uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 #v3.3.2 with: path: ${{ github.workspace }}/.tool key: ${{ inputs.cache-key-prefix }}-${{ runner.os }}-tool-${{ hashFiles('Taskfile.yaml') }}-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ inputs.cache-key-prefix }}-${{ runner.os }}-tool-${{ hashFiles('Taskfile.yaml') }} ${{ inputs.cache-key-prefix }}-${{ runner.os }}-tool - name: (cache-miss) Bootstrap project tools shell: bash run: make ci-bootstrap-tools - name: Bootstrap go dependencies shell: bash run: make ci-bootstrap-go - name: Install apt packages if: inputs.bootstrap-apt-packages != '' shell: bash run: | DEBIAN_FRONTEND=noninteractive sudo apt update && sudo -E apt install -y ${{ inputs.bootstrap-apt-packages }} 07070100000007000081A4000000000000000000000001668D56C30000008B000000000000000000000000000000000000002400000000grant-0.2.1/.github/dependabot.yamlversion: 2 updates: - package-ecosystem: gomod directory: "/" schedule: interval: "daily" open-pull-requests-limit: 10 07070100000008000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001C00000000grant-0.2.1/.github/scripts07070100000009000081ED000000000000000000000001668D56C3000000EE000000000000000000000000000000000000002800000000grant-0.2.1/.github/scripts/ci-check.sh#!/usr/bin/env bash red=$(tput setaf 1) bold=$(tput bold) normal=$(tput sgr0) # assert we are running in CI (or die!) if [[ -z "$CI" ]]; then echo "${bold}${red}This step should ONLY be run in CI. Exiting...${normal}" exit 1 fi 0707010000000A000081ED000000000000000000000001668D56C30000035D000000000000000000000000000000000000002800000000grant-0.2.1/.github/scripts/coverage.py#!/usr/bin/env python3 import subprocess import sys import shlex class bcolors: HEADER = '\033[95m' OKBLUE = '\033[94m' OKCYAN = '\033[96m' OKGREEN = '\033[92m' WARNING = '\033[93m' FAIL = '\033[91m' ENDC = '\033[0m' BOLD = '\033[1m' UNDERLINE = '\033[4m' if len(sys.argv) < 3: print("Usage: coverage.py [threshold] [go-coverage-report]") sys.exit(1) threshold = float(sys.argv[1]) report = sys.argv[2] args = shlex.split(f"go tool cover -func {report}") p = subprocess.run(args, capture_output=True, text=True) percent_coverage = float(p.stdout.splitlines()[-1].split()[-1].replace("%", "")) print(f"{bcolors.BOLD}Coverage: {percent_coverage}%{bcolors.ENDC}") if percent_coverage < threshold: print(f"{bcolors.BOLD}{bcolors.FAIL}Coverage below threshold of {threshold}%{bcolors.ENDC}") sys.exit(1) 0707010000000B000081ED000000000000000000000001668D56C3000003CE000000000000000000000000000000000000003100000000grant-0.2.1/.github/scripts/go-mod-tidy-check.sh#!/usr/bin/env bash set -eu ORIGINAL_STATE_DIR=$(mktemp -d "TEMP-original-state-XXXXXXXXX") TIDY_STATE_DIR=$(mktemp -d "TEMP-tidy-state-XXXXXXXXX") trap "cp -p ${ORIGINAL_STATE_DIR}/* ./ && git update-index -q --refresh && rm -fR ${ORIGINAL_STATE_DIR} ${TIDY_STATE_DIR}" EXIT # capturing original state of files... cp go.mod go.sum "${ORIGINAL_STATE_DIR}" # capturing state of go.mod and go.sum after running go mod tidy... go mod tidy cp go.mod go.sum "${TIDY_STATE_DIR}" set +e # detect difference between the git HEAD state and the go mod tidy state DIFF_MOD=$(diff -u "${ORIGINAL_STATE_DIR}/go.mod" "${TIDY_STATE_DIR}/go.mod") DIFF_SUM=$(diff -u "${ORIGINAL_STATE_DIR}/go.sum" "${TIDY_STATE_DIR}/go.sum") if [[ -n "${DIFF_MOD}" || -n "${DIFF_SUM}" ]]; then echo "go.mod diff:" echo "${DIFF_MOD}" echo "go.sum diff:" echo "${DIFF_SUM}" echo "" printf "FAILED! go.mod and/or go.sum are NOT tidy; please run 'go mod tidy'.\n\n" exit 1 fi 0707010000000C000081ED000000000000000000000001668D56C30000063C000000000000000000000000000000000000002F00000000grant-0.2.1/.github/scripts/trigger-release.sh#!/usr/bin/env bash set -eu TOOL_DIR=.tool GH=$TOOL_DIR/gh bold=$(tput bold) normal=$(tput sgr0) if ! [ -x "$(command -v $GH)" ]; then echo "The GitHub CLI could not be found." exit 1 fi $GH auth status # we need all of the git state to determine the next version. Since tagging is done by # the release pipeline it is possible to not have all of the tags from previous releases. git fetch --tags # populates the CHANGELOG.md and VERSION files echo "${bold}Generating changelog...${normal}" make changelog 2> /dev/null NEXT_VERSION=$(cat VERSION) if [[ "$NEXT_VERSION" == "" || "${NEXT_VERSION}" == "(Unreleased)" ]]; then echo "Could not determine the next version to release. Exiting..." exit 1 fi while true; do read -p "${bold}Do you want to trigger a release for version '${NEXT_VERSION}'?${normal} [y/n] " yn case $yn in [Yy]* ) echo; break;; [Nn]* ) echo; echo "Cancelling release..."; exit;; * ) echo "Please answer yes or no.";; esac done echo "${bold}Kicking off release for ${NEXT_VERSION}${normal}..." echo $GH workflow run release.yaml -f version=${NEXT_VERSION} echo echo "${bold}Waiting for release to start...${normal}" sleep 10 set +e echo "${bold}Head to the release workflow to monitor the release:${normal} $($GH run list --workflow=release.yaml --limit=1 --json url --jq '.[].url')" id=$($GH run list --workflow=release.yaml --limit=1 --json databaseId --jq '.[].databaseId') $GH run watch $id --exit-status || (echo ; echo "${bold}Logs of failed step:${normal}" && GH_PAGER="" $GH run view $id --log-failed) 0707010000000D000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001E00000000grant-0.2.1/.github/workflows0707010000000E000081A4000000000000000000000001668D56C300000A21000000000000000000000000000000000000003200000000grant-0.2.1/.github/workflows/codeql-analysis.yml# For most projects, this workflow file will not need changing; you simply need # to commit it to your repository. # # You may wish to alter this file to override the set of languages analyzed, # or to provide custom queries or build logic. name: "CodeQL Security Scan" on: push: branches: # only run when there are pushes to the main branch (not on PRs) - main schedule: - cron: '0 0 * * 3' permissions: contents: read jobs: analyze: name: Analyze runs-on: ubuntu-latest permissions: security-events: write strategy: fail-fast: false matrix: # Override automatic language detection by changing the below list # Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python'] language: ['go'] # Learn more... # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection steps: - name: Checkout repository uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 #v4.1.1 - name: Install Go uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 #v5.0.0 with: go-version-file: go.mod # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 #v3.23.2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. # Prefix the list here with "+" to use these queries and those in the config file. # queries: ./path/to/local/query, your-org/your-repo/queries@main # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild uses: github/codeql-action/autobuild@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 #v3.23.2 # âšī¸ Command-line programs to run using the OS shell. # đ https://git.io/JvXDl # âī¸ If the Autobuild fails above, remove it and uncomment the following three lines # and modify them (or add more) to build your code if your project # uses a compiled language #- run: | # make bootstrap # make release - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 #v3.23.2 0707010000000F000081A4000000000000000000000001668D56C3000000B1000000000000000000000000000000000000003900000000grant-0.2.1/.github/workflows/dependabot-automation.yamlname: Dependabot Automation on: pull_request: permissions: pull-requests: write jobs: run: uses: anchore/workflows/.github/workflows/dependabot-automation.yaml@main 07070100000010000081A4000000000000000000000001668D56C300000112000000000000000000000000000000000000003900000000grant-0.2.1/.github/workflows/oss-project-board-add.yamlname: Add to OSS board on: issues: types: - opened - reopened - transferred - labeled jobs: run: uses: "anchore/workflows/.github/workflows/oss-project-board-add.yaml@main" secrets: token: ${{ secrets.OSS_PROJECT_GH_TOKEN }} 07070100000011000081A4000000000000000000000001668D56C300000B35000000000000000000000000000000000000002B00000000grant-0.2.1/.github/workflows/release.yamlname: "Release" on: workflow_dispatch: inputs: version: description: tag the latest commit on main with the given version (prefixed with v) required: true permissions: contents: read checks: read env: FORCE_COLOR: true jobs: quality-gate: environment: release runs-on: ubuntu-22.04 steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 #v4.1.1 - name: Check if tag already exists # note: this will fail if the tag already exists run: | [[ "${{ github.event.inputs.version }}" == v* ]] || (echo "version '${{ github.event.inputs.version }}' does not have a 'v' prefix" && exit 1) git tag ${{ github.event.inputs.version }} - name: Check validations results uses: fountainhead/action-wait-for-check@5a908a24814494009c4bb27c242ea38c93c593be #v1.2.0 id: validations with: token: ${{ secrets.GITHUB_TOKEN }} # This check name is defined as the github action job name (in .github/workflows/validations.yaml) checkName: "Validations" ref: ${{ github.event.pull_request.head.sha || github.sha }} - name: Quality gate if: steps.validations.outputs.conclusion != 'success' run: | echo "Validations Status: ${{ steps.validations.conclusion }}" false release: needs: [quality-gate] runs-on: ubuntu-22.04 permissions: contents: write packages: write # required for goreleaser signs section with cosign id-token: write steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 #v4.1.1 with: fetch-depth: 0 - name: Bootstrap environment uses: ./.github/actions/bootstrap env: FORCE_COLOR: true - name: Tag release run: | git config user.name "anchoreci" git config user.email "anchoreci@users.noreply.github.com" git tag -a ${{ github.event.inputs.version }} -m "Release ${{ github.event.inputs.version }}" git push origin --tags env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Build & publish release artifacts run: make ci-release env: # for mac signing and notarization... QUILL_SIGN_P12: ${{ secrets.ANCHORE_APPLE_DEVELOPER_ID_CERT_CHAIN }} QUILL_SIGN_PASSWORD: ${{ secrets.ANCHORE_APPLE_DEVELOPER_ID_CERT_PASS }} QUILL_NOTARY_ISSUER: ${{ secrets.APPLE_NOTARY_ISSUER }} QUILL_NOTARY_KEY_ID: ${{ secrets.APPLE_NOTARY_KEY_ID }} QUILL_NOTARY_KEY: ${{ secrets.APPLE_NOTARY_KEY }} # for creating the release (requires write access to packages and content) GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} HOMEBREW_TOKEN: ${{ secrets.HOMEBREW_TOKEN }} 07070100000012000081A4000000000000000000000001668D56C300000243000000000000000000000000000000000000002F00000000grant-0.2.1/.github/workflows/validations.yamlname: "Validations" on: workflow_dispatch: pull_request: push: branches: - main permissions: contents: read env: FORCE_COLOR: true jobs: Validations: # Note: changing this job name requires making the same update in the .github/workflows/release.yaml pipeline name: "Validations" runs-on: ubuntu-22.04 steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 #v4.1.1 - name: Bootstrap environment uses: ./.github/actions/bootstrap - name: Run all validations run: make pr-validations 07070100000013000081A4000000000000000000000001668D56C30000027E000000000000000000000000000000000000001700000000grant-0.2.1/.gitignore# install dirs /.tmp /.tools /.tool /.task # release locations /snapshot /dist CHANGELOG.md VERSION # IDEs .idea .vscode # If you prefer the allow list template instead of the deny list, see community template: # https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore # # Binaries for programs and plugins *.exe *.exe~ *.dll *.so *.dylib # Test binary, built with `go test -c` *.test # Output of the go coverage tool, specifically when used with LiteIDE *.out # Dependency directories (remove the comment below to include it) # vendor/ # Go workspace file go.work go.work.sum # mac .DS_Store *.json 07070100000014000081A4000000000000000000000001668D56C300000BA2000000000000000000000000000000000000001B00000000grant-0.2.1/.golangci.yamlissues: max-same-issues: 25 # TODO: enable this when we have coverage on docstring comments # # The list of ids of default excludes to include or disable. # include: # - EXC0002 # disable excluding of issues about comments from golint linters: # inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint disable-all: true enable: - asciicheck - bodyclose - dogsled - dupl - errcheck - exportloopref - funlen - gocognit - goconst - gocritic - gocyclo - gofmt - goimports - goprintffuncname - gosec - gosimple - govet - ineffassign - misspell - nakedret - revive - staticcheck - stylecheck - typecheck - unconvert - unparam - unused - whitespace linters-settings: funlen: # Checks the number of lines in a function. # If lower than 0, disable the check. # Default: 60 lines: 70 # Checks the number of statements in a function. # If lower than 0, disable the check. # Default: 40 statements: 50 output: uniq-by-line: false run: timeout: 10m # do not enable... # - deadcode # The owner seems to have abandoned the linter. Replaced by "unused". # - depguard # We don't have a configuration for this yet # - goprintffuncname # does not catch all cases and there are exceptions # - nakedret # does not catch all cases and should not fail a build # - gochecknoglobals # - gochecknoinits # this is too aggressive # - rowserrcheck disabled per generics https://github.com/golangci/golangci-lint/issues/2649 # - godot # - godox # - goerr113 # - goimports # we're using gosimports now instead to account for extra whitespaces (see https://github.com/golang/go/issues/20818) # - golint # deprecated # - gomnd # this is too aggressive # - interfacer # this is a good idea, but is no longer supported and is prone to false positives # - lll # without a way to specify per-line exception cases, this is not usable # - maligned # this is an excellent linter, but tricky to optimize and we are not sensitive to memory layout optimizations # - nestif # - nolintlint # as of go1.19 this conflicts with the behavior of gofmt, which is a deal-breaker (lint-fix will still fail when running lint) # - prealloc # following this rule isn't consistently a good idea, as it sometimes forces unnecessary allocations that result in less idiomatic code # - rowserrcheck # not in a repo with sql, so this is not useful # - scopelint # deprecated # - structcheck # The owner seems to have abandoned the linter. Replaced by "unused". # - testpackage # - varcheck # The owner seems to have abandoned the linter. Replaced by "unused". # - wsl # this doens't have an auto-fixer yet and is pretty noisy (https://github.com/bombsimon/wsl/issues/90)07070100000015000081A4000000000000000000000001668D56C30000090C000000000000000000000000000000000000001D00000000grant-0.2.1/.goreleaser.yamlrelease: prerelease: auto draft: false env: # required to support multi architecture docker builds - CGO_ENABLED=0 builds: - id: linux-build dir: ./cmd/grant binary: grant goos: - linux goarch: - amd64 - arm64 # set the modified timestamp on the output binary to the git timestamp to ensure a reproducible build mod_timestamp: &build-timestamp '{{ .CommitTimestamp }}' ldflags: &build-ldflags | -w -s -extldflags '-static' -X main.version={{.Version}} -X main.gitCommit={{.Commit}} -X main.buildDate={{.Date}} -X main.gitDescription={{.Summary}} - id: darwin-build dir: ./cmd/grant binary: grant goos: - darwin goarch: - amd64 - arm64 mod_timestamp: *build-timestamp ldflags: *build-ldflags hooks: post: - cmd: .tool/quill sign-and-notarize "{{ .Path }}" --dry-run={{ .IsSnapshot }} --ad-hoc={{ .IsSnapshot }} -vv env: - QUILL_LOG_FILE=/tmp/quill-{{ .Target }}.log archives: - id: linux-archives builds: - linux-build - id: darwin-archives builds: - darwin-build nfpms: - license: "Apache 2.0" maintainer: "Anchore, Inc" homepage: &website "https://github.com/anchore/grant" description: &description "A tool consumes SBOMS and details license information" formats: - rpm - deb brews: - tap: owner: anchore name: homebrew-grant token: "{{.Env.HOMEBREW_TOKEN}}" ids: - darwin-archives - linux-archives homepage: *website description: *description license: "Apache License 2.0" sboms: - artifacts: archive # this is relative to the snapshot/dist directory, not the root of the repo cmd: ../.tool/syft documents: - "{{ .Binary }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}.sbom" args: - "scan" - "$artifact" - "--output" - "json=$document" signs: - cmd: .tool/cosign signature: "${artifact}.sig" certificate: "${artifact}.pem" args: - "sign-blob" - "--oidc-issuer=https://token.actions.githubusercontent.com" - "--output-certificate=${certificate}" - "--output-signature=${signature}" - "${artifact}" - "--yes" artifacts: checksum 07070100000016000081A4000000000000000000000001668D56C300000346000000000000000000000000000000000000001800000000grant-0.2.1/.grant.yaml#.grant.yaml show-packages: false ignore-orphan-packages: false check-non-spdx: true format: table rules: - pattern: "*gpl*" name: "gpl-denied" mode: "deny" reason: "GPL licenses are not allowed per xxx-xx company policy" exceptions: - "alpine-baselayout" # We don't link against this package so we don't care about its license - "alpine-baselayout-data" - "base-files" - "netbase" - "libssl3" - pattern: "*BSD*" name: "bsd-denied" mode: "deny" reason: "BSD licenses are not allowed per xxx-xx company policy" exceptions: - "1apt" - "1bsdutils" - "1dash" - "1e2fsprogs" - "1findutils" - "1gpgv" - "1init-system-helpers" - "1libapt-pkg6.0" - "1libblkid1" - "1libcap2" - "1libcom-err2" - "1libdb5.3" 07070100000017000081A4000000000000000000000001668D56C30000057D000000000000000000000000000000000000001C00000000grant-0.2.1/CONTRIBUTING.md## Contributing We welcome contributions to the project! ### Getting Started After pulling the repository, you can get started by running the following command to install the necessary dependencies and build `grant` from source ```bash make ``` After building the project, you can run the following command to run the newly built binary ```bash ./snapshot/<os>-build_<>os_<arch>/grant ``` Keep in mind the build artifacts are placed in the `snapshot` directory and built for each supported platform so choose the appropriate binary for your platform. If you just want to run the project with any local changes you have made, you can run the following command: ```bash go run cmd/grant/main.go ``` ### Testing You can run the tests for the project by running the following command: ```bash make test ``` ### Linting You can run the linter for the project by running the following command: ```bash make static-analysis ``` ### Making a PR Just fork the repository, make your changes on a branch, and submit a PR. We will review your changes and merge them if they are good to go. When making a PR, please make sure to include a description of the changes you have made and the reasoning behind them. If you are adding a new feature, please include tests for the new feature. If you are fixing a bug, please include a test that reproduces the bug and ensure that the test passes after your changes.07070100000018000081A4000000000000000000000001668D56C300002C5D000000000000000000000000000000000000001400000000grant-0.2.1/LICENSE Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed 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. 07070100000019000081A4000000000000000000000001668D56C30000056D000000000000000000000000000000000000001500000000grant-0.2.1/MakefileOWNER = anchore PROJECT = grant TOOL_DIR = .tool BINNY = $(TOOL_DIR)/binny TASK = $(TOOL_DIR)/task .DEFAULT_GOAL := default ## Bootstrapping targets ################################# # note: we need to assume that binny and task have not already been installed $(BINNY): @mkdir -p $(TOOL_DIR) @curl -sSfL https://raw.githubusercontent.com/$(OWNER)/binny/main/install.sh | sh -s -- -b $(TOOL_DIR) # note: we need to assume that binny and task have not already been installed .PHONY: task $(TASK) task: $(BINNY) @$(BINNY) install task -q .PHONY: ci-bootstrap-go ci-bootstrap-go: go mod download .PHONY: ci-bootstrap-tools ci-bootstrap-tools: $(BINNY) $(BINNY) install -vvv # this is a bootstrapping catch-all, where if the target doesn't exist, we'll ensure the tools are installed and then try again %: make $(TASK) $(TASK) $@ ## Shim targets ################################# .PHONY: default default: $(TASK) @# run the default task in the taskfile @$(TASK) # for those of us that can't seem to kick the habit of typing `make ...` lets wrap the superior `task` tool TASKS := $(shell bash -c "test -f $(TASK) && $(TASK) -l | grep '^\* ' | cut -d' ' -f2 | tr -d ':' | tr '\n' ' '" ) $(shell bash -c "test -f $(TASK) && $(TASK) -l | grep 'aliases:' | cut -d ':' -f 3 | tr '\n' ' ' | tr -d ','") .PHONY: $(TASKS) $(TASKS): $(TASK) @$(TASK) $@ help: $(TASK) @$(TASK) -l 0707010000001A000081A4000000000000000000000001668D56C300000D7D000000000000000000000000000000000000001600000000grant-0.2.1/README.md# Grant View licenses for container images, SBOM documents, filesystems, and apply rules that help you build a license compliance report. ![demo](https://github.com/anchore/grant/assets/32073428/981be7c0-582f-4966-a1e9-31e770aba9eb) ### Supply an image ```bash $ grant check redis:latest ``` #### Supply an SBOM document ```bash $ grant check alpine.spdx.json ``` ### Supply multiple sources including stdin and a mix of image and sbom ```bash $ syft -o spdx-json alpine:latest | grant check node:latest ``` ## Installation ```bash curl -sSfL https://raw.githubusercontent.com/anchore/grant/main/install.sh | sh -s -- -b /usr/local/bin ``` ... or, you can specify a release version and destination directory for the installation: ``` curl -sSfL https://raw.githubusercontent.com/anchore/grant/main/install.sh | sh -s -- -b <DESTINATION_DIR> <RELEASE_VERSION> ``` ## Usage Grant can be used with any container image, sbom document, or directory to scan for licenses and check those classifierResults against a set of rules provided by the user. Rules take the form of a pattern to match the license against, a name to identify the rule, a mode to either allow, deny, or ignore the license, a reason for the rule, and a list of packages that are exclusions to the rule. ``` pattern: "*gpl*" name: "deny-gpl" mode: "deny" reason: "GPL licenses are not allowed" exclusions: - "alpine-base-layout" # We don't link against this package so we don't care about its license ``` Matching Rules: - Denying licenses take precedence over allowing licenses - License patterns are matched on a case-insensitive basis. - If a license is has rules for both modes it is denied Supplied patterns follow a standard globbing syntax: ``` pattern: { term } term: `*` matches any sequence of non-separator characters `**` matches any sequence of characters `?` matches any single non-separator character `[` [ `!` ] { character-range } `]` character class (must be non-empty) `{` pattern-list `}` pattern alternatives c matches character c (c != `*`, `**`, `?`, `\`, `[`, `{`, `}`) `\` c matches character c character-range: c matches character c (c != `\\`, `-`, `]`) `\` c matches character c lo `-` hi matches character c for lo <= c <= hi pattern-list: pattern { `,` pattern } comma-separated (without spaces) patterns ``` By default grant is configured to deny all licenses out of the box. Grant can be used to deny specific licenses while allowing all others. It can also be used to allow specific licenses, denying all others. ## Output #### Table ![table-output](https://github.com/anchore/grant/assets/32073428/59a516de-3acd-4f4a-8861-4e90eae09866) #### JSON: TODO ![json-output](https://github.com/anchore/grant/assets/32073428/c2d89645-e323-4f99-a179-77e5a750ee6a) ## Configuration ```yaml #.grant.yaml config: ".grant.yaml" format: table # table, json show-packages: false # show the packages which contain the licenses --show-packages non-spdx: false # list only licenses that could not be matched to an SPDX identifier --non-spdx osi-approved: false # highlight licenses that are not OSI approved --osi-approved rules: - pattern: "*gpl*" name: "deny-gpl" mode: "deny" reason: "GPL licenses are not allowed per xxx-xx company policy" exclusions: - "alpine-base-layout" # We don't link against this package so we don't care about its license ``` 0707010000001B000081A4000000000000000000000001668D56C30000000C000000000000000000000000000000000000001700000000grant-0.2.1/RELEASE.md## Releasing0707010000001C000081A4000000000000000000000001668D56C30000020F000000000000000000000000000000000000001800000000grant-0.2.1/SECURITY.md# Security Policy ## Supported Versions Currently Grant is pre v1.0.0. Any security fixes reported by github or other scanning tools that are merged will result in a patch version of the program being released to mitigate the vulnerability. Users are encouraged to always be updating to the latest version to consume these rolling fixes. | Version | Supported | | ------- | ------------------ | | 0.x.x | :white_check_mark: | ## Reporting a Vulnerability [Anchore Security Team](mailto:security@anchore.com) 0707010000001D000081A4000000000000000000000001668D56C3000013B3000000000000000000000000000000000000001A00000000grant-0.2.1/Taskfile.yamlversion: "3" vars: TOOL_DIR: .tool OWNER: anchore PROJECT: grant TMP_DIR: .tmp SNAPSHOT_DIR: snapshot CHANGELOG: CHANGELOG.md NEXT_VERSION: VERSION tasks: default: # desc: Run all validation tasks aliases: - pr-validations - validations cmds: - task: static-analysis - task: test - task: build static-analysis: desc: Run all static analysis tasks cmds: - task: check-go-mod-tidy - task: lint test: desc: Run all levels of test cmds: - task: unit ## Bootstrap tasks ################################# binny: internal: true desc: Get the binny tool generates: - "{{ .TOOL_DIR }}/binny" status: - "test -f {{ .TOOL_DIR }}/binny" # we just need a release of binny, doesn't matter which one (binny will update itself, this is just a bootstrap step) cmd: "curl -sSfL https://raw.githubusercontent.com/{{ .OWNER }}/binny/main/install.sh | sh -s -- -b {{ .TOOL_DIR }}" silent: true tools: desc: Install all tools needed for CI and local development deps: [binny] generates: - "{{ .TOOL_DIR }}/binny" - "{{ .TOOL_DIR }}/grant" - "{{ .TOOL_DIR }}/task" - "{{ .TOOL_DIR }}/gosimports" - "{{ .TOOL_DIR }}/golangci-lint" - "{{ .TOOL_DIR }}/chronicle" - "{{ .TOOL_DIR }}/glow" - "{{ .TOOL_DIR }}/goreleaser" - "{{ .TOOL_DIR }}/bouncer" status: - "{{ .TOOL_DIR }}/binny check -v" cmd: "{{ .TOOL_DIR }}/binny install -v" silent: true ## Static analysis tasks ################################# format: desc: Auto-format all source code deps: [tools] cmds: - gofmt -w -s . - "{{ .TOOL_DIR }}/gosimports -local github.com/anchore -w ." - go mod tidy lint-fix: desc: Auto-format all source code + run golangci lint fixers deps: [tools] cmds: - task: format - "{{ .TOOL_DIR }}/golangci-lint run --tests=false --fix" lint: desc: Run gofmt + golangci lint checks vars: BAD_FMT_FILES: sh: gofmt -l -s . BAD_FILE_NAMES: sh: "find . | grep -e ':' || true" deps: [tools] cmds: # ensure there are no go fmt differences - cmd: 'test -z "{{ .BAD_FMT_FILES }}" || (echo "files with gofmt issues: [{{ .BAD_FMT_FILES }}]"; exit 1)' silent: true # ensure there are no files with ":" in it (a known back case in the go ecosystem) - cmd: 'test -z "{{ .BAD_FILE_NAMES }}" || (echo "files with bad names: [{{ .BAD_FILE_NAMES }}]"; exit 1)' silent: true # run linting - "{{ .TOOL_DIR }}/golangci-lint run --tests=false" check-go-mod-tidy: # desc: Ensure go.mod and go.sum are up to date cmds: - .github/scripts/go-mod-tidy-check.sh && echo "go.mod and go.sum are tidy!" ## Testing tasks ################################# unit: desc: Run all unit tests vars: TEST_PKGS: sh: "go list ./... | grep -v {{ .OWNER }}/{{ .PROJECT }}/test | tr '\n' ' '" # unit test coverage threshold (in % coverage) COVERAGE_THRESHOLD: 8 cmds: - cmd: "mkdir -p {{ .TMP_DIR }}" silent: true - "go test -coverprofile {{ .TMP_DIR }}/unit-coverage-details.txt {{ .TEST_PKGS }}" - cmd: ".github/scripts/coverage.py {{ .COVERAGE_THRESHOLD }} {{ .TMP_DIR }}/unit-coverage-details.txt" silent: true ## Build-related targets ################################# changelog: desc: Generate a changelog deps: [tools] generates: - "{{ .CHANGELOG }}" - "{{ .NEXT_VERSION }}" cmds: - "{{ .TOOL_DIR }}/chronicle -vv -n --version-file {{ .NEXT_VERSION }} > {{ .CHANGELOG }}" - "{{ .TOOL_DIR }}/glow {{ .CHANGELOG }}" snapshot: desc: Create a snapshot release aliases: - build deps: [tools] cmds: - cmd: "mkdir -p {{ .TMP_DIR }}" silent: true - cmd: | cat .goreleaser.yaml > {{ .TMP_DIR }}/goreleaser.yaml echo "dist: {{ .SNAPSHOT_DIR }}" >> {{ .TMP_DIR }}/goreleaser.yaml - cmd: "{{ .TOOL_DIR }}/goreleaser release --clean --skip=publish --skip=sign --snapshot --config {{ .TMP_DIR }}/goreleaser.yaml" ## Release targets ################################# release: desc: Create a release interactive: true deps: [tools] cmds: - cmd: .github/scripts/trigger-release.sh silent: true ## CI-only targets ################################# ci-check: # desc: "[CI only] Are you in CI?" cmds: - cmd: .github/scripts/ci-check.sh silent: true ci-validate: # desc: "[CI only] Run all CI validations" cmds: - task: ci-check - task: default ci-release: # desc: "[CI only] Create a release" deps: [tools] cmds: - task: ci-check - "{{ .TOOL_DIR }}/chronicle -vvv > CHANGELOG.md" - cmd: "cat CHANGELOG.md" silent: true - "{{ .TOOL_DIR }}/goreleaser release --clean --release-notes CHANGELOG.md" 0707010000001E000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001000000000grant-0.2.1/cmd0707010000001F000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001600000000grant-0.2.1/cmd/grant07070100000020000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001A00000000grant-0.2.1/cmd/grant/cli07070100000021000081A4000000000000000000000001668D56C3000007F0000000000000000000000000000000000000002100000000grant-0.2.1/cmd/grant/cli/cli.gopackage cli import ( "os" "github.com/anchore/clio" "github.com/anchore/go-logger" "github.com/anchore/grant/cmd/grant/cli/command" "github.com/anchore/grant/cmd/grant/cli/internal/ui" handler "github.com/anchore/grant/cmd/grant/cli/tui" "github.com/anchore/grant/internal/bus" "github.com/anchore/grant/internal/log" "github.com/anchore/grant/internal/redact" ) // New constructs the `grant` command. It is also responsible for organizing flag // usage and injecting the application config for each command. // `RunE` is the earliest that the complete application configuration can be loaded. func New(id clio.Identification) clio.Application { clioCfg := clio.NewSetupConfig(id). WithGlobalConfigFlag(). // add persistent -c <path> for reading an application config from WithGlobalLoggingFlags(). // add persistent -v and -q flags tied to the logging config WithConfigInRootHelp(). // --help on the root command renders the full application config in the help text WithUIConstructor( // select a UI based on the logging configuration and state of stdin (if stdin is a tty) func(cfg clio.Config) ([]clio.UI, error) { noUI := ui.None(cfg.Log.Quiet) if !cfg.Log.AllowUI(os.Stdin) || cfg.Log.Quiet { return []clio.UI{noUI}, nil } return []clio.UI{ ui.New(cfg.Log.Quiet, handler.New(handler.DefaultHandlerConfig()), ), noUI, }, nil }, ). WithLoggingConfig(clio.LoggingConfig{ Level: logger.ErrorLevel, }). WithInitializers( func(state *clio.State) error { // clio is setting up and providing the redact store, and logger to the application. Once loaded, // we can hoist them into the internal packages for global use. bus.Set(state.Bus) redact.Set(state.RedactStore) log.Set(state.Logger) return nil }, ) app := clio.New(*clioCfg) root := command.Root(app) root.AddCommand( command.Check(app), command.List(app), clio.VersionCommand(id), ) // root.AddCommand(command.Inspect(app)) return app } 07070100000022000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000002200000000grant-0.2.1/cmd/grant/cli/command07070100000023000081A4000000000000000000000001668D56C300000F73000000000000000000000000000000000000002B00000000grant-0.2.1/cmd/grant/cli/command/check.gopackage command import ( "fmt" "slices" "strings" "github.com/gobwas/glob" "github.com/pkg/errors" "github.com/spf13/cobra" "github.com/anchore/clio" "github.com/anchore/grant/cmd/grant/cli/internal" "github.com/anchore/grant/cmd/grant/cli/internal/check" "github.com/anchore/grant/cmd/grant/cli/option" "github.com/anchore/grant/event" "github.com/anchore/grant/grant" "github.com/anchore/grant/internal/bus" "github.com/anchore/grant/internal/input" ) var ErrPolicyFailure = errors.New("check failed") type CheckConfig struct { Config string `json:"config" yaml:"config" mapstructure:"config"` option.Check `json:"" yaml:",inline" mapstructure:",squash"` } func (cfg *CheckConfig) RulesFromConfig() (rules grant.Rules, err error) { rules = make(grant.Rules, 0) for _, rule := range cfg.Rules { pattern := strings.ToLower(rule.Pattern) // all patterns are case insensitive patternGlob, err := glob.Compile(pattern) if err != nil { return rules, err } exceptions := make([]glob.Glob, 0) for _, exception := range rule.Exceptions { exception = strings.ToLower(exception) exceptionGlob, err := glob.Compile(exception) if err != nil { return rules, err } exceptions = append(exceptions, exceptionGlob) } rules = append(rules, grant.Rule{ Name: rule.Name, Glob: patternGlob, OriginalPattern: rule.Pattern, Exceptions: exceptions, OriginalExceptions: rule.Exceptions, Mode: grant.RuleMode(rule.Mode), Severity: grant.RuleSeverity(rule.Severity), Reason: rule.Reason, }) } return rules, nil } func Check(app clio.Application) *cobra.Command { cfg := &CheckConfig{ Check: option.DefaultCheck(), } // userInputs are the oci images, sboms, or directories/files to check var userInputs []string return app.SetupCommand(&cobra.Command{ Use: "check", Short: "Verify licenses in the SBOM conform to the configured policy", Args: cobra.ArbitraryArgs, PreRunE: func(cmd *cobra.Command, args []string) error { userInputs = args return nil }, RunE: func(cmd *cobra.Command, args []string) error { return runCheck(cfg, userInputs) }, }, cfg) } func runCheck(cfg *CheckConfig, userInput []string) (errs error) { // check if user provided source by stdin // note: cat sbom.json | grant check spdx.json - is supported // it will generate results for both stdin and spdx.json isStdin, _ := input.IsStdinPipeOrRedirect() if isStdin && !slices.Contains(userInput, "-") { userInput = append(userInput, "-") } rules, err := cfg.RulesFromConfig() if err != nil { return errors.Wrap(err, fmt.Sprintf("could not check licenses; could not build rules from config: %s", cfg.Config)) } monitor := bus.PublishTask( event.Title{ Default: "Check licenses", WhileRunning: "Checking licenses", OnSuccess: "Checked licenses", }, "", len(userInput), ) defer func() { if errs != nil { monitor.SetError(errs) } else { monitor.AtomicStage.Set(strings.Join(userInput, ", ")) monitor.SetCompleted() } }() policy, err := grant.NewPolicy(cfg.NonSPDX, rules...) if err != nil { return errors.Wrap(err, fmt.Sprintf("could not check licenses; could not build policy from config: %s", cfg.Config)) } reportConfig := check.ReportConfig{ Policy: policy, Options: internal.ReportOptions{ Format: internal.Format(cfg.Output), ShowPackages: cfg.ShowPackages, CheckNonSPDX: cfg.NonSPDX, OsiApproved: cfg.OsiApproved, }, Monitor: monitor, } rep, err := check.NewReport(reportConfig, userInput...) if err != nil { return errors.Wrap(err, fmt.Sprintf("unable to create report for inputs %s", userInput)) } err = rep.Render() if err != nil { return errors.Wrap(err, fmt.Sprintf("unable to render report for inputs %s", userInput)) } if rep.HasFailures() { return ErrPolicyFailure } return nil } 07070100000024000081A4000000000000000000000001668D56C300000010000000000000000000000000000000000000002D00000000grant-0.2.1/cmd/grant/cli/command/inspect.gopackage command 07070100000025000081A4000000000000000000000001668D56C300000872000000000000000000000000000000000000002A00000000grant-0.2.1/cmd/grant/cli/command/list.gopackage command import ( "slices" "strings" "github.com/spf13/cobra" "github.com/anchore/clio" "github.com/anchore/grant/cmd/grant/cli/internal" "github.com/anchore/grant/cmd/grant/cli/internal/list" "github.com/anchore/grant/cmd/grant/cli/option" "github.com/anchore/grant/event" "github.com/anchore/grant/internal/bus" "github.com/anchore/grant/internal/input" ) type ListConfig struct { Config string `json:"config" yaml:"config" mapstructure:"config"` option.List `json:"" yaml:",inline" mapstructure:",squash"` } func List(app clio.Application) *cobra.Command { cfg := &ListConfig{ List: option.DefaultList(), } // userInputs are the oci images, sboms, or directories/files to check var userInputs []string return app.SetupCommand(&cobra.Command{ Use: "list", Short: "List the licenses detected in the given OCI image, sbom, or directory/file", Args: cobra.ArbitraryArgs, PreRunE: func(cmd *cobra.Command, args []string) error { userInputs = args return nil }, RunE: func(cmd *cobra.Command, args []string) error { return runList(cfg, userInputs) }, }, cfg) } func runList(cfg *ListConfig, userInput []string) (errs error) { // check if user provided source by stdin // note: cat sbom.json | grant check spdx.json - is supported // it will generate results for both stdin and spdx.json isStdin, _ := input.IsStdinPipeOrRedirect() if isStdin && !slices.Contains(userInput, "-") { userInput = append(userInput, "-") } monitor := bus.PublishTask( event.Title{ Default: "List licenses", WhileRunning: "Looking up licenses", OnSuccess: "Found licenses", }, "", len(userInput), ) defer func() { if errs != nil { monitor.SetError(errs) } else { monitor.AtomicStage.Set(strings.Join(userInput, ", ")) monitor.SetCompleted() } }() reportConfig := list.ReportConfig{ Options: internal.ReportOptions{ Format: internal.Format(cfg.Output), ShowPackages: cfg.ShowPackages, CheckNonSPDX: cfg.NonSPDX, }, Monitor: monitor, } rep, err := list.NewReport(reportConfig, userInput...) if err != nil { return err } return rep.Render() } 07070100000026000081A4000000000000000000000001668D56C3000000B5000000000000000000000000000000000000002A00000000grant-0.2.1/cmd/grant/cli/command/root.gopackage command import ( "github.com/spf13/cobra" "github.com/anchore/clio" ) func Root(app clio.Application) *cobra.Command { return app.SetupRootCommand(&cobra.Command{}) } 07070100000027000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000002300000000grant-0.2.1/cmd/grant/cli/internal07070100000028000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000002900000000grant-0.2.1/cmd/grant/cli/internal/check07070100000029000081A4000000000000000000000001668D56C300001D24000000000000000000000000000000000000003300000000grant-0.2.1/cmd/grant/cli/internal/check/report.gopackage check import ( "encoding/json" "errors" "fmt" "strings" "time" "github.com/gookit/color" list "github.com/jedib0t/go-pretty/v6/list" "github.com/anchore/grant/cmd/grant/cli/internal" "github.com/anchore/grant/event" "github.com/anchore/grant/grant" "github.com/anchore/grant/grant/evalutation" "github.com/anchore/grant/internal/bus" ) // Report presents the results of a grant check command `grant alpine:latest ./foo` // The above command will have two results. // The first result is easy. Generate an SBOM for alpine:latest and run the policy against it. // The second result is a little more complicated. Visit each leaf of ./foo and check for licenses, sbom, or archives. // Results are composed of a case its evaluations. The case is the total of SBOM/Licenses generated from the user request. // The evaluations are the individual assessments of the policy against the packages/licenses in the case. type Report struct { ReportID string Results evalutation.Results Config ReportConfig Timestamp string Monitor *event.ManualStagedProgress errors []error } type ReportConfig struct { Policy grant.Policy Options internal.ReportOptions Monitor *event.ManualStagedProgress } // NewReport will generate a new report for the given format for the check command // The supplied policy is applied to all user requests. // If no policy is provided, the default policy will be used // If no requests are provided, an empty report will be generated // If a request is provided, but the sbom cannot be generated, the source will be ignored and an error will be returned // Where do we render packages that had no licenses? func NewReport(rc ReportConfig, userRequests ...string) (*Report, error) { if rc.Policy.IsEmpty() { rc.Policy = grant.DefaultPolicy() } rc.Options.Format = internal.ValidateFormat(rc.Options.Format) cases := grant.NewCases(userRequests...) ec := evalutation.EvaluationConfig{ Policy: rc.Policy, CheckNonSPDX: rc.Options.CheckNonSPDX, OsiApproved: rc.Options.OsiApproved, } results := evalutation.NewResults(ec, cases...) return &Report{ Results: results, Config: rc, Timestamp: time.Now().Format(time.RFC3339), Monitor: rc.Monitor, }, nil } // Render will call Render on each result in the report and return the report func (r *Report) Render() error { switch r.Config.Options.Format { case internal.Table: return r.renderCheckTree() case internal.JSON: return r.renderJSON() default: r.errors = append(r.errors, fmt.Errorf("invalid format: %s; valid formats are: %s", r.Config.Options.Format, internal.ValidFormats)) return errors.Join(r.errors...) } } func (r *Report) HasFailures() bool { return r.Results.IsFailed() } type Response struct { ReportID string `json:"report_id" yaml:"report_id"` Timestamp string `json:"timestamp" yaml:"timestamp"` Inputs []string `json:"inputs" yaml:"inputs"` Results []Evaluation `json:"results" yaml:"results"` } type Evaluation struct { Input string `json:"input" yaml:"input"` License internal.License `json:"license" yaml:"license"` Package internal.Package `json:"package" yaml:"package"` Passed bool `json:"passed" yaml:"passed"` Reasons []string `json:"reasons" yaml:"reasons"` } func NewEvaluation(input string, le evalutation.LicenseEvaluation) Evaluation { reasons := make([]string, 0) for _, r := range le.Reason { if r.RuleName == "" { reasons = append(reasons, r.Detail) continue } details := fmt.Sprintf("%s: %s", r.RuleName, r.Detail) reasons = append(reasons, details) } license := internal.NewLicense(le.License) var pkg internal.Package if le.Package != nil { pkg = internal.NewPackage(le.Package) } re := Evaluation{ Input: input, License: license, Package: pkg, Passed: le.Pass, Reasons: reasons, } return re } func (r *Report) renderJSON() error { evaluations := make([]Evaluation, 0) for _, res := range r.Results { for _, e := range res.Evaluations { re := NewEvaluation(res.Case.UserInput, e) evaluations = append(evaluations, re) } } report := Response{ ReportID: r.ReportID, Timestamp: r.Timestamp, Inputs: r.Results.UserInputs(), Results: evaluations, } jsonData, err := json.Marshal(report) if err != nil { return err } bus.Report(string(jsonData)) return nil } func (r *Report) renderCheckTree() error { var uiLists []list.Writer for _, res := range r.Results { r.Monitor.Increment() r.Monitor.AtomicStage.Set(res.Case.UserInput) resulList := newList() uiLists = append(uiLists, resulList) resulList.AppendItem(color.Primary.Sprintf("%s", res.Case.UserInput)) for _, rule := range r.Config.Policy.Rules { failedEvaluations := r.Results.GetFailedEvaluations(res.Case.UserInput, rule) if len(failedEvaluations) == 0 { resulList.Indent() resulList.AppendItem(color.Success.Sprintf("No License Violations Found for Rule %s", rule.Name)) resulList.UnIndent() continue } renderEvaluations(rule, r.Config.Options.ShowPackages, resulList, failedEvaluations) } if r.Config.Options.OsiApproved { osiRule := grant.Rule{ Name: evalutation.RuleNameNotOSIApproved, } failedEvaluations := r.Results.GetFailedEvaluations(res.Case.UserInput, osiRule) if len(failedEvaluations) == 0 { resulList.Indent() resulList.AppendItem(color.Success.Sprintf("%s", "No OSI Violations Found")) resulList.UnIndent() } else { renderEvaluations(osiRule, r.Config.Options.ShowPackages, resulList, failedEvaluations) } } if r.Config.Options.ShowPackages { renderOrphanPackages(resulList, res, false) // keep primary coloring for tree } } r.Monitor.AtomicStage.Set(strings.Join(r.Results.UserInputs(), ", ")) // segment the results into lists by user input // lists can optionally show the packages that were evaluated for _, l := range uiLists { bus.Report(l.Render()) } return nil } func renderOrphanPackages(l list.Writer, res evalutation.Result, invert bool) { title := color.Secondary newItem := color.Light if invert { title = color.Light newItem = color.Secondary } // TODO: there is a bug here where binary cataloger show even when dupe os overlap orphans := res.Evaluations.EmptyPackages() if len(orphans) == 0 { return } l.Indent() l.AppendItem(title.Sprintf("packages found with no licenses")) l.Indent() for _, pkg := range orphans { l.AppendItem(newItem.Sprintf("%s", pkg)) } l.UnIndent() l.UnIndent() } func renderEvaluations(rule grant.Rule, showPackages bool, l list.Writer, e evalutation.LicenseEvaluations) { l.Indent() l.AppendItem(color.Secondary.Sprintf("license matches for rule: %s; matched with pattern %s", rule.Name, rule.OriginalPattern)) licenseTracker := make(map[string]struct{}) for _, eval := range e { var license string if eval.License.SPDXExpression != "" { license = eval.License.SPDXExpression } else { license = eval.License.Name } if _, ok := licenseTracker[license]; !ok { licenseTracker[license] = struct{}{} l.Indent() l.AppendItem(color.Danger.Sprintf("%s", license)) if showPackages { packages := e.Packages(license) l.Indent() for _, pkg := range packages { l.AppendItem(color.Light.Sprintf("%s", pkg)) } l.UnIndent() } l.UnIndent() } } l.UnIndent() } func newList() list.Writer { l := list.NewWriter() return l } 0707010000002A000081A4000000000000000000000001668D56C3000000F1000000000000000000000000000000000000002D00000000grant-0.2.1/cmd/grant/cli/internal/config.gopackage internal // TODO: osi approved filter // TODO: non spdx filter // TODO: packages no licenses // TODO: licenses no packages type ReportOptions struct { Format Format ShowPackages bool CheckNonSPDX bool OsiApproved bool } 0707010000002B000081A4000000000000000000000001668D56C3000007F4000000000000000000000000000000000000002D00000000grant-0.2.1/cmd/grant/cli/internal/format.gopackage internal import ( "github.com/google/uuid" "github.com/anchore/grant/grant" ) type Format string const ( JSON Format = "json" Table Format = "table" CSV Format = "csv" ) var ValidFormats = []Format{JSON, Table, CSV} // ValidateFormat returns a valid format or the default format if the given format is invalid func ValidateFormat(f Format) Format { switch f { case "json": return JSON case "table": return Table case "csv": return CSV default: return Table } } func NewReportID() string { return uuid.Must(uuid.NewRandom()).String() } type License struct { SPDXExpression string `json:"spdx_expression" yaml:"spdx_expression"` Name string `json:"name" yaml:"name"` Locations []string `json:"locations" yaml:"locations"` Reference string `json:"reference" yaml:"reference"` IsDeprecated bool `json:"is_deprecated" yaml:"is_deprecated"` LicenseID string `json:"license_id" yaml:"license_id"` SeeAlso []string `json:"see_also" yaml:"see_also"` IsOsiApproved bool `json:"is_osi_approved" yaml:"is_osi_approved"` } func NewLicense(l grant.License) License { return License{ SPDXExpression: l.SPDXExpression, Name: l.Name, Locations: l.Locations, Reference: l.Reference, IsDeprecated: l.IsDeprecatedLicenseID, LicenseID: l.LicenseID, SeeAlso: l.SeeAlso, IsOsiApproved: l.IsOsiApproved, } } type Package struct { Name string `json:"name" yaml:"name"` Version string `json:"version" yaml:"version"` Type string `json:"type" yaml:"type"` Locations []string `json:"locations" yaml:"locations"` } func NewPackage(p *grant.Package) Package { if p == nil { return Package{} } return Package{ Name: p.Name, Version: p.Version, Locations: p.Locations, Type: p.Type, } } func NewPackages(pkgs ...*grant.Package) []Package { packages := make([]Package, 0) for _, p := range pkgs { packages = append(packages, NewPackage(p)) } return packages } 0707010000002C000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000002800000000grant-0.2.1/cmd/grant/cli/internal/list0707010000002D000081A4000000000000000000000001668D56C300001338000000000000000000000000000000000000003200000000grant-0.2.1/cmd/grant/cli/internal/list/report.gopackage list import ( "encoding/csv" "encoding/json" "errors" "fmt" "os" "slices" "time" "github.com/gookit/color" "github.com/jedib0t/go-pretty/v6/list" "github.com/anchore/grant/cmd/grant/cli/internal" "github.com/anchore/grant/event" "github.com/anchore/grant/grant" "github.com/anchore/grant/internal/bus" ) type Report struct { ReportID string Cases []grant.Case Config ReportConfig Timestamp string Monitor *event.ManualStagedProgress errors []error } type ReportConfig struct { Options internal.ReportOptions Monitor *event.ManualStagedProgress } // NewReport will generate a new report for the given format for the list command. // The supplied policy is applied to all user requests. // If no policy is provided, the default policy will be used // If no requests are provided, an empty report will be generated // If a request is provided, but the sbom cannot be generated, the source will be ignored and an error will be returned // Where do we render packages that had no licenses? func NewReport(rc ReportConfig, userRequests ...string) (*Report, error) { rc.Options.Format = internal.ValidateFormat(rc.Options.Format) cases := grant.NewCases(userRequests...) return &Report{ ReportID: internal.NewReportID(), Cases: cases, Config: rc, Timestamp: time.Now().Format(time.RFC3339), Monitor: rc.Monitor, }, nil } func (r *Report) Render() error { switch r.Config.Options.Format { case internal.Table: return r.renderList() case internal.JSON: return r.renderJSON() case internal.CSV: return r.renderCSV() default: r.errors = append(r.errors, fmt.Errorf("invalid format: %s; valid formats are: %s", r.Config.Options.Format, internal.ValidFormats)) return errors.Join(r.errors...) } } type Response struct { ReportID string `json:"report_id" yaml:"report_id"` Timestamp string `json:"timestamp" yaml:"timestamp"` Inputs []string `json:"inputs" yaml:"inputs"` Results []Result `json:"results" yaml:"results"` } type Result struct { Input string `json:"input" yaml:"input"` License internal.License `json:"license" yaml:"license"` Packages []internal.Package `json:"packages" yaml:"packages"` } func NewResult(input string, gl grant.License, gp ...*grant.Package) Result { rl := internal.NewLicense(gl) pkgs := internal.NewPackages(gp...) return Result{ Input: input, License: rl, Packages: pkgs, } } func (r *Report) renderCSV() error { response := getResponse(r) headers := []string{"component", "component_version", "license", "website", "type"} data := [][]string{ headers, } for _, rslt := range response.Results { for _, pkg := range rslt.Packages { data = append(data, []string{ pkg.Name, pkg.Version, rslt.License.Name, rslt.License.Reference, pkg.Type, }) } } writer := csv.NewWriter(os.Stdout) defer writer.Flush() for _, record := range data { if err := writer.Write(record); err != nil { return err } } return writer.Error() } func getResponse(r *Report) Response { resp := Response{ ReportID: r.ReportID, Timestamp: r.Timestamp, Inputs: make([]string, 0), Results: make([]Result, 0), } for _, c := range r.Cases { resp.Inputs = append(resp.Inputs, c.UserInput) licensePackages, licenses, _ := c.GetLicenses() for key, l := range licenses { packages := licensePackages[key] result := NewResult(c.UserInput, l, packages...) resp.Results = append(resp.Results, result) } } return resp } func (r *Report) renderJSON() error { resp := getResponse(r) jsonData, err := json.Marshal(resp) if err != nil { return err } bus.Report(string(jsonData)) return nil } func (r *Report) renderList() error { var uiLists []list.Writer for _, c := range r.Cases { r.Monitor.Increment() r.Monitor.AtomicStage.Set(c.UserInput) unsortedLicenses := make([]string, 0) resultList := list.NewWriter() uiLists = append(uiLists, resultList) resultList.AppendItem(color.Primary.Sprintf("%s", c.UserInput)) packages, licenses, _ := c.GetLicenses() for _, license := range licenses { // Filter out SPDX licenses if requested to just show non-SPDX licenses if r.Config.Options.CheckNonSPDX && license.IsSPDX() { continue } if license.IsSPDX() { unsortedLicenses = append(unsortedLicenses, license.SPDXExpression) continue } unsortedLicenses = append(unsortedLicenses, license.Name) } // sort for list output slices.Sort(unsortedLicenses) resultList.Indent() for _, license := range unsortedLicenses { resultList.AppendItem(license) if r.Config.Options.ShowPackages { pkgs := packages[license] for _, pkg := range pkgs { resultList.Indent() resultList.AppendItem(pkg.Name) resultList.UnIndent() } } } resultList.UnIndent() } for _, l := range uiLists { bus.Report(l.Render()) } return nil } 0707010000002E000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000002600000000grant-0.2.1/cmd/grant/cli/internal/ui0707010000002F000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000003400000000grant-0.2.1/cmd/grant/cli/internal/ui/__snapshots__07070100000030000081ED000000000000000000000001668D56C300000249000000000000000000000000000000000000005300000000grant-0.2.1/cmd/grant/cli/internal/ui/__snapshots__/post_ui_event_writer_test.snap [Test_postUIEventWriter_write/no_events/stdout - 1] --- [Test_postUIEventWriter_write/no_events/stderr - 1] --- [Test_postUIEventWriter_write/all_events/stdout - 1] <my -- - - report 1!!> <report 2> --- [Test_postUIEventWriter_write/all_events/stderr - 1] <my notification 1!! ...still notifying> <notification 2> <notification 3> --- [Test_postUIEventWriter_write/quiet_only_shows_report/stdout - 1] <report 1> --- [Test_postUIEventWriter_write/quiet_only_shows_report/stderr - 1] --- 07070100000031000081A4000000000000000000000001668D56C300000357000000000000000000000000000000000000002F00000000grant-0.2.1/cmd/grant/cli/internal/ui/no_ui.gopackage ui import ( "os" "github.com/wagoodman/go-partybus" "github.com/anchore/clio" "github.com/anchore/grant/event" ) var _ clio.UI = (*NoUI)(nil) type NoUI struct { finalizeEvents []partybus.Event subscription partybus.Unsubscribable quiet bool } func None(quiet bool) *NoUI { return &NoUI{ quiet: quiet, } } func (n *NoUI) Setup(subscription partybus.Unsubscribable) error { n.subscription = subscription return nil } func (n *NoUI) Handle(e partybus.Event) error { switch e.Type { case event.CLIReport, event.CLINotification: // keep these for when the UI is terminated to show to the screen (or perform other events) n.finalizeEvents = append(n.finalizeEvents, e) } return nil } func (n NoUI) Teardown(_ bool) error { return newPostUIEventWriter(os.Stdout, os.Stderr).write(n.quiet, n.finalizeEvents...) } 07070100000032000081A4000000000000000000000001668D56C3000009B8000000000000000000000000000000000000003E00000000grant-0.2.1/cmd/grant/cli/internal/ui/post_ui_event_writer.gopackage ui import ( "fmt" "io" "strings" "github.com/charmbracelet/lipgloss" "github.com/hashicorp/go-multierror" "github.com/wagoodman/go-partybus" "github.com/anchore/grant/event" "github.com/anchore/grant/internal/log" ) type postUIEventWriter struct { handles []postUIHandle } type postUIHandle struct { respectQuiet bool event partybus.EventType writer io.Writer dispatch eventWriter } type eventWriter func(io.Writer, ...partybus.Event) error func newPostUIEventWriter(stdout, stderr io.Writer) *postUIEventWriter { return &postUIEventWriter{ handles: []postUIHandle{ { event: event.CLIReport, respectQuiet: false, writer: stdout, dispatch: writeReports, }, { event: event.CLINotification, respectQuiet: true, writer: stderr, dispatch: writeNotifications, }, }, } } func (w postUIEventWriter) write(quiet bool, events ...partybus.Event) error { var errs error for _, h := range w.handles { if quiet && h.respectQuiet { continue } for _, e := range events { if e.Type != h.event { continue } if err := h.dispatch(h.writer, e); err != nil { errs = multierror.Append(errs, err) } } } return errs } func writeReports(writer io.Writer, events ...partybus.Event) error { var reports []string for _, e := range events { _, report, err := event.ParseCLIReport(e) if err != nil { log.WithFields("error", err).Warn("failed to gather final report") continue } // remove all whitespace padding from the end of the report reports = append(reports, strings.TrimRight(report, "\n ")+"\n") } // prevent the double new-line at the end of the report report := strings.Join(reports, "\n") if _, err := fmt.Fprint(writer, report); err != nil { return fmt.Errorf("failed to write final report to stdout: %w", err) } return nil } func writeNotifications(writer io.Writer, events ...partybus.Event) error { // 13 = high intensity magenta (ANSI 16 bit code) style := lipgloss.NewStyle().Foreground(lipgloss.Color("13")) for _, e := range events { _, notification, err := event.ParseCLINotification(e) if err != nil { log.WithFields("error", err).Warn("failed to parse notification") continue } if _, err := fmt.Fprintln(writer, style.Render(notification)); err != nil { // don't let this be fatal log.WithFields("error", err).Warn("failed to write final notifications") } } return nil } 07070100000033000081A4000000000000000000000001668D56C300000657000000000000000000000000000000000000004300000000grant-0.2.1/cmd/grant/cli/internal/ui/post_ui_event_writer_test.gopackage ui import ( "bytes" "testing" "github.com/gkampitakis/go-snaps/snaps" "github.com/stretchr/testify/require" "github.com/wagoodman/go-partybus" "github.com/anchore/grant/event" ) func Test_postUIEventWriter_write(t *testing.T) { tests := []struct { name string quiet bool events []partybus.Event wantErr require.ErrorAssertionFunc }{ { name: "no events", }, { name: "all events", events: []partybus.Event{ { Type: event.CLINotification, Value: "\n\n<my notification 1!!\n...still notifying>\n\n", }, { Type: event.CLINotification, Value: "<notification 2>", }, { Type: event.CLINotification, Value: "<notification 3>", }, { Type: event.CLIReport, Value: "\n\n<my --\n-\n-\nreport 1!!>\n\n", }, { Type: event.CLIReport, Value: "<report 2>", }, }, }, { name: "quiet only shows report", quiet: true, events: []partybus.Event{ { Type: event.CLINotification, Value: "<notification 1>", }, { Type: event.CLIReport, Value: "<report 1>", }, }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if tt.wantErr == nil { tt.wantErr = require.NoError } stdout := &bytes.Buffer{} stderr := &bytes.Buffer{} w := newPostUIEventWriter(stdout, stderr) tt.wantErr(t, w.write(tt.quiet, tt.events...)) t.Run("stdout", func(t *testing.T) { snaps.MatchSnapshot(t, stdout.String()) }) t.Run("stderr", func(t *testing.T) { snaps.MatchSnapshot(t, stderr.String()) }) }) } } 07070100000034000081A4000000000000000000000001668D56C30000150C000000000000000000000000000000000000002C00000000grant-0.2.1/cmd/grant/cli/internal/ui/ui.gopackage ui import ( "fmt" "os" "sync" "time" tea "github.com/charmbracelet/bubbletea" "github.com/wagoodman/go-partybus" "github.com/anchore/bubbly" "github.com/anchore/bubbly/bubbles/frame" "github.com/anchore/clio" "github.com/anchore/go-logger" "github.com/anchore/grant/event" "github.com/anchore/grant/internal/bus" "github.com/anchore/grant/internal/log" ) var _ interface { tea.Model partybus.Responder clio.UI } = (*UI)(nil) type UI struct { program *tea.Program running *sync.WaitGroup quiet bool subscription partybus.Unsubscribable finalizeEvents []partybus.Event handler *bubbly.HandlerCollection frame tea.Model } func New(quiet bool, handlers ...bubbly.EventHandler) *UI { return &UI{ handler: bubbly.NewHandlerCollection(handlers...), frame: frame.New(), running: &sync.WaitGroup{}, quiet: quiet, } } func (m *UI) Setup(subscription partybus.Unsubscribable) error { // we still want to collect log messages, however, we also the logger shouldn't write to the screen directly if logWrapper, ok := log.Get().(logger.Controller); ok { logWrapper.SetOutput(m.frame.(*frame.Frame).Footer()) } m.subscription = subscription m.program = tea.NewProgram(m, tea.WithOutput(os.Stderr), tea.WithInput(os.Stdin), tea.WithoutSignalHandler()) m.running.Add(1) go func() { defer m.running.Done() if _, err := m.program.Run(); err != nil { log.Errorf("unable to start UI: %+v", err) bus.ExitWithInterrupt() } }() return nil } func (m *UI) Handle(e partybus.Event) error { if m.program != nil { m.program.Send(e) } return nil } func (m *UI) Teardown(force bool) error { if !force { m.handler.Wait() m.program.Quit() // typically in all cases we would want to wait for the UI to finish. However there are still error cases // that are not accounted for, resulting in hangs. For now, we'll just wait for the UI to finish in the // happy path only. There will always be an indication of the problem to the user via reporting the error // string from the worker (outside of the UI after teardown). m.running.Wait() } else { _ = runWithTimeout(250*time.Millisecond, func() error { m.handler.Wait() return nil }) // it may be tempting to use Kill() however it has been found that this can cause the terminal to be left in // a bad state (where Ctrl+C and other control characters no longer works for future processes in that terminal). m.program.Quit() _ = runWithTimeout(250*time.Millisecond, func() error { m.running.Wait() return nil }) } // TODO: allow for writing out the full log output to the screen (only a partial log is shown currently) // this needs coordination to know what the last frame event is to change the state accordingly (which isn't possible now) return newPostUIEventWriter(os.Stdout, os.Stderr).write(m.quiet, m.finalizeEvents...) } // bubbletea.Model functions func (m UI) Init() tea.Cmd { return m.frame.Init() } func (m UI) RespondsTo() []partybus.EventType { return append([]partybus.EventType{ event.CLIReport, event.CLINotification, }, m.handler.RespondsTo()...) } func (m *UI) Update(msg tea.Msg) (tea.Model, tea.Cmd) { // note: we need a pointer receiver such that the same instance of UI used in Teardown is referenced (to keep finalize events) var cmds []tea.Cmd // allow for non-partybus UI updates (such as window size events). Note: these must not affect existing models, // that is the responsibility of the frame object on this UI object. The handler is a factory of models // which the frame is responsible for the lifecycle of. This update allows for injecting the initial state // of the world when creating those models. m.handler.OnMessage(msg) switch msg := msg.(type) { case tea.KeyMsg: switch msg.String() { // today we treat esc and ctrl+c the same, but in the future when the worker has a graceful way to // cancel in-flight work via a context, we can wire up esc to this path with bus.Exit() case "esc", "ctrl+c": bus.ExitWithInterrupt() return m, tea.Quit } case partybus.Event: log.WithFields("component", "ui").Tracef("event: %q", msg.Type) switch msg.Type { case event.CLIReport, event.CLINotification: // keep these for when the UI is terminated to show to the screen (or perform other events) m.finalizeEvents = append(m.finalizeEvents, msg) // why not return tea.Quit here for exit events? because there may be UI components that still need the update-render loop. // for this reason we'll let the event loop call Teardown() which will explicitly wait for these components return m, nil } handlerModels, _ := m.handler.Handle(msg) for _, newModel := range handlerModels { if newModel == nil { continue } cmds = append(cmds, newModel.Init()) m.frame.(*frame.Frame).AppendModel(newModel) } // intentionally fallthrough to update the frame model } frameModel, cmd := m.frame.Update(msg) m.frame = frameModel cmds = append(cmds, cmd) return m, tea.Batch(cmds...) } func (m UI) View() string { return m.frame.View() } func runWithTimeout(timeout time.Duration, fn func() error) (err error) { c := make(chan struct{}, 1) go func() { err = fn() c <- struct{}{} }() select { case <-c: case <-time.After(timeout): return fmt.Errorf("timed out after %v", timeout) } return err } 07070100000035000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000002100000000grant-0.2.1/cmd/grant/cli/option07070100000036000081A4000000000000000000000001668D56C3000002A1000000000000000000000000000000000000002A00000000grant-0.2.1/cmd/grant/cli/option/check.gopackage option import ( "github.com/anchore/clio" ) type Check struct { List `json:",inline" yaml:",inline" mapstructure:",squash"` Quiet bool `json:"quiet" yaml:"quiet" mapstructure:"quiet"` OsiApproved bool `json:"osi-approved" yaml:"osi-approved" mapstructure:"osi-approved"` Rules []Rule `json:"rules" yaml:"rules" mapstructure:"rules"` } func DefaultCheck() Check { return Check{ List: DefaultList(), Quiet: false, OsiApproved: false, Rules: []Rule{defaultDenyAll}, } } func (o *Check) AddFlags(flags clio.FlagSet) { flags.BoolVarP(&o.OsiApproved, "osi-approved", "", "only allow OSI approved licenses") } 07070100000037000081A4000000000000000000000001668D56C30000032B000000000000000000000000000000000000002900000000grant-0.2.1/cmd/grant/cli/option/list.gopackage option import "github.com/anchore/clio" type List struct { Output string `json:"output" yaml:"output" mapstructure:"output"` ShowPackages bool `json:"show-packages" yaml:"show-packages" mapstructure:"show-packages"` NonSPDX bool `json:"non-spdx" yaml:"non-spdx" mapstructure:"non-spdx"` } func DefaultList() List { return List{ Output: "table", ShowPackages: false, NonSPDX: false, } } func (o *List) AddFlags(flags clio.FlagSet) { flags.BoolVarP(&o.ShowPackages, "show-packages", "", "expand the license lists to show packages that contained the detected license") flags.BoolVarP(&o.NonSPDX, "non-spdx", "", "show licenses that could not be matched to the SPDX license list") flags.StringVarP(&o.Output, "output", "o", "output format (table, json, yaml)") } 07070100000038000081A4000000000000000000000001668D56C300000276000000000000000000000000000000000000002900000000grant-0.2.1/cmd/grant/cli/option/rule.gopackage option type Rule struct { Name string `json:"name" yaml:"name" mapstructure:"name"` Reason string `json:"reason" yaml:"reason" mapstructure:"reason"` Pattern string `json:"pattern" yaml:"pattern" mapstructure:"pattern"` Severity string `json:"severity" yaml:"severity" mapstructure:"severity"` Mode string `json:"mode" yaml:"mode" mapstructure:"mode"` Exceptions []string `json:"exceptions" yaml:"exceptions" mapstructure:"exceptions"` } var defaultDenyAll = Rule{ Name: "default-deny-all", Reason: "grant by default will deny all licenses", Mode: "deny", Pattern: "*", } 07070100000039000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001E00000000grant-0.2.1/cmd/grant/cli/tui0707010000003A000081A4000000000000000000000001668D56C300000378000000000000000000000000000000000000003500000000grant-0.2.1/cmd/grant/cli/tui/handle_task_started.gopackage tui import ( tea "github.com/charmbracelet/bubbletea" "github.com/wagoodman/go-partybus" "github.com/anchore/bubbly/bubbles/taskprogress" "github.com/anchore/grant/event" ) func (m *Handler) handleTaskStarted(e partybus.Event) ([]tea.Model, tea.Cmd) { cmd, prog, err := event.ParseTaskStarted(e) if err != nil { // log.Warnf("unable to parse event: %+v", err) return nil, nil } tsk := taskprogress.New( m.Running, taskprogress.WithStagedProgressable(prog), ) tsk.HideProgressOnSuccess = true tsk.HideOnSuccess = true tsk.TitleWidth = len(cmd.Title.WhileRunning) tsk.HintEndCaps = nil tsk.TitleOptions = taskprogress.Title{ Default: cmd.Title.Default, Running: cmd.Title.WhileRunning, Success: cmd.Title.OnSuccess, Failed: cmd.Title.OnFail, } tsk.Context = []string{cmd.Context} tsk.WindowSize = m.WindowSize return []tea.Model{tsk}, nil } 0707010000003B000081A4000000000000000000000001668D56C30000043C000000000000000000000000000000000000002900000000grant-0.2.1/cmd/grant/cli/tui/handler.gopackage tui import ( "sync" tea "github.com/charmbracelet/bubbletea" "github.com/wagoodman/go-partybus" "github.com/anchore/bubbly" "github.com/anchore/grant/event" ) var _ interface { bubbly.EventHandler bubbly.MessageListener bubbly.HandleWaiter } = (*Handler)(nil) type HandlerConfig struct { TitleWidth int } type Handler struct { WindowSize tea.WindowSizeMsg Running *sync.WaitGroup Config HandlerConfig bubbly.EventHandler } func DefaultHandlerConfig() HandlerConfig { return HandlerConfig{ TitleWidth: 30, } } func New(cfg HandlerConfig) *Handler { d := bubbly.NewEventDispatcher() h := &Handler{ EventHandler: d, Running: &sync.WaitGroup{}, Config: cfg, } // register all supported event types with the respective handler functions d.AddHandlers(map[partybus.EventType]bubbly.EventHandlerFn{ event.TaskStartedEvent: h.handleTaskStarted, }) return h } func (m *Handler) OnMessage(msg tea.Msg) { if msg, ok := msg.(tea.WindowSizeMsg); ok { m.WindowSize = msg } } func (m *Handler) Wait() { m.Running.Wait() } 0707010000003C000081A4000000000000000000000001668D56C3000002C2000000000000000000000000000000000000001E00000000grant-0.2.1/cmd/grant/main.gopackage main import ( "github.com/anchore/clio" "github.com/anchore/grant/cmd/grant/cli" ) // applicationName is the non-capitalized name of the application (do not change this) const ( applicationName = "grant" notProvided = "[not provided]" ) // all variables here are provided as build-time arguments, with clear default values var ( version = notProvided buildDate = notProvided gitCommit = notProvided gitDescription = notProvided ) func main() { app := cli.New( clio.Identification{ Name: applicationName, Version: version, BuildDate: buildDate, GitCommit: gitCommit, GitDescription: gitDescription, }, ) app.Run() } 0707010000003D000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001100000000grant-0.2.1/docs0707010000003E000081A4000000000000000000000001668D56C30000000E000000000000000000000000000000000000002100000000grant-0.2.1/docs/CONTRIBUTING.md# Contributing0707010000003F000081A4000000000000000000000001668D56C300001793000000000000000000000000000000000000001B00000000grant-0.2.1/docs/DESIGN.md## Summary Grant is a license compliance tool that reads and audits license from container images, SBOM documents, and directory scans. It generates a pass or fail check depending on if the read licenses adhear to the user's supplied rulesjk ### Syft Updates Needed to Support Grant - [Google String Classifier License](https://github.com/google/licenseclassifier/tree/main/stringclassifier) Syft's core elements of files and packages should be enhanced to include more information for grant's processing: For more details on this redesign see [Syft Licesnse Revamp](https://github.com/anchore/syft/issues/1577). It's important licenses be included in both core types. For image scans packages are most important. Syft can read a package managers declared license and then use the `String Classifier` to conclude that the declared license exists and is accurate. For direcotry scans files will be the most important. Directory scans have no concept of owned files from a package manager. Files should be read and licenses concluded based on the string classifer. #### Grant Notes on data shape - Pay attention to syft compatibility when shape changes - Our decode implicitly knows all previous versions (check this) - cyclonedx format needs to be examined for compatibility (possibly show warning) ### Stories: As a CI operator, I would like my image's SBOM to be searched for permitted/denied licenses so that I may gate software based on my organizations license compliance. I will provide a config of either allow list or deny list license. These license will be in the format of Identifiers found in the spdx license list: - [spdx license list](https://spdx.org/licenses/) I want grant to fail with a status code 1 and informative message when my SBOM contains licenses not permitted by my organization. ### Questions - How do I want to see unowned files that are Forbidden for an image scan? - I've been given an SBOM and it does not illustrate the source (directory or OCI image). Are all license equal? ### Command CLI Design `SOME-INPUT = sbom, dir:., registry:alpine:latest` List all the license for a given input ##### Grant List && Grant SPDX This shows all the licenses as identifiers from the SPDX license list with the packages and ID as children ``` grant license list <SOME-INPUT> MIT ID p1 declared xxxxx ID p2 concluded xxxx MIT-Modern-Varient ID f1 concluded xxx NPL-1.0 ID p1 declared xxxx ``` List the latest version of the spdx license list ``` grant spdx list <SOME_SPDX_ID> BSD Zero Clause License 0BSD Attribution Assurance License AAL Abstyles License Abstyles Adobe Systems Incorporated... Adobe-2006 Adobe Glyph List License Adobe-Glyph Amazon Digital Services License ADSL Academic Free License v1.1 AFL-1.1 Academic Free License v1.2 AFL-1.2 Academic Free License v2.0 AFL-2.0 Academic Free License v2.1 AFL-2.1 Academic Free License v3.0 AFL-3.0 grant spdx list --deprecated <-- show deprecated ... ``` #### Notes // Latest SPDX license list <--- Might be incompatible // Compare my organization to an older license list #### SPDX Sub commmands for setting/using the correct list and getting license text ``` grant spdx version set <VERSION-NUMBER> // sets version list grant spdx version //lists current license list version grant spdx get <SPDX-LICENSE-ID> // full contents? ``` // describe resource or just some ID from the list output? ``` grant describe package <package_name:version, package_id> grant describe license <license_name> <-- Show me all the packages for a license grant describe file <file_name, file_id> grant describe <SOME-ID> ``` // compliance and query ``` grant check <SOME-SBOM> --config <SOME_GRANT_CONFIG> grant search <SOME-QUERY> <-- - Deprecated licenses - SPDX Complex Expressions - License Confidence Query - Concluded vs Declared - I just want to see all GPL - Diffs between declared and concluded (inconsistencies - p1 declare MIT, p1 found ADOBE) - All source files that have declarations (divided by ecosystem or laguage?) - direct dependencies ``` // Third Party Inputs Third party?---> deps.dev as input directly**** // Syft Not grabbing all of the packages transitively (MOAR LICENSES) // Syft pre/post (We want pre build syft SBOM to do the transitive dependencies) // Go build cache --> Syft Sbom --> Grant (Better golang licenses) #### Notes License Declared vs License Concluded (Looking at the text vs reading the package data) Pure syft downstream tool Sometimes this is by package owned files Sometimes this is by parsing all files Sometimes this is by parsing all unowned files Core model of syft - update license shape to include tags - Does it exist on package struct or on its metadata - update file cataloger to open and conclude licenses #### Third party things - Thirdparty license directory for distro... <-- These should be associated with the package #### SPDX License Expressions License expressions... Probably advanced level: https://spdx.org/licenses/ https://spdx.github.io/spdx-spec/v2.3/SPDX-license-expressions/ Sometimes found in package metadata where people want to express the presence of multiple license Debian has some shared license location examples How to handle all licenses in a compound file? #### SPDX License Identifiers: https://github.com/anchore/syft/issues/565 https://spdx.dev/ids/ Are packages limited to one concluded and one declared? Combinations - Declared can have a concluded - If not declated we can still find concluded via owned files - If declared if might not be able to conclude (Found Nothing?) Image: - Owned vs unknowned is imporant Dir: - Nothing is owned so the file cataloger does the work Files should only be concluded Go over all files? - What's the hueristic for this? - only visit `LICENSE` named files? - check runtime for large SBOM file reads Does Concluded comes from resolving the file itself as contents of a license? Does Declared or Concluded comes from reading SPDX IDS from the header of a file? 07070100000040000081A4000000000000000000000001668D56C3000008A9000000000000000000000000000000000000001F00000000grant-0.2.1/docs/DEVELOPING.md# Developing ## Getting started In order to test and develop in this repo you will need the following dependencies installed: - Golang - Docker - make After cloning the following step can help you get setup: 1. run `make tools` to download tools, create the `/.tmp` dir, and download helper utilities. 2. run `make` to view the selection of developer commands in the Makefile 3. run `make build` to build the release snapshot binaries and packages 4. for an even quicker start you can run `go run cmd/grant/main.go` to print the syft help. - this command `go run cmd/grant/main.go check alpine:latest` will compile and run grant against the alpine:latest image 5. view the README or grant help output for more output options The main make tasks for common static analysis and testing are `lint`, `format`, `lint-fix`, `unit` See `make help` for all the current make tasks. ## Architecture At a high level, this is the package structure of grant: ``` ./cmd/grant/ â âââ cli/ â â âââ cli.go // where all commands are wired up â â âââ command/ // all command implementations â â âââ internal/ // all internal command implementations â â âââ option/ // all command flags and configuration options â â âââ tui/ // all handlers for events that are shown on the UI â âââ main.go // entrypoint for the application âââ grant/ // the "core" grant library ``` ## Testing ### Levels of testing - `unit`: The default level of test which is distributed throughout the repo are unit tests. Any `_test.go` file that does not reside somewhere within the `/test` directory is a unit test. Other forms of testing should be organized in the `/test` directory. These tests should focus on correctness of functionality in depth. % test coverage metrics only considers unit tests and no other forms of testing. - `integration`: TODO - `cli`: located with in `test/cli`, TODO - `acceptance`: located within `test/compare` and `test/install`, these are smoke-like tests that ensure that application packaging and installation works as expected. TODO07070100000041000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001200000000grant-0.2.1/event07070100000042000081A4000000000000000000000001668D56C30000035E000000000000000000000000000000000000001C00000000grant-0.2.1/event/events.gopackage event import "github.com/wagoodman/go-partybus" const ( typePrefix = "grant" cliTypePrefix = typePrefix + "-cli" // Events from the grant library // TaskStartedEvent is a generic, monitorable partybus event that occurs when a task has begun TaskStartedEvent partybus.EventType = typePrefix + "-task" // Events exclusively for the CLI // CLICheckCmdStarted is a partybus event that occurs when the check cli command has begun CLICheckCmdStarted partybus.EventType = cliTypePrefix + "-check-cmd-started" // CLIReport is a partybus event that occurs when the cli is ready to generate a report CLIReport partybus.EventType = cliTypePrefix + "-report" // CLINotification is a partybus event that occurs when auxiliary information is ready for presentation to stderr CLINotification partybus.EventType = cliTypePrefix + "-notification" ) 07070100000043000081A4000000000000000000000001668D56C300000738000000000000000000000000000000000000001D00000000grant-0.2.1/event/parsers.gopackage event import ( "fmt" "github.com/wagoodman/go-partybus" "github.com/wagoodman/go-progress" ) type ErrBadPayload struct { Type partybus.EventType Field string Value interface{} } func (e *ErrBadPayload) Error() string { return fmt.Sprintf("event='%s' has bad event payload field='%v': '%+v'", string(e.Type), e.Field, e.Value) } func newPayloadErr(t partybus.EventType, field string, value interface{}) error { return &ErrBadPayload{ Type: t, Field: field, Value: value, } } func checkEventType(actual, expected partybus.EventType) error { if actual != expected { return newPayloadErr(expected, "Type", actual) } return nil } func ParseTaskStarted(e partybus.Event) (*Task, progress.StagedProgressable, error) { if err := checkEventType(e.Type, TaskStartedEvent); err != nil { return nil, nil, err } cmd, ok := e.Source.(Task) if !ok { return nil, nil, newPayloadErr(e.Type, "Source", e.Source) } p, ok := e.Value.(progress.StagedProgressable) if !ok { return nil, nil, newPayloadErr(e.Type, "Value", e.Value) } return &cmd, p, nil } func ParseCLIReport(e partybus.Event) (string, string, error) { if err := checkEventType(e.Type, CLIReport); err != nil { return "", "", err } context, ok := e.Source.(string) if !ok { // this is optional context = "" } report, ok := e.Value.(string) if !ok { return "", "", newPayloadErr(e.Type, "Value", e.Value) } return context, report, nil } func ParseCLINotification(e partybus.Event) (string, string, error) { if err := checkEventType(e.Type, CLINotification); err != nil { return "", "", err } context, ok := e.Source.(string) if !ok { // this is optional context = "" } notification, ok := e.Value.(string) if !ok { return "", "", newPayloadErr(e.Type, "Value", e.Value) } return context, notification, nil } 07070100000044000081A4000000000000000000000001668D56C300000128000000000000000000000000000000000000001A00000000grant-0.2.1/event/task.gopackage event import "github.com/wagoodman/go-progress" type Task struct { Title Title Context string } type Title struct { Default string WhileRunning string OnSuccess string OnFail string } type ManualStagedProgress struct { *progress.AtomicStage *progress.Manual } 07070100000045000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001500000000grant-0.2.1/fixtures07070100000046000081A4000000000000000000000001668D56C30000EBC0000000000000000000000000000000000000002A00000000grant-0.2.1/fixtures/alpine.tagvalue.spdxSPDXVersion: SPDX-2.3 DataLicense: CC0-1.0 SPDXID: SPDXRef-DOCUMENT DocumentName: alpine DocumentNamespace: https://anchore.com/syft/image/alpine-2e0e5850-a787-4602-8c28-b01e6e6084d6 LicenseListVersion: 3.22 Creator: Organization: Anchore, Inc Creator: Tool: syft-0.97.0 Created: 2023-11-27T21:58:11Z ##### Unpackaged files FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-4a6a0840.rsa.pub-20cf9f534085e945 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-4a6a0840.rsa.pub-226fc2b8b6074102 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5243ef4b.rsa.pub-5d6524ee4773578a FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5243ef4b.rsa.pub-bbeee289b81a6de1 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-524d27bb.rsa.pub-e8cbb99b9dbeb702 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5261cecb.rsa.pub-87948a20075367f4 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5261cecb.rsa.pub-b39e246556a04c03 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-58199dcc.rsa.pub-360e05c12ed554b6 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-58cbb476.rsa.pub-d01a44792268e5f6 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-58e4f17d.rsa.pub-c48d48e07e4c25b9 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5e69ca50.rsa.pub-90c0673ef43c9544 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-60ac2099.rsa.pub-f6a9952fe04a43cb FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-6165ee59.rsa.pub-2fa33bb12e442749 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/apk/keys/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-6165ee59.rsa.pub-307958a4bdf894b4 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/apk/keys/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-61666e3f.rsa.pub-8e66c869e0661398 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-61666e3f.rsa.pub-f5e77bd57361cd38 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616a9724.rsa.pub-0993a63e07e545a9 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616abc23.rsa.pub-84b5a3118c077c5a FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616ac3bc.rsa.pub-a434518c6ae434c2 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616adfeb.rsa.pub-c7135dd21091c6e8 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616ae350.rsa.pub-8fda3ed0d1961b6e FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616db30d.rsa.pub-6d2a56af87faa2c1 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /bin/busybox SPDXID: SPDXRef-File-bin-busybox-e202ef7be7af94bd FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/busybox-paths.d/busybox SPDXID: SPDXRef-File-etc-busybox-paths.d-busybox-a705ce53d9d4474d FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/crontabs/root SPDXID: SPDXRef-File-etc-crontabs-root-9850dad7b8733f02 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/fstab SPDXID: SPDXRef-File-etc-fstab-506f85b9b76b9930 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/group SPDXID: SPDXRef-File-etc-group-2ac3006bd085faf9 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/hostname SPDXID: SPDXRef-File-etc-hostname-41cef59949d5f5c8 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/hosts SPDXID: SPDXRef-File-etc-hosts-2d9a8fa5e934baa8 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/inittab SPDXID: SPDXRef-File-etc-inittab-f7231334aef4225c FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/logrotate.d/acpid SPDXID: SPDXRef-File-etc-logrotate.d-acpid-9375f7051f97fba1 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/modprobe.d/aliases.conf SPDXID: SPDXRef-File-etc-modprobe.d-aliases.conf-0159b9221b8998e2 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/modprobe.d/blacklist.conf SPDXID: SPDXRef-File-etc-modprobe.d-blacklist.conf-8dca6592d27d8e79 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/modprobe.d/i386.conf SPDXID: SPDXRef-File-etc-modprobe.d-i386.conf-18a59d24c6ecd1a2 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/modprobe.d/kms.conf SPDXID: SPDXRef-File-etc-modprobe.d-kms.conf-1629ecb847e16269 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/modules SPDXID: SPDXRef-File-etc-modules-1d478710c75b2a14 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/motd SPDXID: SPDXRef-File-etc-motd-ab0a5b2efc0d83b6 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/network/if-up.d/dad SPDXID: SPDXRef-File-etc-network-if-up.d-dad-0028f6f9cd570ecc FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/nsswitch.conf SPDXID: SPDXRef-File-etc-nsswitch.conf-d357372a90ca7132 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/passwd SPDXID: SPDXRef-File-etc-passwd-8d8f419d8f464088 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/profile SPDXID: SPDXRef-File-etc-profile-588a0d6834114aba FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/profile.d/20locale.sh SPDXID: SPDXRef-File-etc-profile.d-20locale.sh-32bb1cb0e72dea3f FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/profile.d/README SPDXID: SPDXRef-File-etc-profile.d-README-be0ca5be9d9e0df6 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/profile.d/color_prompt.sh.disabled SPDXID: SPDXRef-File-etc-profile.d-color-prompt.sh.disabled-a3ad33156b1b3289 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/protocols SPDXID: SPDXRef-File-etc-protocols-b012ec88417e7d37 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/securetty SPDXID: SPDXRef-File-etc-securetty-6da069df002af5fa FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/services SPDXID: SPDXRef-File-etc-services-72c8d02c8efd8324 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/shadow SPDXID: SPDXRef-File-etc-shadow-3c9a7deb1d0266b7 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/shells SPDXID: SPDXRef-File-etc-shells-271c29cce586f3fc FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/ssl/certs/ca-certificates.crt SPDXID: SPDXRef-File-etc-ssl-certs-ca-certificates.crt-4dfa0b7cc6ad42d7 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/ssl/ct_log_list.cnf SPDXID: SPDXRef-File-etc-ssl-ct-log-list.cnf-c00cb9333b24c15d FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/ssl/ct_log_list.cnf.dist SPDXID: SPDXRef-File-etc-ssl-ct-log-list.cnf.dist-54893d0879f9fc83 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/ssl/misc/CA.pl SPDXID: SPDXRef-File-etc-ssl-misc-CA.pl-78284be2bba966f4 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/ssl/misc/tsget.pl SPDXID: SPDXRef-File-etc-ssl-misc-tsget.pl-bfa68bd5a9a3a6b3 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/ssl/openssl.cnf SPDXID: SPDXRef-File-etc-ssl-openssl.cnf-f8817538017cf529 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/ssl/openssl.cnf.dist SPDXID: SPDXRef-File-etc-ssl-openssl.cnf.dist-e596e3053e9ec56f FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/sysctl.conf SPDXID: SPDXRef-File-etc-sysctl.conf-734e42619a3909c3 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /etc/udhcpd.conf SPDXID: SPDXRef-File-etc-udhcpd.conf-96c57c4a578011fc FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /lib/apk/db/installed SPDXID: SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /lib/ld-musl-x86_64.so.1 SPDXID: SPDXRef-File-lib-ld-musl-x86-64.so.1-5ad847e8604b23e1 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /lib/libapk.so.2.14.0 SPDXID: SPDXRef-File-lib-libapk.so.2.14.0-129245a9da03e559 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /lib/libcrypto.so.3 SPDXID: SPDXRef-File-lib-libcrypto.so.3-cb26d83cd4c10f96 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /lib/libssl.so.3 SPDXID: SPDXRef-File-lib-libssl.so.3-7eb6eb3999549e5f FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /lib/libz.so.1.2.13 SPDXID: SPDXRef-File-lib-libz.so.1.2.13-0b003b776e515a4d FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /lib/sysctl.d/00-alpine.conf SPDXID: SPDXRef-File-lib-sysctl.d-00-alpine.conf-a778fbf3d8e12100 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /sbin/apk SPDXID: SPDXRef-File-sbin-apk-9b57c4594cbb1250 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /sbin/ldconfig SPDXID: SPDXRef-File-sbin-ldconfig-f9eb672d705c4ffb FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/bin/getconf SPDXID: SPDXRef-File-usr-bin-getconf-7cadf888d599b703 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/bin/getent SPDXID: SPDXRef-File-usr-bin-getent-9c2b285b89b30224 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/bin/iconv SPDXID: SPDXRef-File-usr-bin-iconv-7b57b994c8fad373 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/bin/ldd SPDXID: SPDXRef-File-usr-bin-ldd-f96cd15718733827 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/bin/scanelf SPDXID: SPDXRef-File-usr-bin-scanelf-fe66356749c377eb FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/bin/ssl_client SPDXID: SPDXRef-File-usr-bin-ssl-client-193d485e3137505e FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/lib/engines-3/afalg.so SPDXID: SPDXRef-File-usr-lib-engines-3-afalg.so-5aa1f569f30b12cf FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/lib/engines-3/capi.so SPDXID: SPDXRef-File-usr-lib-engines-3-capi.so-9de259d9b03018b7 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/lib/engines-3/loader_attic.so SPDXID: SPDXRef-File-usr-lib-engines-3-loader-attic.so-d359b4b95c6101c5 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/lib/engines-3/padlock.so SPDXID: SPDXRef-File-usr-lib-engines-3-padlock.so-07d4d8d187bef761 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/lib/ossl-modules/legacy.so SPDXID: SPDXRef-File-usr-lib-ossl-modules-legacy.so-8792d9f748c697b8 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 FileName: /usr/share/udhcpc/default.script SPDXID: SPDXRef-File-usr-share-udhcpc-default.script-e751aa77624bdf12 FileChecksum: SHA1: 0000000000000000000000000000000000000000 LicenseConcluded: NOASSERTION FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438 ##### Package: alpine PackageName: alpine SPDXID: SPDXRef-DocumentRoot-Image-alpine PackageVersion: sha256:48d9183eb12a05c99bcc0bf44a003607b8e941e1d4f41f9ad12bdcc4b5672f86 PackageSupplier: NOASSERTION PackageDownloadLocation: NOASSERTION PrimaryPackagePurpose: CONTAINER FilesAnalyzed: false PackageChecksum: SHA256: 48d9183eb12a05c99bcc0bf44a003607b8e941e1d4f41f9ad12bdcc4b5672f86 ExternalRef: PACKAGE-MANAGER purl pkg:oci/alpine@sha256:48d9183eb12a05c99bcc0bf44a003607b8e941e1d4f41f9ad12bdcc4b5672f86?arch=amd64&tag=latest ##### Package: alpine-baselayout PackageName: alpine-baselayout SPDXID: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 PackageVersion: 3.4.3-r1 PackageSupplier: Person: Natanael Copa <ncopa@alpinelinux.org> PackageOriginator: Person: Natanael Copa <ncopa@alpinelinux.org> PackageDownloadLocation: https://git.alpinelinux.org/cgit/aports/tree/main/alpine-baselayout FilesAnalyzed: false PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed PackageLicenseConcluded: NOASSERTION PackageLicenseDeclared: GPL-2.0-only PackageCopyrightText: NOASSERTION PackageDescription: Alpine base dir structure and init scripts ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine-baselayout:alpine-baselayout:3.4.3-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine-baselayout:alpine_baselayout:3.4.3-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine_baselayout:alpine-baselayout:3.4.3-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine_baselayout:alpine_baselayout:3.4.3-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine:alpine-baselayout:3.4.3-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine:alpine_baselayout:3.4.3-r1:*:*:*:*:*:*:* ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/alpine-baselayout@3.4.3-r1?arch=x86_64&distro=alpine-3.18.4 ##### Package: alpine-baselayout-data PackageName: alpine-baselayout-data SPDXID: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c PackageVersion: 3.4.3-r1 PackageSupplier: Person: Natanael Copa <ncopa@alpinelinux.org> PackageOriginator: Person: Natanael Copa <ncopa@alpinelinux.org> PackageDownloadLocation: https://git.alpinelinux.org/cgit/aports/tree/main/alpine-baselayout FilesAnalyzed: false PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed PackageLicenseConcluded: NOASSERTION PackageLicenseDeclared: GPL-2.0-only PackageCopyrightText: NOASSERTION PackageDescription: Alpine base dir structure and init scripts ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine-baselayout-data:alpine-baselayout-data:3.4.3-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine-baselayout-data:alpine_baselayout_data:3.4.3-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine_baselayout_data:alpine-baselayout-data:3.4.3-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine_baselayout_data:alpine_baselayout_data:3.4.3-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine-baselayout:alpine-baselayout-data:3.4.3-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine-baselayout:alpine_baselayout_data:3.4.3-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine_baselayout:alpine-baselayout-data:3.4.3-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine_baselayout:alpine_baselayout_data:3.4.3-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine:alpine-baselayout-data:3.4.3-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine:alpine_baselayout_data:3.4.3-r1:*:*:*:*:*:*:* ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/alpine-baselayout-data@3.4.3-r1?arch=x86_64&upstream=alpine-baselayout&distro=alpine-3.18.4 ##### Package: alpine-keys PackageName: alpine-keys SPDXID: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 PackageVersion: 2.4-r1 PackageSupplier: Person: Natanael Copa <ncopa@alpinelinux.org> PackageOriginator: Person: Natanael Copa <ncopa@alpinelinux.org> PackageDownloadLocation: https://alpinelinux.org FilesAnalyzed: false PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed PackageLicenseConcluded: NOASSERTION PackageLicenseDeclared: MIT PackageCopyrightText: NOASSERTION PackageDescription: Public keys for Alpine Linux packages ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine-keys:alpine-keys:2.4-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine-keys:alpine_keys:2.4-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine_keys:alpine-keys:2.4-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine_keys:alpine_keys:2.4-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine:alpine-keys:2.4-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine:alpine_keys:2.4-r1:*:*:*:*:*:*:* ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/alpine-keys@2.4-r1?arch=x86_64&distro=alpine-3.18.4 ##### Package: apk-tools PackageName: apk-tools SPDXID: SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e PackageVersion: 2.14.0-r2 PackageSupplier: Person: Natanael Copa <ncopa@alpinelinux.org> PackageOriginator: Person: Natanael Copa <ncopa@alpinelinux.org> PackageDownloadLocation: https://gitlab.alpinelinux.org/alpine/apk-tools FilesAnalyzed: false PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed PackageLicenseConcluded: NOASSERTION PackageLicenseDeclared: GPL-2.0-only PackageCopyrightText: NOASSERTION PackageDescription: Alpine Package Keeper - package manager for alpine ExternalRef: SECURITY cpe23Type cpe:2.3:a:apk-tools:apk-tools:2.14.0-r2:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:apk-tools:apk_tools:2.14.0-r2:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:apk_tools:apk-tools:2.14.0-r2:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:apk_tools:apk_tools:2.14.0-r2:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:apk:apk-tools:2.14.0-r2:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:apk:apk_tools:2.14.0-r2:*:*:*:*:*:*:* ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/apk-tools@2.14.0-r2?arch=x86_64&distro=alpine-3.18.4 ##### Package: busybox-binsh PackageName: busybox-binsh SPDXID: SPDXRef-Package-apk-busybox-binsh-b8384340b5c5b8ca PackageVersion: 1.36.1-r2 PackageSupplier: Person: SÃļren Tempel <soeren+alpine@soeren-tempel.net> PackageOriginator: Person: SÃļren Tempel <soeren+alpine@soeren-tempel.net> PackageDownloadLocation: https://busybox.net/ FilesAnalyzed: false PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed PackageLicenseConcluded: NOASSERTION PackageLicenseDeclared: GPL-2.0-only PackageCopyrightText: NOASSERTION PackageDescription: busybox ash /bin/sh ExternalRef: SECURITY cpe23Type cpe:2.3:a:busybox-binsh:busybox-binsh:1.36.1-r2:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:busybox-binsh:busybox_binsh:1.36.1-r2:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:busybox_binsh:busybox-binsh:1.36.1-r2:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:busybox_binsh:busybox_binsh:1.36.1-r2:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:busybox:busybox-binsh:1.36.1-r2:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:busybox:busybox_binsh:1.36.1-r2:*:*:*:*:*:*:* ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/busybox-binsh@1.36.1-r2?arch=x86_64&upstream=busybox&distro=alpine-3.18.4 ##### Package: busybox PackageName: busybox SPDXID: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 PackageVersion: 1.36.1-r2 PackageSupplier: Person: SÃļren Tempel <soeren+alpine@soeren-tempel.net> PackageOriginator: Person: SÃļren Tempel <soeren+alpine@soeren-tempel.net> PackageDownloadLocation: https://busybox.net/ FilesAnalyzed: false PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed PackageLicenseConcluded: NOASSERTION PackageLicenseDeclared: GPL-2.0-only PackageCopyrightText: NOASSERTION PackageDescription: Size optimized toolbox of many common UNIX utilities ExternalRef: SECURITY cpe23Type cpe:2.3:a:busybox:busybox:1.36.1-r2:*:*:*:*:*:*:* ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/busybox@1.36.1-r2?arch=x86_64&distro=alpine-3.18.4 ##### Package: ca-certificates-bundle PackageName: ca-certificates-bundle SPDXID: SPDXRef-Package-apk-ca-certificates-bundle-e6d1b63d5a046c55 PackageVersion: 20230506-r0 PackageSupplier: Person: Natanael Copa <ncopa@alpinelinux.org> PackageOriginator: Person: Natanael Copa <ncopa@alpinelinux.org> PackageDownloadLocation: https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/ FilesAnalyzed: false PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed PackageLicenseConcluded: NOASSERTION PackageLicenseDeclared: (MPL-2.0 AND MIT) PackageCopyrightText: NOASSERTION PackageDescription: Pre generated bundle of Mozilla certificates ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca-certificates-bundle:ca-certificates-bundle:20230506-r0:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca-certificates-bundle:ca_certificates_bundle:20230506-r0:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca_certificates_bundle:ca-certificates-bundle:20230506-r0:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca_certificates_bundle:ca_certificates_bundle:20230506-r0:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca-certificates:ca-certificates-bundle:20230506-r0:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca-certificates:ca_certificates_bundle:20230506-r0:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca_certificates:ca-certificates-bundle:20230506-r0:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca_certificates:ca_certificates_bundle:20230506-r0:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:mozilla:ca-certificates-bundle:20230506-r0:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:mozilla:ca_certificates_bundle:20230506-r0:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca:ca-certificates-bundle:20230506-r0:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca:ca_certificates_bundle:20230506-r0:*:*:*:*:*:*:* ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/ca-certificates-bundle@20230506-r0?arch=x86_64&upstream=ca-certificates&distro=alpine-3.18.4 ##### Package: libc-utils PackageName: libc-utils SPDXID: SPDXRef-Package-apk-libc-utils-caef79f1fe0b500a PackageVersion: 0.7.2-r5 PackageSupplier: Person: Natanael Copa <ncopa@alpinelinux.org> PackageOriginator: Person: Natanael Copa <ncopa@alpinelinux.org> PackageDownloadLocation: https://alpinelinux.org FilesAnalyzed: false PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed PackageLicenseConcluded: NOASSERTION PackageLicenseDeclared: (BSD-2-Clause AND BSD-3-Clause) PackageCopyrightText: NOASSERTION PackageDescription: Meta package to pull in correct libc ExternalRef: SECURITY cpe23Type cpe:2.3:a:libc-utils:libc-utils:0.7.2-r5:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:libc-utils:libc_utils:0.7.2-r5:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:libc_utils:libc-utils:0.7.2-r5:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:libc_utils:libc_utils:0.7.2-r5:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:libc:libc-utils:0.7.2-r5:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:libc:libc_utils:0.7.2-r5:*:*:*:*:*:*:* ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/libc-utils@0.7.2-r5?arch=x86_64&upstream=libc-dev&distro=alpine-3.18.4 ##### Package: libcrypto3 PackageName: libcrypto3 SPDXID: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 PackageVersion: 3.1.3-r0 PackageSupplier: Person: Ariadne Conill <ariadne@dereferenced.org> PackageOriginator: Person: Ariadne Conill <ariadne@dereferenced.org> PackageDownloadLocation: https://www.openssl.org/ FilesAnalyzed: false PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed PackageLicenseConcluded: NOASSERTION PackageLicenseDeclared: Apache-2.0 PackageCopyrightText: NOASSERTION PackageDescription: Crypto library from openssl ExternalRef: SECURITY cpe23Type cpe:2.3:a:libcrypto3:libcrypto3:3.1.3-r0:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:libcrypto3:libcrypto:3.1.3-r0:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:libcrypto:libcrypto3:3.1.3-r0:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:libcrypto:libcrypto:3.1.3-r0:*:*:*:*:*:*:* ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/libcrypto3@3.1.3-r0?arch=x86_64&upstream=openssl&distro=alpine-3.18.4 ##### Package: libssl3 PackageName: libssl3 SPDXID: SPDXRef-Package-apk-libssl3-68a3488610dc68e4 PackageVersion: 3.1.3-r0 PackageSupplier: Person: Ariadne Conill <ariadne@dereferenced.org> PackageOriginator: Person: Ariadne Conill <ariadne@dereferenced.org> PackageDownloadLocation: https://www.openssl.org/ FilesAnalyzed: false PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed PackageLicenseConcluded: NOASSERTION PackageLicenseDeclared: Apache-2.0 PackageCopyrightText: NOASSERTION PackageDescription: SSL shared libraries ExternalRef: SECURITY cpe23Type cpe:2.3:a:libssl3:libssl3:3.1.3-r0:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:libssl3:libssl:3.1.3-r0:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:libssl:libssl3:3.1.3-r0:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:libssl:libssl:3.1.3-r0:*:*:*:*:*:*:* ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/libssl3@3.1.3-r0?arch=x86_64&upstream=openssl&distro=alpine-3.18.4 ##### Package: musl PackageName: musl SPDXID: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 PackageVersion: 1.2.4-r1 PackageSupplier: Person: Timo Teräs <timo.teras@iki.fi> PackageOriginator: Person: Timo Teräs <timo.teras@iki.fi> PackageDownloadLocation: https://musl.libc.org/ FilesAnalyzed: false PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed PackageLicenseConcluded: NOASSERTION PackageLicenseDeclared: MIT PackageCopyrightText: NOASSERTION PackageDescription: the musl c library (libc) implementation ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl-libc:musl:1.2.4-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl_libc:musl:1.2.4-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl:musl:1.2.4-r1:*:*:*:*:*:*:* ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/musl@1.2.4-r1?arch=x86_64&distro=alpine-3.18.4 ##### Package: musl-utils PackageName: musl-utils SPDXID: SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6 PackageVersion: 1.2.4-r1 PackageSupplier: Person: Timo Teräs <timo.teras@iki.fi> PackageOriginator: Person: Timo Teräs <timo.teras@iki.fi> PackageDownloadLocation: https://musl.libc.org/ FilesAnalyzed: false PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed PackageLicenseConcluded: NOASSERTION PackageLicenseDeclared: (MIT AND BSD-2-Clause AND GPL-2.0-or-later) PackageCopyrightText: NOASSERTION PackageDescription: the musl c library (libc) implementation ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl-utils:musl-utils:1.2.4-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl-utils:musl_utils:1.2.4-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl_utils:musl-utils:1.2.4-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl_utils:musl_utils:1.2.4-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl-libc:musl-utils:1.2.4-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl-libc:musl_utils:1.2.4-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl:musl-utils:1.2.4-r1:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl:musl_utils:1.2.4-r1:*:*:*:*:*:*:* ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/musl-utils@1.2.4-r1?arch=x86_64&upstream=musl&distro=alpine-3.18.4 ##### Package: scanelf PackageName: scanelf SPDXID: SPDXRef-Package-apk-scanelf-701300eef0967970 PackageVersion: 1.3.7-r1 PackageSupplier: Person: Natanael Copa <ncopa@alpinelinux.org> PackageOriginator: Person: Natanael Copa <ncopa@alpinelinux.org> PackageDownloadLocation: https://wiki.gentoo.org/wiki/Hardened/PaX_Utilities FilesAnalyzed: false PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed PackageLicenseConcluded: NOASSERTION PackageLicenseDeclared: GPL-2.0-only PackageCopyrightText: NOASSERTION PackageDescription: Scan ELF binaries for stuff ExternalRef: SECURITY cpe23Type cpe:2.3:a:scanelf:scanelf:1.3.7-r1:*:*:*:*:*:*:* ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/scanelf@1.3.7-r1?arch=x86_64&upstream=pax-utils&distro=alpine-3.18.4 ##### Package: ssl_client PackageName: ssl_client SPDXID: SPDXRef-Package-apk-ssl-client-bdbab9ee97709e2f PackageVersion: 1.36.1-r2 PackageSupplier: Person: SÃļren Tempel <soeren+alpine@soeren-tempel.net> PackageOriginator: Person: SÃļren Tempel <soeren+alpine@soeren-tempel.net> PackageDownloadLocation: https://busybox.net/ FilesAnalyzed: false PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed PackageLicenseConcluded: NOASSERTION PackageLicenseDeclared: GPL-2.0-only PackageCopyrightText: NOASSERTION PackageDescription: EXternal ssl_client for busybox wget ExternalRef: SECURITY cpe23Type cpe:2.3:a:ssl-client:ssl-client:1.36.1-r2:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:ssl-client:ssl_client:1.36.1-r2:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:ssl_client:ssl-client:1.36.1-r2:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:ssl_client:ssl_client:1.36.1-r2:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:ssl:ssl-client:1.36.1-r2:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:ssl:ssl_client:1.36.1-r2:*:*:*:*:*:*:* ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/ssl_client@1.36.1-r2?arch=x86_64&upstream=busybox&distro=alpine-3.18.4 ##### Package: zlib PackageName: zlib SPDXID: SPDXRef-Package-apk-zlib-c8e7fc9f117e52bc PackageVersion: 1.2.13-r1 PackageSupplier: Person: Natanael Copa <ncopa@alpinelinux.org> PackageOriginator: Person: Natanael Copa <ncopa@alpinelinux.org> PackageDownloadLocation: https://zlib.net/ FilesAnalyzed: false PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed PackageLicenseConcluded: NOASSERTION PackageLicenseDeclared: Zlib PackageCopyrightText: NOASSERTION PackageDescription: A compression/decompression Library ExternalRef: SECURITY cpe23Type cpe:2.3:a:zlib:zlib:1.2.13-r1:*:*:*:*:*:*:* ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/zlib@1.2.13-r1?arch=x86_64&distro=alpine-3.18.4 ##### Relationships Relationship: SPDXRef-Package-apk-libssl3-68a3488610dc68e4 CONTAINS SPDXRef-File-lib-libssl.so.3-7eb6eb3999549e5f Relationship: SPDXRef-Package-apk-libssl3-68a3488610dc68e4 OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576 RelationshipComment: evident-by: indicates the package's existence is evident by the given file Relationship: SPDXRef-Package-apk-libssl3-68a3488610dc68e4 DEPENDENCY_OF SPDXRef-Package-apk-ssl-client-bdbab9ee97709e2f Relationship: SPDXRef-Package-apk-libssl3-68a3488610dc68e4 DEPENDENCY_OF SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e Relationship: SPDXRef-Package-apk-scanelf-701300eef0967970 OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576 RelationshipComment: evident-by: indicates the package's existence is evident by the given file Relationship: SPDXRef-Package-apk-scanelf-701300eef0967970 DEPENDENCY_OF SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6 Relationship: SPDXRef-Package-apk-scanelf-701300eef0967970 CONTAINS SPDXRef-File-usr-bin-scanelf-fe66356749c377eb Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-modules-1d478710c75b2a14 Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-shells-271c29cce586f3fc Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-group-2ac3006bd085faf9 Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-hosts-2d9a8fa5e934baa8 Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-shadow-3c9a7deb1d0266b7 Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-hostname-41cef59949d5f5c8 Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-fstab-506f85b9b76b9930 Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-profile-588a0d6834114aba Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-services-72c8d02c8efd8324 Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-sysctl.conf-734e42619a3909c3 Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-passwd-8d8f419d8f464088 Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576 RelationshipComment: evident-by: indicates the package's existence is evident by the given file Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-protocols-b012ec88417e7d37 Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c DEPENDENCY_OF SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-nsswitch.conf-d357372a90ca7132 Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-inittab-f7231334aef4225c Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-usr-lib-engines-3-padlock.so-07d4d8d187bef761 Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-etc-ssl-ct-log-list.cnf.dist-54893d0879f9fc83 Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-usr-lib-engines-3-afalg.so-5aa1f569f30b12cf Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 DEPENDENCY_OF SPDXRef-Package-apk-libssl3-68a3488610dc68e4 Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-etc-ssl-misc-CA.pl-78284be2bba966f4 Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-usr-lib-ossl-modules-legacy.so-8792d9f748c697b8 Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-usr-lib-engines-3-capi.so-9de259d9b03018b7 Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576 RelationshipComment: evident-by: indicates the package's existence is evident by the given file Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 DEPENDENCY_OF SPDXRef-Package-apk-ssl-client-bdbab9ee97709e2f Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-etc-ssl-misc-tsget.pl-bfa68bd5a9a3a6b3 Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-etc-ssl-ct-log-list.cnf-c00cb9333b24c15d Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-lib-libcrypto.so.3-cb26d83cd4c10f96 Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-usr-lib-engines-3-loader-attic.so-d359b4b95c6101c5 Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 DEPENDENCY_OF SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-etc-ssl-openssl.cnf.dist-e596e3053e9ec56f Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-etc-ssl-openssl.cnf-f8817538017cf529 Relationship: SPDXRef-Package-apk-busybox-binsh-b8384340b5c5b8ca OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576 RelationshipComment: evident-by: indicates the package's existence is evident by the given file Relationship: SPDXRef-Package-apk-busybox-binsh-b8384340b5c5b8ca DEPENDENCY_OF SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 Relationship: SPDXRef-Package-apk-busybox-binsh-b8384340b5c5b8ca CONTAINS SPDXRef-File-bin-busybox-e202ef7be7af94bd Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-etc-modprobe.d-aliases.conf-0159b9221b8998e2 Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-etc-modprobe.d-kms.conf-1629ecb847e16269 Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-etc-modprobe.d-i386.conf-18a59d24c6ecd1a2 Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-etc-profile.d-20locale.sh-32bb1cb0e72dea3f Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-etc-modprobe.d-blacklist.conf-8dca6592d27d8e79 Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-etc-crontabs-root-9850dad7b8733f02 Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576 RelationshipComment: evident-by: indicates the package's existence is evident by the given file Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-etc-profile.d-color-prompt.sh.disabled-a3ad33156b1b3289 Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-lib-sysctl.d-00-alpine.conf-a778fbf3d8e12100 Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-etc-motd-ab0a5b2efc0d83b6 Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-etc-profile.d-README-be0ca5be9d9e0df6 Relationship: SPDXRef-Package-apk-ssl-client-bdbab9ee97709e2f CONTAINS SPDXRef-File-usr-bin-ssl-client-193d485e3137505e Relationship: SPDXRef-Package-apk-ssl-client-bdbab9ee97709e2f OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576 RelationshipComment: evident-by: indicates the package's existence is evident by the given file Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616a9724.rsa.pub-0993a63e07e545a9 Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-4a6a0840.rsa.pub-20cf9f534085e945 Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-4a6a0840.rsa.pub-226fc2b8b6074102 Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-6165ee59.rsa.pub-2fa33bb12e442749 Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-6165ee59.rsa.pub-307958a4bdf894b4 Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-58199dcc.rsa.pub-360e05c12ed554b6 Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5243ef4b.rsa.pub-5d6524ee4773578a Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616db30d.rsa.pub-6d2a56af87faa2c1 Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616abc23.rsa.pub-84b5a3118c077c5a Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5261cecb.rsa.pub-87948a20075367f4 Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-61666e3f.rsa.pub-8e66c869e0661398 Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616ae350.rsa.pub-8fda3ed0d1961b6e Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5e69ca50.rsa.pub-90c0673ef43c9544 Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576 RelationshipComment: evident-by: indicates the package's existence is evident by the given file Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616ac3bc.rsa.pub-a434518c6ae434c2 Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5261cecb.rsa.pub-b39e246556a04c03 Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5243ef4b.rsa.pub-bbeee289b81a6de1 Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-58e4f17d.rsa.pub-c48d48e07e4c25b9 Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616adfeb.rsa.pub-c7135dd21091c6e8 Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-58cbb476.rsa.pub-d01a44792268e5f6 Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-524d27bb.rsa.pub-e8cbb99b9dbeb702 Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-61666e3f.rsa.pub-f5e77bd57361cd38 Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-60ac2099.rsa.pub-f6a9952fe04a43cb Relationship: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 CONTAINS SPDXRef-File-etc-network-if-up.d-dad-0028f6f9cd570ecc Relationship: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 CONTAINS SPDXRef-File-etc-securetty-6da069df002af5fa Relationship: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 CONTAINS SPDXRef-File-etc-logrotate.d-acpid-9375f7051f97fba1 Relationship: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 CONTAINS SPDXRef-File-etc-udhcpd.conf-96c57c4a578011fc Relationship: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576 RelationshipComment: evident-by: indicates the package's existence is evident by the given file Relationship: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 CONTAINS SPDXRef-File-etc-busybox-paths.d-busybox-a705ce53d9d4474d Relationship: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 DEPENDENCY_OF SPDXRef-Package-apk-busybox-binsh-b8384340b5c5b8ca Relationship: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 CONTAINS SPDXRef-File-bin-busybox-e202ef7be7af94bd Relationship: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 CONTAINS SPDXRef-File-usr-share-udhcpc-default.script-e751aa77624bdf12 Relationship: SPDXRef-Package-apk-zlib-c8e7fc9f117e52bc CONTAINS SPDXRef-File-lib-libz.so.1.2.13-0b003b776e515a4d Relationship: SPDXRef-Package-apk-zlib-c8e7fc9f117e52bc OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576 RelationshipComment: evident-by: indicates the package's existence is evident by the given file Relationship: SPDXRef-Package-apk-zlib-c8e7fc9f117e52bc DEPENDENCY_OF SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e Relationship: SPDXRef-Package-apk-libc-utils-caef79f1fe0b500a OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576 RelationshipComment: evident-by: indicates the package's existence is evident by the given file Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 CONTAINS SPDXRef-File-lib-ld-musl-x86-64.so.1-5ad847e8604b23e1 Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 DEPENDENCY_OF SPDXRef-Package-apk-libssl3-68a3488610dc68e4 Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 DEPENDENCY_OF SPDXRef-Package-apk-scanelf-701300eef0967970 Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 DEPENDENCY_OF SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576 RelationshipComment: evident-by: indicates the package's existence is evident by the given file Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 DEPENDENCY_OF SPDXRef-Package-apk-ssl-client-bdbab9ee97709e2f Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 DEPENDENCY_OF SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 DEPENDENCY_OF SPDXRef-Package-apk-zlib-c8e7fc9f117e52bc Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 DEPENDENCY_OF SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6 Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 DEPENDENCY_OF SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 DEPENDENCY_OF SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e Relationship: SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6 CONTAINS SPDXRef-File-usr-bin-iconv-7b57b994c8fad373 Relationship: SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6 CONTAINS SPDXRef-File-usr-bin-getconf-7cadf888d599b703 Relationship: SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6 CONTAINS SPDXRef-File-usr-bin-getent-9c2b285b89b30224 Relationship: SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6 OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576 RelationshipComment: evident-by: indicates the package's existence is evident by the given file Relationship: SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6 DEPENDENCY_OF SPDXRef-Package-apk-libc-utils-caef79f1fe0b500a Relationship: SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6 CONTAINS SPDXRef-File-usr-bin-ldd-f96cd15718733827 Relationship: SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6 CONTAINS SPDXRef-File-sbin-ldconfig-f9eb672d705c4ffb Relationship: SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e CONTAINS SPDXRef-File-lib-libapk.so.2.14.0-129245a9da03e559 Relationship: SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e CONTAINS SPDXRef-File-sbin-apk-9b57c4594cbb1250 Relationship: SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576 RelationshipComment: evident-by: indicates the package's existence is evident by the given file Relationship: SPDXRef-Package-apk-ca-certificates-bundle-e6d1b63d5a046c55 CONTAINS SPDXRef-File-etc-ssl-certs-ca-certificates.crt-4dfa0b7cc6ad42d7 Relationship: SPDXRef-Package-apk-ca-certificates-bundle-e6d1b63d5a046c55 OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576 RelationshipComment: evident-by: indicates the package's existence is evident by the given file Relationship: SPDXRef-Package-apk-ca-certificates-bundle-e6d1b63d5a046c55 DEPENDENCY_OF SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-busybox-binsh-b8384340b5c5b8ca Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-ca-certificates-bundle-e6d1b63d5a046c55 Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-libc-utils-caef79f1fe0b500a Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-libssl3-68a3488610dc68e4 Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-musl-cb940afce7c7e0d3 Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6 Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-scanelf-701300eef0967970 Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-ssl-client-bdbab9ee97709e2f Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-zlib-c8e7fc9f117e52bc Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-DocumentRoot-Image-alpine 07070100000047000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000002400000000grant-0.2.1/fixtures/archive-builds07070100000048000081A4000000000000000000000001668D56C30000005B000000000000000000000000000000000000002F00000000grant-0.2.1/fixtures/archive-builds/.gitignore/packages/* # maven when running in a volume may spit out directories like this **/\?/ \?/07070100000049000081A4000000000000000000000001668D56C3000001F9000000000000000000000000000000000000002D00000000grant-0.2.1/fixtures/archive-builds/MakefilePKGSDIR=packages ifndef PKGSDIR $(error PKGSDIR is not set) endif clean: clean-examples rm -f $(PKGSDIR)/* jars: $(PKGSDIR)/example-java-app-maven-0.1.0.jar archives: $(PKGSDIR)/example-java-app-maven-0.1.0.zip $(PKGSDIR)/example-java-app-maven-0.1.0.zip: $(PKGSDIR)/example-java-app-maven-0.1.0.jar zip $(PKGSDIR)/example-java-app-maven-0.1.0.zip $(PKGSDIR)/example-java-app-maven-0.1.0.jar # Maven... $(PKGSDIR)/example-java-app-maven-0.1.0.jar: ./build-example-java-app-maven.sh $(PKGSDIR)0707010000004A000081ED000000000000000000000001668D56C3000001DD000000000000000000000000000000000000004400000000grant-0.2.1/fixtures/archive-builds/build-example-java-app-maven.sh#!/usr/bin/env bash set -uxe PKGSDIR=$1 CTRID=$(docker create -u "$(id -u):$(id -g)" -e MAVEN_CONFIG=/tmp/.m2 -v /example-java-app -w /example-java-app maven:3.8.6-openjdk-18 mvn -Duser.home=/tmp -DskipTests package) function cleanup() { docker rm "${CTRID}" } trap cleanup EXIT set +e docker cp "$(pwd)/example-java-app" "${CTRID}:/" docker start -a "${CTRID}" mkdir -p "$PKGSDIR" docker cp "${CTRID}:/example-java-app/target/example-java-app-maven-0.1.0.jar" "$PKGSDIR"0707010000004B000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000003500000000grant-0.2.1/fixtures/archive-builds/example-java-app0707010000004C000081A4000000000000000000000001668D56C30000006F000000000000000000000000000000000000004000000000grant-0.2.1/fixtures/archive-builds/example-java-app/.gitignore# maven build creates this when in a container volume /?/ /.gradle/ /build/ target/ dependency-reduced-pom.xml 0707010000004D000081A4000000000000000000000001668D56C3000004CA000000000000000000000000000000000000004200000000grant-0.2.1/fixtures/archive-builds/example-java-app/build.gradleplugins { id 'java' id 'eclipse' id 'application' } mainClassName = 'hello.HelloWorld' dependencyLocking { lockAllConfigurations() } // tag::repositories[] repositories { mavenCentral() } // end::repositories[] // tag::dependencies[] sourceCompatibility = 1.8 targetCompatibility = 1.8 dependencies { implementation "joda-time:joda-time:2.2" testImplementation "junit:junit:4.12" } // end::dependencies[] // tag::jar[] jar { archivesBaseName = 'example-java-app-gradle' version = '0.1.0' manifest { attributes( 'Main-Class': 'hello.HelloWorld' ) } from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } } // end::jar[] // tag::wrapper[] // end::wrapper[] // to invoke: gradle resolveAndLockAll --write-locks tasks.register('resolveAndLockAll') { notCompatibleWithConfigurationCache("Filters configurations at execution time") doFirst { assert gradle.startParameter.writeDependencyLocks } doLast { configurations.findAll { // Add any custom filtering on the configurations to be resolved it.canBeResolved }.each { it.resolve() } } } 0707010000004E000081A4000000000000000000000001668D56C3000001C2000000000000000000000000000000000000004500000000grant-0.2.1/fixtures/archive-builds/example-java-app/gradle.lockfile# This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. joda-time:joda-time:2.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath junit:junit:4.12=testCompileClasspath,testRuntimeClasspath org.hamcrest:hamcrest-core:1.3=testCompileClasspath,testRuntimeClasspath empty=annotationProcessor,testAnnotationProcessor 0707010000004F000081A4000000000000000000000001668D56C30000062E000000000000000000000000000000000000003D00000000grant-0.2.1/fixtures/archive-builds/example-java-app/pom.xml<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.anchore</groupId> <artifactId>example-java-app-maven</artifactId> <packaging>jar</packaging> <version>0.1.0</version> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <!-- tag::joda[] --> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.9.2</version> </dependency> <!-- end::joda[] --> <!-- tag::junit[] --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- end::junit[] --> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>hello.HelloWorld</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build> </project> 07070100000050000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000003900000000grant-0.2.1/fixtures/archive-builds/example-java-app/src07070100000051000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000003E00000000grant-0.2.1/fixtures/archive-builds/example-java-app/src/main07070100000052000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000004300000000grant-0.2.1/fixtures/archive-builds/example-java-app/src/main/java07070100000053000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000004900000000grant-0.2.1/fixtures/archive-builds/example-java-app/src/main/java/hello07070100000054000081A4000000000000000000000001668D56C300000061000000000000000000000000000000000000005600000000grant-0.2.1/fixtures/archive-builds/example-java-app/src/main/java/hello/Greeter.javapackage hello; public class Greeter { public String sayHello() { return "Hello world!"; } } 07070100000055000081A4000000000000000000000001668D56C300000136000000000000000000000000000000000000005900000000grant-0.2.1/fixtures/archive-builds/example-java-app/src/main/java/hello/HelloWorld.javapackage hello; import org.joda.time.LocalTime; public class HelloWorld { public static void main(String[] args) { LocalTime currentTime = new LocalTime(); System.out.println("The current local time is: " + currentTime); Greeter greeter = new Greeter(); System.out.println(greeter.sayHello()); } } 07070100000056000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001E00000000grant-0.2.1/fixtures/licenses07070100000057000081A4000000000000000000000001668D56C30000042B000000000000000000000000000000000000002200000000grant-0.2.1/fixtures/licenses/MITCopyright <YEAR> <COPYRIGHT HOLDER> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the âSoftwareâ), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED âAS ISâ, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.07070100000058000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001E00000000grant-0.2.1/fixtures/multiple07070100000059000081A4000000000000000000000001668D56C30000863E000000000000000000000000000000000000002200000000grant-0.2.1/fixtures/multiple/gplGNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright Š 2007 Free Software Foundation, Inc. <https://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work classifierResults from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the program's name and a brief idea of what it does.> Copyright (C) <year> <name of author> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: <program> Copyright (C) <year> <name of author> This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see <https://www.gnu.org/licenses/>. The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <https: //www.gnu.org/licenses/why-not-lgpl.html>.0707010000005A000081A4000000000000000000000001668D56C300002CB6000000000000000000000000000000000000001300000000grant-0.2.1/go.modmodule github.com/anchore/grant go 1.22.4 require ( github.com/anchore/bubbly v0.0.0-20231115205105-6542675d79fe github.com/anchore/clio v0.0.0-20240522144804-d81e109008aa github.com/anchore/go-collections v0.0.0-20240216171411-9321230ce537 github.com/anchore/go-logger v0.0.0-20230725134548-c21dafa1ec5a github.com/anchore/stereoscope v0.0.3-0.20240501181043-2e9894674185 github.com/anchore/syft v1.8.0 github.com/charmbracelet/bubbletea v0.26.6 github.com/charmbracelet/lipgloss v0.11.0 github.com/github/go-spdx/v2 v2.3.1 github.com/gkampitakis/go-snaps v0.5.4 github.com/gobwas/glob v0.2.3 github.com/google/go-cmp v0.6.0 github.com/google/licenseclassifier/v2 v2.0.0 github.com/google/uuid v1.6.0 github.com/gookit/color v1.5.4 github.com/hashicorp/go-multierror v1.1.1 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/mitchellh/go-homedir v1.1.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.8.1 github.com/stretchr/testify v1.9.0 github.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651 github.com/wagoodman/go-progress v0.0.0-20230925121702-07e42b3cdba0 ) require ( dario.cat/mergo v1.0.0 // indirect github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0 // indirect github.com/BurntSushi/toml v1.4.0 // indirect github.com/CycloneDX/cyclonedx-go v0.9.0 // indirect github.com/DataDog/zstd v1.5.5 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/semver/v3 v3.2.0 // indirect github.com/Masterminds/sprig/v3 v3.2.3 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/Microsoft/hcsshim v0.11.4 // indirect github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d // indirect github.com/acobaugh/osrelease v0.1.0 // indirect github.com/adrg/xdg v0.4.0 // indirect github.com/anchore/fangs v0.0.0-20240508143433-f016b099950f // indirect github.com/anchore/go-macholibre v0.0.0-20220308212642-53e6d0aaf6fb // indirect github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 // indirect github.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b // indirect github.com/anchore/packageurl-go v0.1.1-0.20240507183024-848e011fc24f // indirect github.com/andybalholm/brotli v1.0.4 // indirect github.com/aquasecurity/go-pep440-version v0.0.0-20210121094942-22b2f8951d46 // indirect github.com/aquasecurity/go-version v0.0.0-20210121072130-637058cfe492 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/becheran/wildmatch-go v1.0.0 // indirect github.com/bmatcuk/doublestar/v4 v4.6.1 // indirect github.com/charmbracelet/bubbles v0.18.0 // indirect github.com/charmbracelet/harmonica v0.2.0 // indirect github.com/charmbracelet/x/ansi v0.1.2 // indirect github.com/charmbracelet/x/input v0.1.0 // indirect github.com/charmbracelet/x/term v0.1.1 // indirect github.com/charmbracelet/x/windows v0.1.0 // indirect github.com/cloudflare/circl v1.3.8 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/containerd/containerd v1.7.11 // indirect github.com/containerd/continuity v0.4.2 // indirect github.com/containerd/fifo v1.1.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect github.com/containerd/ttrpc v1.2.2 // indirect github.com/containerd/typeurl/v2 v2.1.1 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/deitch/magic v0.0.0-20230404182410-1ff89d7342da // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/cli v24.0.0+incompatible // indirect github.com/docker/distribution v2.8.3+incompatible // indirect github.com/docker/docker v26.1.4+incompatible // indirect github.com/docker/docker-credential-helpers v0.7.0 // indirect github.com/docker/go-connections v0.4.0 // indirect github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/edsrzf/mmap-go v1.1.0 // indirect github.com/elliotchance/phpserialize v1.4.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect github.com/facebookincubator/nvdtools v0.1.5 // indirect github.com/felixge/fgprof v0.9.3 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gabriel-vasile/mimetype v1.4.0 // indirect github.com/gkampitakis/ciinfo v0.3.0 // indirect github.com/gkampitakis/go-diff v1.3.2 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-git/go-git/v5 v5.12.0 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-restruct/restruct v1.2.0-alpha // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/go-containerregistry v0.19.2 // indirect github.com/google/licensecheck v0.3.1 // indirect github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/huandu/xstrings v1.3.3 // indirect github.com/iancoleman/strcase v0.3.0 // indirect github.com/imdario/mergo v0.3.15 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jinzhu/copier v0.4.0 // indirect github.com/kastenhq/goversion v0.0.0-20230811215019-93b2f8823953 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/klauspost/compress v1.17.8 // indirect github.com/klauspost/pgzip v1.2.5 // indirect github.com/knqyf263/go-rpmdb v0.1.1 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/maruel/natural v1.1.1 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-localereader v0.0.2-0.20220822084749-2491eb6c1c75 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect github.com/mholt/archiver/v3 v3.5.1 // indirect github.com/microsoft/go-rustaudit v0.0.0-20220730194248-4b17361d90a5 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/locker v1.0.1 // indirect github.com/moby/sys/mountinfo v0.7.1 // indirect github.com/moby/sys/sequential v0.5.0 // indirect github.com/moby/sys/signal v0.7.0 // indirect github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect github.com/muesli/cancelreader v0.2.2 // indirect github.com/muesli/reflow v0.3.0 // indirect github.com/muesli/termenv v0.15.2 // indirect github.com/nwaples/rardecode v1.1.0 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0-rc3 // indirect github.com/opencontainers/runc v1.1.12 // indirect github.com/opencontainers/runtime-spec v1.1.0-rc.1 // indirect github.com/opencontainers/selinux v1.11.0 // indirect github.com/pborman/indent v1.2.1 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/pierrec/lz4/v4 v4.1.15 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pkg/profile v1.7.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/saferwall/pe v1.5.3 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d // indirect github.com/sassoftware/go-rpmutils v0.4.0 // indirect github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e // indirect github.com/secDre4mer/pkcs7 v0.0.0-20240322103146-665324a4461d // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/shopspring/decimal v1.2.0 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/skeema/knownhosts v1.2.2 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spdx/tools-golang v0.5.4 // indirect github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.6.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.18.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/sylabs/sif/v2 v2.11.5 // indirect github.com/sylabs/squashfs v0.6.1 // indirect github.com/therootcompany/xz v1.0.1 // indirect github.com/tidwall/gjson v1.17.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect github.com/ulikunitz/xz v0.5.12 // indirect github.com/vbatts/go-mtree v0.5.4 // indirect github.com/vbatts/tar-split v0.11.3 // indirect github.com/vifraa/gopom v1.0.0 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 // indirect go.opentelemetry.io/otel v1.19.0 // indirect go.opentelemetry.io/otel/metric v1.19.0 // indirect go.opentelemetry.io/otel/trace v1.19.0 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.9.0 // indirect golang.org/x/crypto v0.24.0 // indirect golang.org/x/exp v0.0.0-20231108232855-2478ac86f678 // indirect golang.org/x/mod v0.18.0 // indirect golang.org/x/net v0.26.0 // indirect golang.org/x/sync v0.7.0 // indirect golang.org/x/sys v0.21.0 // indirect golang.org/x/term v0.21.0 // indirect golang.org/x/text v0.16.0 // indirect golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect google.golang.org/grpc v1.59.0 // indirect google.golang.org/protobuf v1.33.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) 0707010000005B000081A4000000000000000000000001668D56C3000207CC000000000000000000000000000000000000001300000000grant-0.2.1/go.sumcloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0 h1:59MxjQVfjXsBpLy+dbd2/ELV5ofnUkUZBvWSC85sheA= github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0/go.mod h1:OahwfttHWG6eJ0clwcfBAHoDI6X/LV/15hx/wlMZSrU= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/CycloneDX/cyclonedx-go v0.9.0 h1:inaif7qD8bivyxp7XLgxUYtOXWtDez7+j72qKTMQTb8= github.com/CycloneDX/cyclonedx-go v0.9.0/go.mod h1:NE/EWvzELOFlG6+ljX/QeMlVt9VKcTwu8u0ccsACEsw= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g= github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8= github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo= github.com/acobaugh/osrelease v0.1.0 h1:Yb59HQDGGNhCj4suHaFQQfBps5wyoKLSSX/J/+UifRE= github.com/acobaugh/osrelease v0.1.0/go.mod h1:4bFEs0MtgHNHBrmHCt67gNisnabCRAlzdVasCEGHTWY= github.com/adrg/xdg v0.4.0 h1:RzRqFcjH4nE5C6oTAxhBtoE2IRyjBSa62SCbyPidvls= github.com/adrg/xdg v0.4.0/go.mod h1:N6ag73EX4wyxeaoeHctc1mas01KZgsj5tYiAIwqJE/E= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/anchore/bubbly v0.0.0-20231115205105-6542675d79fe h1:rwiy/2r9T+u3QC+NfgeOQYCIW17K2eRkCBrdhZQZRXw= github.com/anchore/bubbly v0.0.0-20231115205105-6542675d79fe/go.mod h1:nekzxXIKkGtOPbvT5NqW3MSMChe24hBhW82aBI+35T0= github.com/anchore/clio v0.0.0-20240522144804-d81e109008aa h1:pwlAn4O9SBUnlgfa69YcqIynbUyobLVFYu8HxSoCffA= github.com/anchore/clio v0.0.0-20240522144804-d81e109008aa/go.mod h1:nD3H5uIvjxlfmakOBgtyFQbk5Zjp3l538kxfpHPslzI= github.com/anchore/fangs v0.0.0-20240508143433-f016b099950f h1:NOhzafCyNYFi88qxkBFjMzQo4dRa1vDhBzx+0Uovx8Q= github.com/anchore/fangs v0.0.0-20240508143433-f016b099950f/go.mod h1:sVpRS2yNCw6tLVpvA1QSDVWTJVpCuAm8JNZgn4Sjz/k= github.com/anchore/go-collections v0.0.0-20240216171411-9321230ce537 h1:GjNGuwK5jWjJMyVppBjYS54eOiiSNv4Ba869k4wh72Q= github.com/anchore/go-collections v0.0.0-20240216171411-9321230ce537/go.mod h1:1aiktV46ATCkuVg0O573ZrH56BUawTECPETbZyBcqT8= github.com/anchore/go-logger v0.0.0-20230725134548-c21dafa1ec5a h1:nJ2G8zWKASyVClGVgG7sfM5mwoZlZ2zYpIzN2OhjWkw= github.com/anchore/go-logger v0.0.0-20230725134548-c21dafa1ec5a/go.mod h1:ubLFmlsv8/DFUQrZwY5syT5/8Er3ugSr4rDFwHsE3hg= github.com/anchore/go-macholibre v0.0.0-20220308212642-53e6d0aaf6fb h1:iDMnx6LIjtjZ46C0akqveX83WFzhpTD3eqOthawb5vU= github.com/anchore/go-macholibre v0.0.0-20220308212642-53e6d0aaf6fb/go.mod h1:DmTY2Mfcv38hsHbG78xMiTDdxFtkHpgYNVDPsF2TgHk= github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 h1:aM1rlcoLz8y5B2r4tTLMiVTrMtpfY0O8EScKJxaSaEc= github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092/go.mod h1:rYqSE9HbjzpHTI74vwPvae4ZVYZd1lue2ta6xHPdblA= github.com/anchore/go-testutils v0.0.0-20200925183923-d5f45b0d3c04 h1:VzprUTpc0vW0nnNKJfJieyH/TZ9UYAnTZs5/gHTdAe8= github.com/anchore/go-testutils v0.0.0-20200925183923-d5f45b0d3c04/go.mod h1:6dK64g27Qi1qGQZ67gFmBFvEHScy0/C8qhQhNe5B5pQ= github.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b h1:e1bmaoJfZVsCYMrIZBpFxwV26CbsuoEh5muXD5I1Ods= github.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b/go.mod h1:Bkc+JYWjMCF8OyZ340IMSIi2Ebf3uwByOk6ho4wne1E= github.com/anchore/packageurl-go v0.1.1-0.20240507183024-848e011fc24f h1:B/E9ixKNCasntpoch61NDaQyGPDXLEJlL+B9B/PbdbA= github.com/anchore/packageurl-go v0.1.1-0.20240507183024-848e011fc24f/go.mod h1:Blo6OgJNiYF41ufcgHKkbCKF2MDOMlrqhXv/ij6ocR4= github.com/anchore/stereoscope v0.0.3-0.20240501181043-2e9894674185 h1:SuViDJ27nZ+joGdKbAkxAlm7tYMt9NTxTZZ05po4hls= github.com/anchore/stereoscope v0.0.3-0.20240501181043-2e9894674185/go.mod h1:ckIamHiRMp8iBwWoTtE5Xkt9VQ5QC+6+O4VzwqyZr5Q= github.com/anchore/syft v1.8.0 h1:J4QSQEYWdT/B62O+zh+m6hceS7fZd18zcO+Ov/rDvYw= github.com/anchore/syft v1.8.0/go.mod h1:8aanszd+QYEmhRIUxARXjXpVsgspsIGkPJp7a82C8P0= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/andybalholm/brotli v1.0.1/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/aquasecurity/go-pep440-version v0.0.0-20210121094942-22b2f8951d46 h1:vmXNl+HDfqqXgr0uY1UgK1GAhps8nbAAtqHNBcgyf+4= github.com/aquasecurity/go-pep440-version v0.0.0-20210121094942-22b2f8951d46/go.mod h1:olhPNdiiAAMiSujemd1O/sc6GcyePr23f/6uGKtthNg= github.com/aquasecurity/go-version v0.0.0-20210121072130-637058cfe492 h1:rcEG5HI490FF0a7zuvxOxen52ddygCfNVjP0XOCMl+M= github.com/aquasecurity/go-version v0.0.0-20210121072130-637058cfe492/go.mod h1:9Beu8XsUNNfzml7WBf3QmyPToP1wm1Gj/Vc5UJKqTzU= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/becheran/wildmatch-go v1.0.0 h1:mE3dGGkTmpKtT4Z+88t8RStG40yN9T+kFEGj2PZFSzA= github.com/becheran/wildmatch-go v1.0.0/go.mod h1:gbMvj0NtVdJ15Mg/mH9uxk2R1QCistMyU7d9KFzroX4= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bmatcuk/doublestar/v4 v4.6.1 h1:FH9SifrbvJhnlQpztAx++wlkk70QBf0iBWDwNy7PA4I= github.com/bmatcuk/doublestar/v4 v4.6.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bradleyjkemp/cupaloy/v2 v2.8.0 h1:any4BmKE+jGIaMpnU8YgH/I2LPiLBufr6oMMlVBbn9M= github.com/bradleyjkemp/cupaloy/v2 v2.8.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1lps46Enkdqw6aRX0= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charmbracelet/bubbles v0.18.0 h1:PYv1A036luoBGroX6VWjQIE9Syf2Wby2oOl/39KLfy0= github.com/charmbracelet/bubbles v0.18.0/go.mod h1:08qhZhtIwzgrtBjAcJnij1t1H0ZRjwHyGsy6AL11PSw= github.com/charmbracelet/bubbletea v0.26.6 h1:zTCWSuST+3yZYZnVSvbXwKOPRSNZceVeqpzOLN2zq1s= github.com/charmbracelet/bubbletea v0.26.6/go.mod h1:dz8CWPlfCCGLFbBlTY4N7bjLiyOGDJEnd2Muu7pOWhk= github.com/charmbracelet/harmonica v0.2.0 h1:8NxJWRWg/bzKqqEaaeFNipOu77YR5t8aSwG4pgaUBiQ= github.com/charmbracelet/harmonica v0.2.0/go.mod h1:KSri/1RMQOZLbw7AHqgcBycp8pgJnQMYYT8QZRqZ1Ao= github.com/charmbracelet/lipgloss v0.11.0 h1:UoAcbQ6Qml8hDwSWs0Y1cB5TEQuZkDPH/ZqwWWYTG4g= github.com/charmbracelet/lipgloss v0.11.0/go.mod h1:1UdRTH9gYgpcdNN5oBtjbu/IzNKtzVtb7sqN1t9LNn8= github.com/charmbracelet/x/ansi v0.1.2 h1:6+LR39uG8DE6zAmbu023YlqjJHkYXDF1z36ZwzO4xZY= github.com/charmbracelet/x/ansi v0.1.2/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw= github.com/charmbracelet/x/input v0.1.0 h1:TEsGSfZYQyOtp+STIjyBq6tpRaorH0qpwZUj8DavAhQ= github.com/charmbracelet/x/input v0.1.0/go.mod h1:ZZwaBxPF7IG8gWWzPUVqHEtWhc1+HXJPNuerJGRGZ28= github.com/charmbracelet/x/term v0.1.1 h1:3cosVAiPOig+EV4X9U+3LDgtwwAoEzJjNdwbXDjF6yI= github.com/charmbracelet/x/term v0.1.1/go.mod h1:wB1fHt5ECsu3mXYusyzcngVWWlu1KKUmmLhfgr/Flxw= github.com/charmbracelet/x/windows v0.1.0 h1:gTaxdvzDM5oMa/I2ZNF7wN78X/atWemG9Wph7Ika2k4= github.com/charmbracelet/x/windows v0.1.0/go.mod h1:GLEO/l+lizvFDBPLIOk+49gdX49L9YWMB5t+DZd0jkQ= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cloudflare/circl v1.3.8 h1:j+V8jJt09PoeMFIu2uh5JUyEaIHTXVOHslFoLNAKqwI= github.com/cloudflare/circl v1.3.8/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= github.com/containerd/containerd v1.7.11 h1:lfGKw3eU35sjV0aG2eYZTiwFEY1pCzxdzicHP3SZILw= github.com/containerd/containerd v1.7.11/go.mod h1:5UluHxHTX2rdvYuZ5OJTC5m/KJNs0Zs9wVoJm9zf5ZE= github.com/containerd/continuity v0.4.2 h1:v3y/4Yz5jwnvqPKJJ+7Wf93fyWoCB3F5EclWG023MDM= github.com/containerd/continuity v0.4.2/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY= github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/containerd/stargz-snapshotter/estargz v0.14.3 h1:OqlDCK3ZVUO6C3B/5FSkDwbkEETK84kQgEeFwDC+62k= github.com/containerd/stargz-snapshotter/estargz v0.14.3/go.mod h1:KY//uOCIkSuNAHhJogcZtrNHdKrA99/FCCRjE3HD36o= github.com/containerd/ttrpc v1.2.2 h1:9vqZr0pxwOF5koz6N0N3kJ0zDHokrcPxIR/ZR2YFtOs= github.com/containerd/ttrpc v1.2.2/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf1G5tYZak= github.com/containerd/typeurl/v2 v2.1.1 h1:3Q4Pt7i8nYwy2KmQWIw2+1hTvwTE/6w9FqcttATPO/4= github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/deitch/magic v0.0.0-20230404182410-1ff89d7342da h1:ZOjWpVsFZ06eIhnh4mkaceTiVoktdU67+M7KDHJ268M= github.com/deitch/magic v0.0.0-20230404182410-1ff89d7342da/go.mod h1:B3tI9iGHi4imdLi4Asdha1Sc6feLMTfPLXh9IUYmysk= github.com/dgrijalva/jwt-go/v4 v4.0.0-preview1/go.mod h1:+hnT3ywWDTAFrW5aE+u2Sa/wT555ZqwoCS+pk3p6ry4= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/cli v24.0.0+incompatible h1:0+1VshNwBQzQAx9lOl+OYCTCEAD8fKs/qeXMx3O0wqM= github.com/docker/cli v24.0.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v26.1.4+incompatible h1:vuTpXDuoga+Z38m1OZHzl7NKisKWaWlhjQk7IDPSLsU= github.com/docker/docker v26.1.4+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 h1:iFaUwBSo5Svw6L7HYpRu/0lE3e0BaElwnNO1qkNQxBY= github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s= github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ= github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/elliotchance/phpserialize v1.4.0 h1:cAp/9+KSnEbUC8oYCE32n2n84BeW8HOY3HMDI8hG2OY= github.com/elliotchance/phpserialize v1.4.0/go.mod h1:gt7XX9+ETUcLXbtTKEuyrqW3lcLUAeS/AnGZ2e49TZs= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4= github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM= github.com/facebookincubator/flog v0.0.0-20190930132826-d2511d0ce33c/go.mod h1:QGzNH9ujQ2ZUr/CjDGZGWeDAVStrWNjHeEcjJL96Nuk= github.com/facebookincubator/nvdtools v0.1.5 h1:jbmDT1nd6+k+rlvKhnkgMokrCAzHoASWE5LtHbX2qFQ= github.com/facebookincubator/nvdtools v0.1.5/go.mod h1:Kh55SAWnjckS96TBSrXI99KrEKH4iB0OJby3N8GRJO4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/set v0.2.1 h1:nn2CaJyknWE/6txyUDGwysr3G5QC6xWB/PtVjPBbeaA= github.com/fatih/set v0.2.1/go.mod h1:+RKtMCH+favT2+3YecHGxcc0b4KyVWA1QWWJUs4E0CI= github.com/felixge/fgprof v0.9.3 h1:VvyZxILNuCiUCSXtPtYmmtGvb65nqXh2QFWc0Wpf2/g= github.com/felixge/fgprof v0.9.3/go.mod h1:RdbpDgzqYVh/T9fPELJyV7EYJuHB55UTEULNun8eiPw= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gabriel-vasile/mimetype v1.4.0 h1:Cn9dkdYsMIu56tGho+fqzh7XmvY2YyGU0FnbhiOsEro= github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/github/go-spdx/v2 v2.3.1 h1:ffGuHTbHuHzWPt53n8f9o8clGutuLPObo3zB4JAjxU8= github.com/github/go-spdx/v2 v2.3.1/go.mod h1:2ZxKsOhvBp+OYBDlsGnUMcchLeo2mrpEBn2L1C+U3IQ= github.com/gkampitakis/ciinfo v0.3.0 h1:gWZlOC2+RYYttL0hBqcoQhM7h1qNkVqvRCV1fOvpAv8= github.com/gkampitakis/ciinfo v0.3.0/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= github.com/gkampitakis/go-snaps v0.5.4 h1:GX+dkKmVsRenz7SoTbdIEL4KQARZctkMiZ8ZKprRwT8= github.com/gkampitakis/go-snaps v0.5.4/go.mod h1:ZABkO14uCuVxBHAXAfKG+bqNz+aa1bGPAg8jkI0Nk8Y= github.com/glebarez/go-sqlite v1.20.3 h1:89BkqGOXR9oRmG58ZrzgoY/Fhy5x0M+/WV48U5zVrZ4= github.com/glebarez/go-sqlite v1.20.3/go.mod h1:u3N6D/wftiAzIOJtZl6BmedqxmmkDfH3q+ihjqxC9u0= github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-restruct/restruct v1.2.0-alpha h1:2Lp474S/9660+SJjpVxoKuWX09JsXHSrdV7Nv3/gkvc= github.com/go-restruct/restruct v1.2.0-alpha/go.mod h1:KqrpKpn4M8OLznErihXTGLlsXFGeLxHUrLRRI/1YjGk= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U= github.com/go-test/deep v1.1.1/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-containerregistry v0.19.2 h1:TannFKE1QSajsP6hPWb5oJNgKe1IKjHukIKDUmvsV6w= github.com/google/go-containerregistry v0.19.2/go.mod h1:YCMFNQeeXeLF+dnhhWkqDItx/JSkH01j1Kis4PsjzFI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/licensecheck v0.3.1 h1:QoxgoDkaeC4nFrtGN1jV7IPmDCHFNIVh54e5hSt6sPs= github.com/google/licensecheck v0.3.1/go.mod h1:ORkR35t/JjW+emNKtfJDII0zlciG9JgbT7SmsohlHmY= github.com/google/licenseclassifier/v2 v2.0.0 h1:1Y57HHILNf4m0ABuMVb6xk4vAJYEUO0gDxNpog0pyeA= github.com/google/licenseclassifier/v2 v2.0.0/go.mod h1:cOjbdH0kyC9R22sdQbYsFkto4NGCAc+ZSwbeThazEtM= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd h1:gbpYu9NMq8jhDVbvlGkMFWCjLFlqqEZjEmObmhUy6Vo= github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= github.com/gookit/color v1.2.5/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg= github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0= github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4= github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jedib0t/go-pretty/v6 v6.5.9 h1:ACteMBRrrmm1gMsXe9PSTOClQ63IXDUt03H5U+UV8OU= github.com/jedib0t/go-pretty/v6 v6.5.9/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8= github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kastenhq/goversion v0.0.0-20230811215019-93b2f8823953 h1:WdAeg/imY2JFPc/9CST4bZ80nNJbiBFCAdSZCSgrS5Y= github.com/kastenhq/goversion v0.0.0-20230811215019-93b2f8823953/go.mod h1:6o+UrvuZWc4UTyBhQf0LGjW9Ld7qJxLz/OqvSOWWlEc= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.11.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/pgzip v1.2.5 h1:qnWYvvKqedOF2ulHpMG72XQol4ILEJ8k2wwRl/Km8oE= github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/knqyf263/go-rpmdb v0.1.1 h1:oh68mTCvp1XzxdU7EfafcWzzfstUZAEa3MW0IJye584= github.com/knqyf263/go-rpmdb v0.1.1/go.mod h1:9LQcoMCMQ9vrF7HcDtXfvqGO4+ddxFQ8+YF/0CVGDww= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381 h1:bqDmpDG49ZRnB5PcgP0RXtQvnMSgIF14M7CBd2shtXs= github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-localereader v0.0.2-0.20220822084749-2491eb6c1c75 h1:P8UmIzZMYDR+NGImiFvErt6VWfIRPuGM+vyjiEdkmIw= github.com/mattn/go-localereader v0.0.2-0.20220822084749-2491eb6c1c75/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/mholt/archiver/v3 v3.5.1 h1:rDjOBX9JSF5BvoJGvjqK479aL70qh9DIpZCl+k7Clwo= github.com/mholt/archiver/v3 v3.5.1/go.mod h1:e3dqJ7H78uzsRSEACH1joayhuSyhnonssnDhppzS1L4= github.com/microsoft/go-rustaudit v0.0.0-20220730194248-4b17361d90a5 h1:tQRHcLQwnwrPq2j2Qra/NnyjyESBGwdeBeVdAE9kXYg= github.com/microsoft/go-rustaudit v0.0.0-20220730194248-4b17361d90a5/go.mod h1:vYT9HE7WCvL64iVeZylKmCsWKfE+JZ8105iuh2Trk8g= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4= github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/sys/mountinfo v0.7.1 h1:/tTvQaSJRr2FshkhXiIpux6fQ2Zvc4j7tAhMTStAG2g= github.com/moby/sys/mountinfo v0.7.1/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI= github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI= github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo= github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= github.com/nwaples/rardecode v1.1.0 h1:vSxaY8vQhOcVr4mm5e8XllHWTiM4JF507A0Katqw7MQ= github.com/nwaples/rardecode v1.1.0/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0-rc3 h1:fzg1mXZFj8YdPeNkRXMg+zb88BFV0Ys52cJydRwBkb8= github.com/opencontainers/image-spec v1.1.0-rc3/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss= github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= github.com/opencontainers/runtime-spec v1.1.0-rc.1 h1:wHa9jroFfKGQqFHj0I1fMRKLl0pfj+ynAqBxo3v6u9w= github.com/opencontainers/runtime-spec v1.1.0-rc.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU= github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/indent v1.2.1 h1:lFiviAbISHv3Rf0jcuh489bi06hj98JsVMtIDZQb9yM= github.com/pborman/indent v1.2.1/go.mod h1:FitS+t35kIYtB5xWTZAPhnmrxcciEEOdbyrrpz5K6Vw= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/pierrec/lz4/v4 v4.1.2/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0= github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.7.0 h1:hnbDkaNWPCLMO9wGLdBFTIZvzDrDfBM2072E1S9gJkA= github.com/pkg/profile v1.7.0/go.mod h1:8Uer0jas47ZQMJ7VD+OHknK4YDY07LPUC6dEvqDjvNo= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/saferwall/pe v1.5.3 h1:tZ2KJWeJK6N2jjJx+B9hm+wq6qe0o56pql2PXUaQ9eI= github.com/saferwall/pe v1.5.3/go.mod h1:mJx+PuptmNpoPFBNhWs/uDMFL/kTHVZIkg0d4OUJFbQ= github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig= github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/sahilm/fuzzy v0.1.1-0.20230530133925-c48e322e2a8f h1:MvTmaQdww/z0Q4wrYjDSCcZ78NoftLQyHBSLW/Cx79Y= github.com/sahilm/fuzzy v0.1.1-0.20230530133925-c48e322e2a8f/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y= github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d h1:hrujxIzL1woJ7AwssoOcM/tq5JjjG2yYOc8odClEiXA= github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU= github.com/sanity-io/litter v1.5.5 h1:iE+sBxPBzoK6uaEP5Lt3fHNgpKcHXc/A2HGETy0uJQo= github.com/sanity-io/litter v1.5.5/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U= github.com/sassoftware/go-rpmutils v0.4.0 h1:ojND82NYBxgwrV+mX1CWsd5QJvvEZTKddtCdFLPWhpg= github.com/sassoftware/go-rpmutils v0.4.0/go.mod h1:3goNWi7PGAT3/dlql2lv3+MSN5jNYPjT5mVcQcIsYzI= github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e h1:7q6NSFZDeGfvvtIRwBrU/aegEYJYmvev0cHAwo17zZQ= github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e/go.mod h1:DkpGd78rljTxKAnTDPFqXSGxvETQnJyuSOQwsHycqfs= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sebdah/goldie/v2 v2.5.3 h1:9ES/mNN+HNUbNWpVAlrzuZ7jE+Nrczbj8uFRjM7624Y= github.com/sebdah/goldie/v2 v2.5.3/go.mod h1:oZ9fp0+se1eapSRjfYbsV/0Hqhbuu3bJVvKI/NNtssI= github.com/secDre4mer/pkcs7 v0.0.0-20240322103146-665324a4461d h1:RQqyEogx5J6wPdoxqL132b100j8KjcVHO1c0KLRoIhc= github.com/secDre4mer/pkcs7 v0.0.0-20240322103146-665324a4461d/go.mod h1:PegD7EVqlN88z7TpCqH92hHP+GBpfomGCCnw1PFtNOA= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spdx/gordf v0.0.0-20201111095634-7098f93598fb/go.mod h1:uKWaldnbMnjsSAXRurWqqrdyZen1R7kxl8TkmWk2OyM= github.com/spdx/tools-golang v0.5.4 h1:fRW4iz16P1ZCUtWStFqS6YiMgnK7WgfTFU/lrsYlvqY= github.com/spdx/tools-golang v0.5.4/go.mod h1:MVIsXx8ZZzaRWNQpUDhC4Dud34edUYJYecciXgrw5vE= github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM= github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/sylabs/sif/v2 v2.11.5 h1:7ssPH3epSonsTrzbS1YxeJ9KuqAN7ISlSM61a7j/mQM= github.com/sylabs/sif/v2 v2.11.5/go.mod h1:GBoZs9LU3e4yJH1dcZ3Akf/jsqYgy5SeguJQC+zd75Y= github.com/sylabs/squashfs v0.6.1 h1:4hgvHnD9JGlYWwT0bPYNt9zaz23mAV3Js+VEgQoRGYQ= github.com/sylabs/squashfs v0.6.1/go.mod h1:ZwpbPCj0ocIvMy2br6KZmix6Gzh6fsGQcCnydMF+Kx8= github.com/terminalstatic/go-xsd-validate v0.1.5 h1:RqpJnf6HGE2CB/lZB1A8BYguk8uRtcvYAPLCF15qguo= github.com/terminalstatic/go-xsd-validate v0.1.5/go.mod h1:18lsvYFofBflqCrvo1umpABZ99+GneNTw2kEEc8UPJw= github.com/therootcompany/xz v1.0.1 h1:CmOtsn1CbtmyYiusbfmhmkpAAETj0wBIH6kCYaX+xzw= github.com/therootcompany/xz v1.0.1/go.mod h1:3K3UH1yCKgBneZYhuQUvJ9HPD19UEXEI0BWbMn8qNMY= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM= github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.9/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc= github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8= github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/vbatts/go-mtree v0.5.4 h1:OMAb8jaCyiFA7zXj0Zc/oARcxBDBoeu2LizjB8BVJl0= github.com/vbatts/go-mtree v0.5.4/go.mod h1:5GqJbVhm9BBiCc4K5uc/c42FPgXulHaQs4sFUEfIWMo= github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RVck= github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY= github.com/vifraa/gopom v1.0.0 h1:L9XlKbyvid8PAIK8nr0lihMApJQg/12OBvMA28BcWh0= github.com/vifraa/gopom v1.0.0/go.mod h1:oPa1dcrGrtlO37WPDBm5SqHAT+wTgF8An1Q71Z6Vv4o= github.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651 h1:jIVmlAFIqV3d+DOxazTR9v+zgj8+VYuQBzPgBZvWBHA= github.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651/go.mod h1:b26F2tHLqaoRQf8DywqzVaV1MQ9yvjb0OMcNl7Nxu20= github.com/wagoodman/go-progress v0.0.0-20230925121702-07e42b3cdba0 h1:0KGbf+0SMg+UFy4e1A/CPVvXn21f1qtWdeJwxZFoQG8= github.com/wagoodman/go-progress v0.0.0-20230925121702-07e42b3cdba0/go.mod h1:jLXFoL31zFaHKAAyZUh+sxiTDFe1L1ZHrcK2T1itVKA= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 h1:x8Z78aZx8cOF0+Kkazoc7lwUNMGy0LrzEMxTm4BbTxg= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0/go.mod h1:62CPTSry9QZtOaSsE3tOzhx6LzDhHnXJ6xHeMNNiM6Q= go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs= go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 h1:IeMeyr1aBvBiPVYihXIaeIZba6b8E1bYp7lbdxK8CQg= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU= go.opentelemetry.io/otel/metric v1.19.0 h1:aTzpGtV0ar9wlV4Sna9sdJyII5jTVJEvKETPiOKwvpE= go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= go.opentelemetry.io/otel/sdk v1.19.0 h1:6USY6zH+L8uMH8L3t1enZPR3WFEmSTADlqldyHtJi3o= go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= go.opentelemetry.io/otel/trace v1.19.0 h1:DFVQmlVbfVeOuBRrwdtaehRrWiL1JoVs9CPIQ1Dzxpg= go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20231108232855-2478ac86f678 h1:mchzmB1XO2pMaKFRqk/+MV3mgGG96aqaPXaMifQU47w= golang.org/x/exp v0.0.0-20231108232855-2478ac86f678/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ= google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo= google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I= google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 h1:5D53IMaUuA5InSeMu9eJtlQXS2NxAhyWQvkKEgXZhHI= modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6/go.mod h1:Qz0X07sNOR1jWYCrJMEnbW/X55x206Q7Vt4mz6/wHp4= modernc.org/libc v1.52.1 h1:uau0VoiT5hnR+SpoWekCKbLqm7v6dhRL3hI+NQhgN3M= modernc.org/libc v1.52.1/go.mod h1:HR4nVzFDSDizP620zcMCgjb1/8xk2lg5p/8yjfGv1IQ= modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= modernc.org/memory v1.8.0 h1:IqGTL6eFMaDZZhEWwcREgeMXYwmW83LYW8cROZYkg+E= modernc.org/memory v1.8.0/go.mod h1:XPZ936zp5OMKGWPqbD3JShgd/ZoQ7899TUuQqxY+peU= modernc.org/sqlite v1.30.1 h1:YFhPVfu2iIgUf9kuA1CR7iiHdcEEsI2i+yjRYHscyxk= modernc.org/sqlite v1.30.1/go.mod h1:DUmsiWQDaAvU4abhc/N+djlom/L2o8f7gZ95RCvyoLU= modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA= modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= 0707010000005C000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001200000000grant-0.2.1/grant0707010000005D000081A4000000000000000000000001668D56C300002DAC000000000000000000000000000000000000001A00000000grant-0.2.1/grant/case.gopackage grant import ( "bytes" "context" "fmt" "io" "io/fs" golog "log" "os" "path/filepath" "strings" "github.com/google/licenseclassifier/v2/tools/identify_license/backend" "github.com/google/licenseclassifier/v2/tools/identify_license/results" "github.com/anchore/go-collections" "github.com/anchore/grant/internal/log" "github.com/anchore/grant/internal/spdxlicense" "github.com/anchore/stereoscope" "github.com/anchore/syft/syft" "github.com/anchore/syft/syft/cataloging/pkgcataloging" "github.com/anchore/syft/syft/format" "github.com/anchore/syft/syft/pkg/cataloger/golang" "github.com/anchore/syft/syft/pkg/cataloger/java" "github.com/anchore/syft/syft/pkg/cataloger/javascript" "github.com/anchore/syft/syft/sbom" "github.com/anchore/syft/syft/source" "github.com/anchore/syft/syft/source/sourceproviders" ) // Case is a collection of SBOMs and Licenses that are evaluated for a given UserInput type Case struct { // SBOMS is a list of SBOMs that were generated for the user input SBOMS []sbom.SBOM // Licenses is a list of licenses that were generated for the user input Licenses []License // UserInput is the string that was supplied by the user to build the case UserInput string } func NewCases(userInputs ...string) []Case { cases := make([]Case, 0) ch, err := NewCaseHandler() if err != nil { log.Errorf("unable to create case handler: %+v", err) return cases } defer ch.Close() for _, userInput := range userInputs { c, err := ch.determineRequestCase(userInput) if err != nil { log.Errorf("unable to determine case for %s: %+v", userInput, err) continue } c.UserInput = userInput cases = append(cases, c) } return cases } type Pair struct { License License Package *Package } func (c Case) GetLicenses() (map[string][]*Package, map[string]License, []Package) { licensePackages := make(map[string][]*Package) licenses := make(map[string]License) packagesNoLicenses := make([]Package, 0) for _, sb := range c.SBOMS { for pkg := range sb.Artifacts.Packages.Enumerate() { grantPkg := ConvertSyftPackage(pkg) // TODO: how do we express packages without licenses in list if len(grantPkg.Licenses) == 0 { packagesNoLicenses = append(packagesNoLicenses, *grantPkg) continue } buildLicenseMaps(licensePackages, licenses, grantPkg) } } return licensePackages, licenses, packagesNoLicenses } func buildLicenseMaps(licensePackages map[string][]*Package, licenses map[string]License, pkg *Package) { for _, license := range pkg.Licenses { if license.IsSPDX() { if _, ok := licenses[license.SPDXExpression]; !ok { licenses[license.SPDXExpression] = license } if _, ok := licensePackages[license.SPDXExpression]; !ok { licensePackages[license.SPDXExpression] = make([]*Package, 0) } licensePackages[license.SPDXExpression] = append(licensePackages[license.SPDXExpression], pkg) continue } // NonSPDX License if _, ok := licenses[license.Name]; !ok { licenses[license.Name] = license } if _, ok := licensePackages[license.Name]; !ok { licensePackages[license.Name] = make([]*Package, 0) } licensePackages[license.Name] = append(licensePackages[license.Name], pkg) } } type CaseHandler struct { Backend *backend.ClassifierBackend } func NewCaseHandler() (*CaseHandler, error) { be, err := backend.New() if err != nil { return &CaseHandler{}, err } return &CaseHandler{ Backend: be, }, nil } func (ch *CaseHandler) Close() { ch.Backend.Close() } // A valid userRequest can be: // - a path to an SBOM file // - a path to a license // - a path to a directory // - a path to an archive // - a path to a directory (with any of the above) // - a container image (ubuntu:latest) func (ch *CaseHandler) determineRequestCase(userRequest string) (c Case, err error) { switch { case isStdin(userRequest): return handleStdin() case isFile(userRequest): return ch.handleFile(userRequest) case isDirectory(userRequest): return ch.handleDir(userRequest) default: return handleContainer(userRequest) } } func handleStdin() (c Case, err error) { stdReader, err := decodeStdin(os.Stdin) if err != nil { return c, err } sb, _, _, err := format.NewDecoderCollection(format.Decoders()...).Decode(stdReader) if err != nil { return c, fmt.Errorf("unable to determine SBOM or licenses for stdin: %w", err) } if sb != nil { return Case{ SBOMS: []sbom.SBOM{*sb}, Licenses: make([]License, 0), UserInput: sb.Source.Name, }, nil } return c, fmt.Errorf("unable to determine SBOM or licenses for stdin") } func decodeStdin(r io.Reader) (io.ReadSeeker, error) { b, err := io.ReadAll(r) if err != nil { return nil, fmt.Errorf("failed reading stdin: %w", err) } reader := bytes.NewReader(b) _, err = reader.Seek(0, io.SeekStart) if err != nil { return nil, fmt.Errorf("failed to parse stdin: %w", err) } return reader, nil } func (ch *CaseHandler) handleFile(path string) (c Case, err error) { // let's see if it's an archive (isArchive) if isArchive(path) { sb, err := generateSyftSBOM(path) if err != nil { // We bail here since we can't generate an SBOM for the archive return c, err } // if there are licenses in the archive, syft should be enhanced to include them in the SBOM // this overlap is a little weird, but grant should be able to take license files as input return Case{ SBOMS: []sbom.SBOM{sb}, Licenses: make([]License, 0), UserInput: path, }, nil } // let's see if it's an SBOM sbomBytes, err := getReadSeeker(path) if err != nil { // We bail here since we can't get a reader for the file return c, err } sb, _, _, err := format.NewDecoderCollection(format.Decoders()...).Decode(sbomBytes) if err != nil { log.Debugf("unable to determine SBOM or licenses for %s: %+v", path, err) // we want to log the error, but we don't want to return yet } if sb != nil { return Case{ SBOMS: []sbom.SBOM{*sb}, Licenses: make([]License, 0), }, nil } licenses, err := ch.handleLicenseFile(path) if err != nil { return c, fmt.Errorf("unable to determine SBOM or licenses for %s: %w", path, err) } return Case{ SBOMS: make([]sbom.SBOM, 0), Licenses: licenses, UserInput: path, }, nil } func (ch *CaseHandler) handleLicenseFile(path string) ([]License, error) { // alright we couldn't get an SBOM, let's see if the bytes are just a LICENSE (google license classifier) // google license classifier is noisy, so we'll silence it for now golog.SetOutput(io.Discard) if errs := ch.Backend.ClassifyLicensesWithContext( context.Background(), 1000, []string{path}, false, ); errs != nil { ch.Close() for _, err := range errs { log.Errorf("unable to classify license: %+v", err) } return nil, fmt.Errorf("unable to classify license: %+v", errs) } // re-enable logging for the rest of the application golog.SetOutput(os.Stdout) classifierResults := ch.Backend.GetResults() if len(classifierResults) == 0 { return nil, fmt.Errorf("no classifierResults from license classifier") } licenses := grantLicenseFromClassifierResults(classifierResults) return licenses, nil } func (ch *CaseHandler) handleDir(root string) (c Case, err error) { dirCase := Case{ SBOMS: make([]sbom.SBOM, 0), Licenses: make([]License, 0), } // the closure that will be used to visit each file node visit := func(s string, d fs.DirEntry, err error) error { if err != nil { return err } if !d.IsDir() { // This isn't broken, the license classifier just returned two licenses r, err := ch.handleFile(s) if err != nil { // TODO: some log for the error here? return nil } dirCase.SBOMS = append(dirCase.SBOMS, r.SBOMS...) dirCase.Licenses = append(dirCase.Licenses, r.Licenses...) } return nil } err = filepath.WalkDir(root, visit) if err != nil { return c, err } return dirCase, nil } func handleContainer(image string) (c Case, err error) { sb, err := generateSyftSBOM(image) if err != nil { // We bail here since we can't generate an SBOM for the image return c, err } return Case{ SBOMS: []sbom.SBOM{sb}, Licenses: make([]License, 0), }, nil } func getReadSeeker(path string) (io.ReadSeeker, error) { file, err := os.Open(path) if err != nil { return nil, fmt.Errorf("unable to open file: %w", err) } return file, nil } func grantLicenseFromClassifierResults(r results.LicenseTypes) []License { licenses := make([]License, 0) for _, license := range r { // TODO: sometimes the license classifier gives us more information than just the name. // How do we want to handle this or include it in the grant.License? if license.MatchType == "License" { spdxLicense, err := spdxlicense.GetLicenseByID(license.Name) if err != nil { licenses = append(licenses, License{ LicenseID: license.Name, Name: license.Name, }) } else { licenses = append(licenses, License{ SPDXExpression: spdxLicense.LicenseID, Reference: spdxLicense.Reference, IsDeprecatedLicenseID: spdxLicense.IsDeprecatedLicenseID, DetailsURL: spdxLicense.DetailsURL, ReferenceNumber: spdxLicense.ReferenceNumber, LicenseID: spdxLicense.LicenseID, SeeAlso: spdxLicense.SeeAlso, IsOsiApproved: spdxLicense.IsOsiApproved, }) } } } return licenses } // TODO: is the default syft config good enough here? // we definitely need at least all the non default license magic turned on func generateSyftSBOM(userInput string) (sb sbom.SBOM, err error) { src, err := getSource(userInput) if err != nil { return sb, err } sb = getSBOM(src) return sb, nil } func getSource(userInput string) (source.Source, error) { allSourceTags := collections.TaggedValueSet[source.Provider]{}.Join(sourceproviders.All("", nil)...).Tags() var sources []string schemeSource, newUserInput := stereoscope.ExtractSchemeSource(userInput, allSourceTags...) if schemeSource != "" { sources = []string{schemeSource} userInput = newUserInput } return syft.GetSource(context.Background(), userInput, syft.DefaultGetSourceConfig().WithSources(sources...)) } func getSBOM(src source.Source) sbom.SBOM { createSBOMConfig := syft.DefaultCreateSBOMConfig() createSBOMConfig.WithPackagesConfig( pkgcataloging.DefaultConfig(). WithJavaArchiveConfig(java.DefaultArchiveCatalogerConfig().WithUseNetwork(true)). WithJavascriptConfig(javascript.DefaultCatalogerConfig().WithSearchRemoteLicenses(true)). WithGolangConfig(golang.DefaultCatalogerConfig(). WithSearchLocalModCacheLicenses(true). WithSearchRemoteLicenses(true))) s, err := syft.CreateSBOM(context.Background(), src, nil) if err != nil { panic(err) } return *s } func isDirectory(path string) bool { fileInfo, err := os.Stat(path) if err != nil { // log.Errorf("unable to stat directory %s: %+v", path, err) return false } return fileInfo.IsDir() } func isArchive(path string) bool { extension := filepath.Ext(path) archiveExtensions := []string{".zip", ".tar", ".gz", ".rar", ".7z"} for _, archiveExtension := range archiveExtensions { if strings.EqualFold(extension, archiveExtension) { return true } } return false } func isFile(path string) bool { fileInfo, err := os.Stat(path) if err != nil { // log.Errorf("unable to stat file %s: %+v", path, err) return false } return !fileInfo.IsDir() } // this is appended to the list of user requests if the user provides stdin // and doesn't provide a "-" in the list of user requests func isStdin(path string) bool { return strings.EqualFold(path, "-") } 0707010000005E000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001E00000000grant-0.2.1/grant/evalutation0707010000005F000081A4000000000000000000000001668D56C30000046E000000000000000000000000000000000000003900000000grant-0.2.1/grant/evalutation/license_evaluation_test.gopackage evalutation import ( "testing" "github.com/anchore/grant/grant" ) func Test_NewLicenseEvaluations(t *testing.T) { tests := []struct { name string config EvaluationConfig caseFixture string wantFailed bool }{ { name: "NewLicenseEvaluations returns a slice of LicenseEvaluation that fail for the DefaultPolicy", config: DefaultEvaluationConfig(), caseFixture: "../../fixtures/multiple", wantFailed: true, }, } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { grantCases := fixtureCase(tc.caseFixture) for _, c := range grantCases { caseEvaluations := NewLicenseEvaluations(tc.config, c) if len(caseEvaluations) == 0 { t.Fatal("could not build license evaluations") } //if len(caseEvaluations.Licenses()) == 0 { // t.Fatal("could not build list of licenses from evaluations") //} if tc.wantFailed && !caseEvaluations.IsFailed() { t.Fatal("expected license evaluations to fail for default config") } } }) } } func fixtureCase(fixturePath string) []grant.Case { return grant.NewCases(fixturePath) } 07070100000060000081A4000000000000000000000001668D56C300001992000000000000000000000000000000000000003500000000grant-0.2.1/grant/evalutation/license_evalutation.gopackage evalutation import ( "sort" "github.com/anchore/grant/grant" "github.com/anchore/syft/syft/sbom" ) func NewLicenseEvaluations(ec EvaluationConfig, c grant.Case) LicenseEvaluations { evaluations := make([]LicenseEvaluation, 0) for _, sb := range c.SBOMS { evaluations = checkSBOM(ec, sb) } for _, l := range c.Licenses { le := checkLicense(ec, nil, l) evaluations = append(evaluations, le) } return evaluations } func checkSBOM(ec EvaluationConfig, sb sbom.SBOM) LicenseEvaluations { evaluations := make([]LicenseEvaluation, 0) for pkg := range sb.Artifacts.Packages.Enumerate() { // since we use syft as a library to generate the sbom we need to convert its packages/licenses to grant types grantPkg := grant.ConvertSyftPackage(pkg) if len(grantPkg.Licenses) == 0 { // We need to include an evaluation that shows this package has no licenses le := NewLicenseEvaluation(grant.License{}, grantPkg, ec.Policy, []Reason{{ Detail: ReasonNoLicenseFound, }}, true) evaluations = append(evaluations, le) continue } for _, l := range grantPkg.Licenses { le := checkLicense(ec, grantPkg, l) evaluations = append(evaluations, le) } } return evaluations } func checkLicense(ec EvaluationConfig, pkg *grant.Package, l grant.License) LicenseEvaluation { if !l.IsSPDX() && ec.CheckNonSPDX { if denied, rule := ec.Policy.IsDenied(l, pkg); denied { var reason Reason if rule != nil { reason = Reason{ Detail: ReasonLicenseDeniedPolicy, RuleName: rule.Name, } } return NewLicenseEvaluation(l, pkg, ec.Policy, []Reason{reason}, false) } } if ec.OsiApproved && l.IsSPDX() { if !l.IsOsiApproved { return NewLicenseEvaluation(l, pkg, ec.Policy, []Reason{{ Detail: ReasonLicenseDeniedOSI, RuleName: RuleNameNotOSIApproved, }}, false) } } if denied, rule := ec.Policy.IsDenied(l, pkg); denied { var reason Reason if rule != nil { reason = Reason{ Detail: ReasonLicenseDeniedPolicy, RuleName: rule.Name, } } return NewLicenseEvaluation(l, pkg, ec.Policy, []Reason{reason}, false) } return NewLicenseEvaluation(l, pkg, ec.Policy, []Reason{{ Detail: ReasonLicenseAllowed, }}, true) } type LicenseEvaluations []LicenseEvaluation func (le LicenseEvaluations) Packages(license string) []string { packages := make([]string, 0) // get the set of unique packages from the list... packageMap := make(map[string]struct{}) for _, e := range le { if e.Package != nil && (e.License.LicenseID == license || e.License.Name == license) { if _, ok := packageMap[e.Package.Name]; !ok { packageMap[e.Package.Name] = struct{}{} packages = append(packages, e.Package.Name) } } } sort.Strings(packages) return packages } func (le LicenseEvaluations) EmptyPackages() []string { packages := make([]string, 0) // get the set of unique packages from the list... packageMap := make(map[string]struct{}) for _, e := range le { if e.Package != nil && e.License.LicenseID == "" && e.License.Name == "" { if _, ok := packageMap[e.Package.Name]; !ok { packageMap[e.Package.Name] = struct{}{} packages = append(packages, e.Package.Name) } } } sort.Strings(packages) return packages } func (le LicenseEvaluations) Licenses(pkg string) []grant.License { licenses := make([]grant.License, 0) licenseMap := make(map[string]struct{}) // get the set of unique licenses from the list for the given package... for _, e := range le { if e.Package != nil && e.Package.Name == pkg { if _, ok := licenseMap[e.License.LicenseID]; !ok && e.License.SPDXExpression != "" { licenseMap[e.License.LicenseID] = struct{}{} licenses = append(licenses, e.License) } if _, ok := licenseMap[e.License.Name]; !ok && e.License.Name != "" { licenseMap[e.License.Name] = struct{}{} licenses = append(licenses, e.License) } } } return licenses } func (le LicenseEvaluations) GetLicenses() []string { licenses := make([]string, 0) licenseMap := make(map[string]struct{}) // get the set of unique licenses from the list for the given package... for _, e := range le { if _, ok := licenseMap[e.License.LicenseID]; !ok && e.License.LicenseID != "" { licenseMap[e.License.LicenseID] = struct{}{} licenses = append(licenses, e.License.LicenseID) } if _, ok := licenseMap[e.License.Name]; !ok && e.License.Name != "" { licenseMap[e.License.Name] = struct{}{} licenses = append(licenses, e.License.Name) } } licenses = removeDuplicates(licenses) sort.Strings(licenses) return licenses } func removeDuplicates(elements []string) []string { encountered := map[string]bool{} result := []string{} for _, element := range elements { if !encountered[element] { encountered[element] = true result = append(result, element) } } return result } func (le LicenseEvaluations) Failed(r grant.Rule) LicenseEvaluations { var failed LicenseEvaluations for _, e := range le { if !e.Pass && e.RuleApplied(r) { failed = append(failed, e) } } sort.Sort(failed) return failed } func (le LicenseEvaluations) IsFailed() bool { for _, e := range le { if !e.Pass { return true } } return false } type LicenseEvaluation struct { // inputs into evaluation... License grant.License // the license that we evaluated Package *grant.Package // any artifact license is evaluated with // what's used to evaluate... Policy grant.Policy // what the determination was made against // the output of an evaluation... Reason []Reason // reasons that the evaluation value the way it is Pass bool // The final evaluation } func (le LicenseEvaluation) RuleApplied(r grant.Rule) bool { for _, reason := range le.Reason { if reason.RuleName == r.Name { return true } } return false } func NewLicenseEvaluation(license grant.License, pkg *grant.Package, policy grant.Policy, reasons []Reason, pass bool) LicenseEvaluation { return LicenseEvaluation{ License: license, Package: pkg, Policy: policy, Reason: reasons, Pass: pass, } } func (le LicenseEvaluations) Len() int { return len(le) } func (le LicenseEvaluations) Less(i, j int) bool { var compareI, compareJ string if le[i].License.LicenseID != "" { compareI = le[i].License.LicenseID } else { compareI = le[i].License.Name } if le[j].License.LicenseID != "" { compareJ = le[j].License.LicenseID } else { compareJ = le[j].License.Name } return compareI < compareJ } func (le LicenseEvaluations) Swap(i, j int) { le[i], le[j] = le[j], le[i] } 07070100000061000081A4000000000000000000000001668D56C300000231000000000000000000000000000000000000003C00000000grant-0.2.1/grant/evalutation/license_evalutation_config.gopackage evalutation import "github.com/anchore/grant/grant" type EvaluationConfig struct { // Policy is the policy to evaluate against // if non is supplied, the default policy is used (grant.DefaultPolicy()) Policy grant.Policy // CheckNonSPDX is true if non-SPDX licenses should be checked CheckNonSPDX bool // OsiApproved is true if only OSI approved licenses are the only ones allowed OsiApproved bool } func DefaultEvaluationConfig() EvaluationConfig { return EvaluationConfig{ Policy: grant.DefaultPolicy(), CheckNonSPDX: false, } } 07070100000062000081A4000000000000000000000001668D56C3000001CE000000000000000000000000000000000000002800000000grant-0.2.1/grant/evalutation/reason.gopackage evalutation type Reason struct { Detail string RuleName string } var ( RuleNameNotOSIApproved = "not OSI" ) var ( ReasonNoLicenseFound = "no license found" ReasonLicenseDeniedPolicy = "license denied by policy" ReasonLicenseAllowed = "license allowed by policy" ReasonLicenseDeniedOSI = "license not OSI approved" ) func NewReason(detail, ruleName string) Reason { return Reason{ Detail: detail, RuleName: ruleName, } } 07070100000063000081A4000000000000000000000001668D56C30000071E000000000000000000000000000000000000002800000000grant-0.2.1/grant/evalutation/result.gopackage evalutation import ( "github.com/anchore/grant/grant" ) // Result is the result of a policy evaluation // It combines the supplied case with the evaluation results type Result struct { Case grant.Case Evaluations LicenseEvaluations Pass bool } type Results []Result func NewResults(ec EvaluationConfig, cases ...grant.Case) (r Results) { r = make(Results, 0) for _, c := range cases { e := NewLicenseEvaluations(ec, c) res := Result{ Case: c, Evaluations: e, Pass: !e.IsFailed(), } r = append(r, res) } return r } func (rs Results) IsFailed() bool { for _, r := range rs { if r.Evaluations.IsFailed() { return true } } return false } func (rs Results) UserInputs() []string { inputs := make([]string, 0) for _, r := range rs { inputs = append(inputs, r.Case.UserInput) } return inputs } // GetFailedEvaluations returns a map of user input to slice of failed license evaluations for that input func (rs Results) GetFailedEvaluations(userInput string, rule grant.Rule) LicenseEvaluations { failed := make(LicenseEvaluations, 0) for _, r := range rs { if r.Case.UserInput == userInput && !r.Pass { failed = append(failed, r.Evaluations.Failed(rule)...) } } return failed } type ResultSummary struct { CompliantPackages int `json:"compliant_packages" yaml:"compliant_packages"` PackageViolations int `json:"package_violations" yaml:"package_violations"` IgnoredPackages int `json:"ignored_packages" yaml:"ignored_packages"` LicenseViolations int `json:"license_violations" yaml:"license_violations"` CompliantLicenses int `json:"compliant_licenses" yaml:"compliant_licenses"` IgnoredLicenses int `json:"ignored_licenses" yaml:"ignored_licenses"` } func (rs Results) Summary() ResultSummary { return ResultSummary{} } 07070100000064000081A4000000000000000000000001668D56C300000304000000000000000000000000000000000000002D00000000grant-0.2.1/grant/evalutation/result_test.gopackage evalutation import ( "testing" "github.com/anchore/grant/grant" ) func Test_NewResults(t *testing.T) { tests := []struct { name string ec EvaluationConfig fixtures []string isFailed bool }{ { name: "NewResults returns results from a group of cases that cannot pass the default config", ec: DefaultEvaluationConfig(), fixtures: []string{ "../../fixtures/multiple", "../../fixtures/licenses/MIT", }, isFailed: true, }, } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { cases := grant.NewCases(tc.fixtures...) results := NewResults(tc.ec, cases...) if tc.isFailed != results.IsFailed() { t.Errorf("results.IsFailed() = %v, want %v", results.IsFailed(), tc.isFailed) } }) } } 07070100000065000081A4000000000000000000000001668D56C300001331000000000000000000000000000000000000001D00000000grant-0.2.1/grant/license.gopackage grant import ( "strings" "github.com/github/go-spdx/v2/spdxexp" "github.com/anchore/grant/internal/log" "github.com/anchore/grant/internal/spdxlicense" syftPkg "github.com/anchore/syft/syft/pkg" ) type LicenseID string // License is a grant license. Either SPDXExpression or Name will be set. // If SPDXExpression is set, Name will be empty. // Value is the contents of the license and is optional - can be fetched from the SPDX license list // Locations are the relative paths for a license that show evidence of its detection. type License struct { // SPDXExpression is the SPDX expression for the license ID LicenseID `json:"id"` SPDXExpression string `json:"spdxExpression"` // Name is the name of the individual license if SPDXExpression is unset Name string `json:"name"` // Contents are the text of the license Contents string `json:"value"` // Locations are the paths for a package that show evidence of the license Locations []string `json:"location"` // These fields are lifted from the SPDX license list. // internal/spdxlicnse/license.go Reference string `json:"reference"` IsDeprecatedLicenseID bool `json:"isDeprecatedLicenseId"` DetailsURL string `json:"detailsUrl"` ReferenceNumber int `json:"referenceNumber"` LicenseID string `json:"licenseId"` SeeAlso []string `json:"seeAlso"` IsOsiApproved bool `json:"isOsiApproved"` } func (l License) String() string { if l.SPDXExpression != "" { return l.SPDXExpression } return l.Name } func (l License) IsSPDX() bool { return l.SPDXExpression != "" } // ConvertSyftLicenses converts a syft LicenseSet to a grant License slice // note: syft licenses can sometimes have complex SPDX expressions. // Grant licenses break down these expressions into individual licenses. // Because license expressions could potentially contain multiple licenses // that are already represented in the syft license set we need to de-duplicate // syft licenses have a "Value" field which is the name of the license // given to an invalid SPDX expression; grant licenses store this field as "Name" func ConvertSyftLicenses(set syftPkg.LicenseSet) (licenses []License) { licenses = make([]License, 0) checked := make(map[string]bool) for _, license := range set.ToSlice() { locations := license.Locations.ToSlice() licenseLocations := make([]string, 0) for _, location := range locations { licenseLocations = append(licenseLocations, location.RealPath) } if license.SPDXExpression != "" { licenses = handleSPDXLicense(license, licenses, licenseLocations, checked) continue } licenses = addNonSPDXLicense(licenses, license, licenseLocations) } return licenses } func handleSPDXLicense(license syftPkg.License, licenses []License, licenseLocations []string, checked map[string]bool) []License { extractedLicenses, err := spdxexp.ExtractLicenses(license.SPDXExpression) if err != nil { // log.Errorf("unable to extract licenses from SPDX expression: %s", license.SPDXExpression) return addNonSPDXLicense(licenses, license, licenseLocations) } // process each extracted license from the SPDX expression for _, extractedLicense := range extractedLicenses { extractedLicense = strings.TrimRight(extractedLicense, "+") // prevent duplicates from being added when using SPDX expressions // EG: "MIT AND MIT" is valid, but we want to de-duplicate these if check(checked, extractedLicense) { continue } // we have what seems to be a valid SPDX license ID, let's try and get more info about it spdxLicense, err := spdxlicense.GetLicenseByID(extractedLicense) if err != nil { log.Errorf("unable to get license by ID: %s; no matching spdx id found", extractedLicense) // if we can't find a matching SPDX license, just add the license as-is // TODO: best matching against the spdx list index addNonSPDXLicense(licenses, license, licenseLocations) continue } licenses = append(licenses, License{ SPDXExpression: extractedLicense, Name: spdxLicense.Name, Locations: licenseLocations, Reference: spdxLicense.Reference, IsDeprecatedLicenseID: spdxLicense.IsDeprecatedLicenseID, DetailsURL: spdxLicense.DetailsURL, ReferenceNumber: spdxLicense.ReferenceNumber, LicenseID: spdxLicense.LicenseID, SeeAlso: spdxLicense.SeeAlso, IsOsiApproved: spdxLicense.IsOsiApproved, }) } return licenses } func addNonSPDXLicense(licenses []License, license syftPkg.License, locations []string) []License { return append(licenses, License{ Name: license.Value, Locations: locations, }) } func check(checked map[string]bool, license string) bool { if _, ok := checked[license]; !ok { checked[license] = true return false } return true } 07070100000066000081A4000000000000000000000001668D56C30000040B000000000000000000000000000000000000001D00000000grant-0.2.1/grant/package.gopackage grant import syftPkg "github.com/anchore/syft/syft/pkg" // PackageID is a unique identifier for a package that is tracked by grant // It's usually provided by the SBOM; It's calculated if an SBOM is generated type PackageID string // Package is a single package that is tracked by grant type Package struct { ID PackageID `json:"id" yaml:"id"` Name string `json:"name" yaml:"name"` Type string `json:"type" yaml:"type"` Version string `json:"version" yaml:"version"` Licenses []License `json:"licenses" yaml:"licenses"` Locations []string `json:"locations" yaml:"locations"` } func ConvertSyftPackage(p syftPkg.Package) *Package { locations := p.Locations.ToSlice() packageLocations := make([]string, 0) for _, location := range locations { packageLocations = append(packageLocations, location.RealPath) } return &Package{ Name: p.Name, Version: p.Version, Type: string(p.Type), Licenses: ConvertSyftLicenses(p.Licenses), Locations: packageLocations, } } 07070100000067000081A4000000000000000000000001668D56C300000770000000000000000000000000000000000000001C00000000grant-0.2.1/grant/policy.gopackage grant import ( "strings" "github.com/gobwas/glob" ) // Policy is a structure of rules that define how licenses are denied // TODO: maybe there should be a strict option that denies all and then only allows what is explicitly allowed type Policy struct { Rules Rules MatchNonSPDX bool } var DefaultDenyAll = Rule{ Name: "default-deny-all", Glob: glob.MustCompile("*"), Exceptions: []glob.Glob{}, Mode: Deny, Reason: "grant by default will deny all licenses", } // DefaultPolicy returns a policy that denies all licenses func DefaultPolicy() Policy { return Policy{ Rules: []Rule{DefaultDenyAll}, } } // NewPolicy builds a policy from lists of allow, deny, and ignore glob patterns // It lower cases all patterns to make matching against the spdx license set case-insensitive func NewPolicy(matchNonSPDX bool, rules ...Rule) (p Policy, err error) { if len(rules) == 0 { return Policy{ Rules: Rules{DefaultDenyAll}, MatchNonSPDX: matchNonSPDX, }, nil } return Policy{ Rules: rules, MatchNonSPDX: matchNonSPDX, }, nil } // IsEmpty returns true if the policy has no allow or deny licenses func (p Policy) IsEmpty() bool { return len(p.Rules) == 0 } // IsDenied returns true if the given license is denied by the policy func (p Policy) IsDenied(license License, pkg *Package) (bool, *Rule) { for _, rule := range p.Rules { if rule.Mode != Deny { continue } var toMatch string if license.IsSPDX() { toMatch = strings.ToLower(license.LicenseID) } else { toMatch = strings.ToLower(license.Name) } toMatch = strings.ToLower(toMatch) if rule.Glob.Match(toMatch) && toMatch != "" { if pkg == nil { return true, &rule } for _, exception := range rule.Exceptions { if exception.Match(pkg.Name) { return false, &rule } } return true, &rule } } return false, nil } 07070100000068000081A4000000000000000000000001668D56C300000A46000000000000000000000000000000000000002100000000grant-0.2.1/grant/policy_test.gopackage grant import ( "testing" "github.com/gobwas/glob" "github.com/google/go-cmp/cmp" ) func Test_DefaultPolicy(t *testing.T) { tests := []struct { name string want Policy compareOptions []cmp.Option }{ { name: "DefaultPolicy() returns the expected default policy", want: Policy{ Rules: []Rule{ { Name: "default-deny-all", Glob: glob.MustCompile("*"), Exceptions: []glob.Glob{}, Mode: Deny, Reason: "grant by default will deny all licenses", }, }, MatchNonSPDX: false, }, compareOptions: []cmp.Option{}, }, } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { got := DefaultPolicy() if diff := cmp.Diff(tc.want, got, tc.compareOptions...); diff != "" { t.Errorf("DefaultPolicy() mismatch (-want +got):\n%s", diff) } }) } } func Test_NewPolicy(t *testing.T) { tests := []struct { name string want Policy rules []Rule matchNonSPDX bool compareOptions []cmp.Option wantErr bool }{ { name: "NewPolicy() returns the expected policy with no rules", want: Policy{ Rules: Rules{DefaultDenyAll}, MatchNonSPDX: false, }, compareOptions: []cmp.Option{}, wantErr: false, }, } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { got, err := NewPolicy(tc.matchNonSPDX, tc.rules...) if (err != nil) != tc.wantErr { t.Errorf("NewPolicy() error = %v, wantErr %v", err, tc.wantErr) return } if diff := cmp.Diff(tc.want, got, tc.compareOptions...); diff != "" { t.Errorf("NewPolicy() mismatch (-want +got):\n%s", diff) } }) } } func Test_Policy_DenyAll(t *testing.T) { tests := []struct { name string p Policy want struct { denied bool rule *Rule } }{ { name: "Policy Default Deny All denies all licenses", p: DefaultPolicy(), want: struct { denied bool rule *Rule }{ denied: true, rule: &Rule{ Name: "default-deny-all", Glob: glob.MustCompile("*"), Exceptions: []glob.Glob{}, Mode: Deny, Reason: "grant by default will deny all licenses", }, }, }, } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { denied, rule := tc.p.IsDenied(License{LicenseID: "MIT", SPDXExpression: "MIT"}, nil) if denied != tc.want.denied { t.Errorf("Expected %t, got %t", tc.want.denied, denied) } if diff := cmp.Diff(tc.want.rule, rule); diff != "" { t.Errorf("IsDenied() mismatch (-want +got):\n%s", diff) } }) } } 07070100000069000081A4000000000000000000000001668D56C30000025E000000000000000000000000000000000000001A00000000grant-0.2.1/grant/rule.gopackage grant import "github.com/gobwas/glob" type Rules []Rule type Rule struct { Name string Reason string Glob glob.Glob OriginalPattern string Exceptions []glob.Glob OriginalExceptions []string Mode RuleMode Severity RuleSeverity } type RuleMode string type RuleSeverity string const ( Critical RuleSeverity = "critical" High RuleSeverity = "high" Medium RuleSeverity = "medium" Low RuleSeverity = "low" ) const ( Allow RuleMode = "allow" Deny RuleMode = "deny" Ignore RuleMode = "ignore" ) 0707010000006A000081ED000000000000000000000001668D56C3000042A8000000000000000000000000000000000000001700000000grant-0.2.1/install.sh#!/bin/sh # note: we require errors to propagate (don't set -e) set -u PROJECT_NAME=grant OWNER=anchore REPO="${PROJECT_NAME}" GITHUB_DOWNLOAD_PREFIX=https://github.com/${OWNER}/${REPO}/releases/download INSTALL_SH_BASE_URL=https://raw.githubusercontent.com/${OWNER}/${PROJECT_NAME} PROGRAM_ARGS=$@ # do not change the name of this parameter (this must always be backwards compatible) DOWNLOAD_TAG_INSTALL_SCRIPT=${DOWNLOAD_TAG_INSTALL_SCRIPT:-true} # # usage [script-name] # usage() ( this=$1 cat <<EOF $this: download go binaries for anchore/syft Usage: $this [-b] dir [-d] [tag] -b the installation directory (dDefaults to ./bin) -d turns on debug logging -dd turns on trace logging [tag] the specific release to use (if missing, then the latest will be used) EOF exit 2 ) # ------------------------------------------------------------------------ # https://github.com/client9/shlib - portable posix shell functions # Public domain - http://unlicense.org # https://github.com/client9/shlib/blob/master/LICENSE.md # but credit (and pull requests) appreciated. # ------------------------------------------------------------------------ is_command() ( command -v "$1" >/dev/null ) echo_stderr() ( echo "$@" 1>&2 ) _logp=2 log_set_priority() { _logp="$1" } log_priority() ( if test -z "$1"; then echo "$_logp" return fi [ "$1" -le "$_logp" ] ) init_colors() { RED='' BLUE='' PURPLE='' BOLD='' RESET='' # check if stdout is a terminal if test -t 1 && is_command tput; then # see if it supports colors ncolors=$(tput colors) if test -n "$ncolors" && test $ncolors -ge 8; then RED='\033[0;31m' BLUE='\033[0;34m' PURPLE='\033[0;35m' BOLD='\033[1m' RESET='\033[0m' fi fi } init_colors log_tag() ( case $1 in 0) echo "${RED}${BOLD}[error]${RESET}" ;; 1) echo "${RED}[warn]${RESET}" ;; 2) echo "[info]${RESET}" ;; 3) echo "${BLUE}[debug]${RESET}" ;; 4) echo "${PURPLE}[trace]${RESET}" ;; *) echo "[$1]" ;; esac ) log_trace_priority=4 log_trace() ( priority=$log_trace_priority log_priority "$priority" || return 0 echo_stderr "$(log_tag $priority)" "${@}" "${RESET}" ) log_debug_priority=3 log_debug() ( priority=$log_debug_priority log_priority "$priority" || return 0 echo_stderr "$(log_tag $priority)" "${@}" "${RESET}" ) log_info_priority=2 log_info() ( priority=$log_info_priority log_priority "$priority" || return 0 echo_stderr "$(log_tag $priority)" "${@}" "${RESET}" ) log_warn_priority=1 log_warn() ( priority=$log_warn_priority log_priority "$priority" || return 0 echo_stderr "$(log_tag $priority)" "${@}" "${RESET}" ) log_err_priority=0 log_err() ( priority=$log_err_priority log_priority "$priority" || return 0 echo_stderr "$(log_tag $priority)" "${@}" "${RESET}" ) uname_os_check() ( os=$1 case "$os" in darwin) return 0 ;; dragonfly) return 0 ;; freebsd) return 0 ;; linux) return 0 ;; android) return 0 ;; nacl) return 0 ;; netbsd) return 0 ;; openbsd) return 0 ;; plan9) return 0 ;; solaris) return 0 ;; windows) return 0 ;; esac log_err "uname_os_check '$(uname -s)' got converted to '$os' which is not a GOOS value. Please file bug at https://github.com/client9/shlib" return 1 ) uname_arch_check() ( arch=$1 case "$arch" in 386) return 0 ;; amd64) return 0 ;; arm64) return 0 ;; armv5) return 0 ;; armv6) return 0 ;; armv7) return 0 ;; ppc64) return 0 ;; ppc64le) return 0 ;; mips) return 0 ;; mipsle) return 0 ;; mips64) return 0 ;; mips64le) return 0 ;; s390x) return 0 ;; amd64p32) return 0 ;; esac log_err "uname_arch_check '$(uname -m)' got converted to '$arch' which is not a GOARCH value. Please file bug report at https://github.com/client9/shlib" return 1 ) unpack() ( archive=$1 log_trace "unpack(archive=${archive})" case "${archive}" in *.tar.gz | *.tgz) tar --no-same-owner -xzf "${archive}" ;; *.tar) tar --no-same-owner -xf "${archive}" ;; *.zip) unzip -q "${archive}" ;; *.dmg) extract_from_dmg "${archive}" ;; *) log_err "unpack unknown archive format for ${archive}" return 1 ;; esac ) extract_from_dmg() ( dmg_file=$1 mount_point="/Volumes/tmp-dmg" hdiutil attach -quiet -nobrowse -mountpoint "${mount_point}" "${dmg_file}" cp -fR "${mount_point}/." ./ hdiutil detach -quiet -force "${mount_point}" ) http_download_curl() ( local_file=$1 source_url=$2 header=$3 log_trace "http_download_curl(local_file=$local_file, source_url=$source_url, header=$header)" if [ -z "$header" ]; then code=$(curl -w '%{http_code}' -sL -o "$local_file" "$source_url") else code=$(curl -w '%{http_code}' -sL -H "$header" -o "$local_file" "$source_url") fi if [ "$code" != "200" ]; then log_err "received HTTP status=$code for url='$source_url'" return 1 fi return 0 ) http_download_wget() ( local_file=$1 source_url=$2 header=$3 log_trace "http_download_wget(local_file=$local_file, source_url=$source_url, header=$header)" if [ -z "$header" ]; then wget -q -O "$local_file" "$source_url" else wget -q --header "$header" -O "$local_file" "$source_url" fi ) http_download() ( log_debug "http_download(url=$2)" if is_command curl; then http_download_curl "$@" return elif is_command wget; then http_download_wget "$@" return fi log_err "http_download unable to find wget or curl" return 1 ) http_copy() ( tmp=$(mktemp) http_download "${tmp}" "$1" "$2" || return 1 body=$(cat "$tmp") rm -f "${tmp}" echo "$body" ) hash_sha256() ( TARGET=${1:-/dev/stdin} if is_command gsha256sum; then hash=$(gsha256sum "$TARGET") || return 1 echo "$hash" | cut -d ' ' -f 1 elif is_command sha256sum; then hash=$(sha256sum "$TARGET") || return 1 echo "$hash" | cut -d ' ' -f 1 elif is_command shasum; then hash=$(shasum -a 256 "$TARGET" 2>/dev/null) || return 1 echo "$hash" | cut -d ' ' -f 1 elif is_command openssl; then hash=$(openssl -dst openssl dgst -sha256 "$TARGET") || return 1 echo "$hash" | cut -d ' ' -f a else log_err "hash_sha256 unable to find command to compute sha-256 hash" return 1 fi ) hash_sha256_verify() ( TARGET=$1 checksums=$2 if [ -z "$checksums" ]; then log_err "hash_sha256_verify checksum file not specified in arg2" return 1 fi BASENAME=${TARGET##*/} want=$(grep "${BASENAME}" "${checksums}" 2>/dev/null | tr '\t' ' ' | cut -d ' ' -f 1) if [ -z "$want" ]; then log_err "hash_sha256_verify unable to find checksum for '${TARGET}' in '${checksums}'" return 1 fi got=$(hash_sha256 "$TARGET") if [ "$want" != "$got" ]; then log_err "hash_sha256_verify checksum for '$TARGET' did not verify ${want} vs $got" return 1 fi ) # ------------------------------------------------------------------------ # End of functions from https://github.com/client9/shlib # ------------------------------------------------------------------------ # asset_file_exists [path] # # returns 1 if the given file does not exist # asset_file_exists() ( path="$1" if [ ! -f "${path}" ]; then return 1 fi ) # github_release_json [owner] [repo] [version] # # outputs release json string # github_release_json() ( owner=$1 repo=$2 version=$3 test -z "$version" && version="latest" giturl="https://github.com/${owner}/${repo}/releases/${version}" json=$(http_copy "$giturl" "Accept:application/json") log_trace "github_release_json(owner=${owner}, repo=${repo}, version=${version}) returned '${json}'" test -z "$json" && return 1 echo "${json}" ) # extract_value [key-value-pair] # # outputs value from a colon delimited key-value pair # extract_value() ( key_value="$1" IFS=':' read -r _ value << EOF ${key_value} EOF echo "$value" ) # extract_json_value [json] [key] # # outputs value of the key from the given json string # extract_json_value() ( json="$1" key="$2" key_value=$(echo "${json}" | grep -o "\"$key\":[^,]*[,}]" | tr -d '",}') extract_value "$key_value" ) # github_release_tag [release-json] # # outputs release tag string # github_release_tag() ( json="$1" tag=$(extract_json_value "${json}" "tag_name") test -z "$tag" && return 1 echo "$tag" ) # download_github_release_checksums [release-url-prefix] [name] [version] [output-dir] # # outputs path to the downloaded checksums file # download_github_release_checksums() ( download_url="$1" name="$2" version="$3" output_dir="$4" log_trace "download_github_release_checksums(url=${download_url}, name=${name}, version=${version}, output_dir=${output_dir})" checksum_filename=${name}_${version}_checksums.txt checksum_url=${download_url}/${checksum_filename} output_path="${output_dir}/${checksum_filename}" http_download "${output_path}" "${checksum_url}" "" asset_file_exists "${output_path}" log_trace "download_github_release_checksums() returned '${output_path}'" echo "${output_path}" ) # search_for_asset [checksums-file-path] [name] [os] [arch] [format] # # outputs name of the asset to download # search_for_asset() ( checksum_path="$1" name="$2" os="$3" arch="$4" format="$5" log_trace "search_for_asset(checksum-path=${checksum_path}, name=${name}, os=${os}, arch=${arch}, format=${format})" asset_glob="${name}_.*_${os}_${arch}.${format}" output_path=$(grep -o "${asset_glob}" "${checksum_path}" || true) log_trace "search_for_asset() returned '${output_path}'" echo "${output_path}" ) # uname_os # # outputs an adjusted os value # uname_os() ( os=$(uname -s | tr '[:upper:]' '[:lower:]') case "$os" in cygwin_nt*) os="windows" ;; mingw*) os="windows" ;; msys_nt*) os="windows" ;; esac uname_os_check "$os" log_trace "uname_os() returned '${os}'" echo "$os" ) # uname_arch # # outputs an adjusted architecture value # uname_arch() ( arch=$(uname -m) case $arch in x86_64) arch="amd64" ;; x86) arch="386" ;; i686) arch="386" ;; i386) arch="386" ;; aarch64) arch="arm64" ;; armv5*) arch="armv5" ;; armv6*) arch="armv6" ;; armv7*) arch="armv7" ;; esac uname_arch_check "${arch}" log_trace "uname_arch() returned '${arch}'" echo "${arch}" ) # get_release_tag [owner] [repo] [tag] # # outputs tag string # get_release_tag() ( owner="$1" repo="$2" tag="$3" log_trace "get_release_tag(owner=${owner}, repo=${repo}, tag=${tag})" json=$(github_release_json "${owner}" "${repo}" "${tag}") real_tag=$(github_release_tag "${json}") if test -z "${real_tag}"; then return 1 fi log_trace "get_release_tag() returned '${real_tag}'" echo "${real_tag}" ) # tag_to_version [tag] # # outputs version string # tag_to_version() ( tag="$1" value="${tag#v}" log_trace "tag_to_version(tag=${tag}) returned '${value}'" echo "$value" ) # get_binary_name [os] [arch] [default-name] # # outputs a the binary string name # get_binary_name() ( os="$1" arch="$2" binary="$3" original_binary="${binary}" case "${os}" in windows) binary="${binary}.exe" ;; esac log_trace "get_binary_name(os=${os}, arch=${arch}, binary=${original_binary}) returned '${binary}'" echo "${binary}" ) # get_format_name [os] [arch] [default-format] # # outputs an adjusted file format # get_format_name() ( os="$1" arch="$2" format="$3" original_format="${format}" case ${os} in windows) format=zip ;; esac log_trace "get_format_name(os=${os}, arch=${arch}, format=${original_format}) returned '${format}'" echo "${format}" ) # download_and_install_asset [release-url-prefix] [download-path] [install-path] [name] [os] [arch] [version] [format] [binary] # # attempts to download the archive and install it to the given path. # download_and_install_asset() ( download_url="$1" download_path="$2" install_path=$3 name="$4" os="$5" arch="$6" version="$7" format="$8" binary="$9" asset_filepath=$(download_asset "${download_url}" "${download_path}" "${name}" "${os}" "${arch}" "${version}" "${format}") # don't continue if we couldn't download an asset if [ -z "${asset_filepath}" ]; then log_err "could not find release asset for os='${os}' arch='${arch}' format='${format}' " return 1 fi install_asset "${asset_filepath}" "${install_path}" "${binary}" ) # download_asset [release-url-prefix] [download-path] [name] [os] [arch] [version] [format] [binary] # # outputs the path to the downloaded asset asset_filepath # download_asset() ( download_url="$1" destination="$2" name="$3" os="$4" arch="$5" version="$6" format="$7" log_trace "download_asset(url=${download_url}, destination=${destination}, name=${name}, os=${os}, arch=${arch}, version=${version}, format=${format})" checksums_filepath=$(download_github_release_checksums "${download_url}" "${name}" "${version}" "${destination}") log_trace "checksums content:\n$(cat ${checksums_filepath})" asset_filename=$(search_for_asset "${checksums_filepath}" "${name}" "${os}" "${arch}" "${format}") # don't continue if we couldn't find a matching asset from the checksums file if [ -z "${asset_filename}" ]; then return 1 fi asset_url="${download_url}/${asset_filename}" asset_filepath="${destination}/${asset_filename}" http_download "${asset_filepath}" "${asset_url}" "" hash_sha256_verify "${asset_filepath}" "${checksums_filepath}" log_trace "download_asset_by_checksums_file() returned '${asset_filepath}'" echo "${asset_filepath}" ) # install_asset [asset-path] [destination-path] [binary] # install_asset() ( asset_filepath="$1" destination="$2" binary="$3" log_trace "install_asset(asset=${asset_filepath}, destination=${destination}, binary=${binary})" # don't continue if we don't have anything to install if [ -z "${asset_filepath}" ]; then return fi archive_dir=$(dirname "${asset_filepath}") # unarchive the downloaded archive to the temp dir (cd "${archive_dir}" && unpack "${asset_filepath}") # create the destination dir test ! -d "${destination}" && install -d "${destination}" # install the binary to the destination dir install "${archive_dir}/${binary}" "${destination}/" ) main() ( # parse arguments # note: never change default install directory (this must always be backwards compatible) install_dir=${install_dir:-./bin} # note: never change the program flags or arguments (this must always be backwards compatible) while getopts "b:dh?x" arg; do case "$arg" in b) install_dir="$OPTARG" ;; d) if [ "$_logp" = "$log_info_priority" ]; then # -d == debug log_set_priority $log_debug_priority else # -dd (or -ddd...) == trace log_set_priority $log_trace_priority fi ;; h | \?) usage "$0" ;; x) set -x ;; esac done shift $((OPTIND - 1)) set +u tag=$1 if [ -z "${tag}" ]; then log_debug "checking github for the current release tag" tag="" else log_debug "checking github for release tag='${tag}'" fi set -u tag=$(get_release_tag "${OWNER}" "${REPO}" "${tag}") if [ "$?" != "0" ]; then log_err "unable to find tag='${tag}'" log_err "do not specify a version or select a valid version from https://github.com/${OWNER}/${REPO}/releases" return 1 fi # run the application version=$(tag_to_version "${tag}") os=$(uname_os) arch=$(uname_arch) format=$(get_format_name "${os}" "${arch}" "tar.gz") binary=$(get_binary_name "${os}" "${arch}" "${PROJECT_NAME}") download_url="${GITHUB_DOWNLOAD_PREFIX}/${tag}" # we always use the install.sh script that is associated with the tagged release. Why? the latest install.sh is not # guaranteed to be able to install every version of the application. We use the DOWNLOAD_TAG_INSTALL_SCRIPT env var # to indicate if we should continue processing with the existing script or to download the script from the given tag. if [ "${DOWNLOAD_TAG_INSTALL_SCRIPT}" = "true" ]; then export DOWNLOAD_TAG_INSTALL_SCRIPT=false log_info "fetching release script for tag='${tag}'" http_copy "${INSTALL_SH_BASE_URL}/${tag}/install.sh" "" | sh -s -- ${PROGRAM_ARGS} exit $? fi log_info "using release tag='${tag}' version='${version}' os='${os}' arch='${arch}'" download_dir=$(mktemp -d) trap 'rm -rf -- "$download_dir"' EXIT log_debug "downloading files into ${download_dir}" download_and_install_asset "${download_url}" "${download_dir}" "${install_dir}" "${PROJECT_NAME}" "${os}" "${arch}" "${version}" "${format}" "${binary}" # don't continue if we couldn't install the asset if [ "$?" != "0" ]; then log_err "failed to install ${PROJECT_NAME}" return 1 fi log_info "installed ${install_dir}/${binary}" ) # entrypoint set +u if [ -z "${TEST_INSTALL_SH}" ]; then set -u exit $(main "$@") fi set -u 0707010000006B000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001500000000grant-0.2.1/internal0707010000006C000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001900000000grant-0.2.1/internal/bus0707010000006D000081A4000000000000000000000001668D56C300000221000000000000000000000000000000000000002000000000grant-0.2.1/internal/bus/bus.gopackage bus import "github.com/wagoodman/go-partybus" var publisher partybus.Publisher // Set sets the singleton event bus publisher. This is optional; if no bus is provided, the library will // behave no differently than if a bus had been provided. func Set(p partybus.Publisher) { publisher = p } func Get() partybus.Publisher { return publisher } // Publish an event onto the bus. If there is no bus set by the calling application, this does nothing. func Publish(e partybus.Event) { if publisher != nil { publisher.Publish(e) } } 0707010000006E000081A4000000000000000000000001668D56C3000003F5000000000000000000000000000000000000002400000000grant-0.2.1/internal/bus/helpers.gopackage bus import ( "github.com/wagoodman/go-partybus" "github.com/wagoodman/go-progress" "github.com/anchore/clio" "github.com/anchore/grant/event" "github.com/anchore/grant/internal/redact" ) func Exit() { Publish(clio.ExitEvent(false)) } func ExitWithInterrupt() { Publish(clio.ExitEvent(true)) } func Report(report string) { if len(report) == 0 { return } report = redact.Apply(report) Publish(partybus.Event{ Type: event.CLIReport, Value: report, }) } func Notify(message string) { Publish(partybus.Event{ Type: event.CLINotification, Value: message, }) } func PublishTask(titles event.Title, context string, total int) *event.ManualStagedProgress { prog := &event.ManualStagedProgress{ Manual: progress.NewManual(int64(total)), AtomicStage: progress.NewAtomicStage(""), } Publish(partybus.Event{ Type: event.TaskStartedEvent, Source: event.Task{ Title: titles, Context: context, }, Value: progress.StagedProgressable(prog), }) return prog } 0707010000006F000081A4000000000000000000000001668D56C300000058000000000000000000000000000000000000001E00000000grant-0.2.1/internal/grant.gopackage internal const ( ApplicationName = "grant" ApplicationVersion = "0.0.1" ) 07070100000070000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001B00000000grant-0.2.1/internal/input07070100000071000081A4000000000000000000000001668D56C3000006A1000000000000000000000000000000000000002400000000grant-0.2.1/internal/input/input.gopackage input import ( "bytes" "fmt" "io" "os" "github.com/mitchellh/go-homedir" "github.com/pkg/errors" ) // IsStdinPipeOrRedirect returns true if stdin is provided via pipe or redirect func IsStdinPipeOrRedirect() (bool, error) { fi, err := os.Stdin.Stat() if err != nil { return false, fmt.Errorf("unable to determine if there is piped input: %w", err) } // note: we should NOT use the absence of a character device here as the hint that there may be input expected // on stdin, as running grant as a subprocess you would expect no character device to be present but input can // be from either stdin or indicated by the CLI. Checking if stdin is a pipe is the most direct way to determine // if there *may* be bytes that will show up on stdin that should be used for the analysis source. return fi.Mode()&os.ModeNamedPipe != 0 || fi.Size() > 0, nil } func GetReader(src string) (io.ReadSeeker, error) { switch src { case "-": return decodeStdin(os.Stdin) default: fileLocation, err := homedir.Expand(src) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("could not check licenses; could not expand path: %s ", src)) } reader, err := os.Open(fileLocation) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("could not check licenses; could not open file: %s ", fileLocation)) } return reader, nil } } func decodeStdin(r io.Reader) (io.ReadSeeker, error) { b, err := io.ReadAll(r) if err != nil { return nil, fmt.Errorf("failed reading stdin: %w", err) } reader := bytes.NewReader(b) _, err = reader.Seek(0, io.SeekStart) if err != nil { return nil, fmt.Errorf("failed to parse stdin: %w", err) } return reader, nil } 07070100000072000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001900000000grant-0.2.1/internal/log07070100000073000081A4000000000000000000000001668D56C300000A41000000000000000000000000000000000000002000000000grant-0.2.1/internal/log/log.gopackage log import ( "github.com/anchore/go-logger" "github.com/anchore/go-logger/adapter/discard" redactLogger "github.com/anchore/go-logger/adapter/redact" "github.com/anchore/grant/internal/redact" ) // log is the singleton used to facilitate logging internally within var log = discard.New() func Set(l logger.Logger) { // though the application will automatically have a redaction logger, library consumers may not be doing this. // for this reason we additionally ensure there is a redaction logger configured for any logger passed. The // source of truth for redaction values is still in the internal redact package. If the passed logger is already // redacted, then this is a no-op. store := redact.Get() if store != nil { l = redactLogger.New(l, store) } log = l } func Get() logger.Logger { return log } // Errorf takes a formatted template string and template arguments for the error logging level. func Errorf(format string, args ...interface{}) { log.Errorf(format, args...) } // Error logs the given arguments at the error logging level. func Error(args ...interface{}) { log.Error(args...) } // Warnf takes a formatted template string and template arguments for the warning logging level. func Warnf(format string, args ...interface{}) { log.Warnf(format, args...) } // Warn logs the given arguments at the warning logging level. func Warn(args ...interface{}) { log.Warn(args...) } // Infof takes a formatted template string and template arguments for the info logging level. func Infof(format string, args ...interface{}) { log.Infof(format, args...) } // Info logs the given arguments at the info logging level. func Info(args ...interface{}) { log.Info(args...) } // Debugf takes a formatted template string and template arguments for the debug logging level. func Debugf(format string, args ...interface{}) { log.Debugf(format, args...) } // Debug logs the given arguments at the debug logging level. func Debug(args ...interface{}) { log.Debug(args...) } // Tracef takes a formatted template string and template arguments for the trace logging level. func Tracef(format string, args ...interface{}) { log.Tracef(format, args...) } // Trace logs the given arguments at the trace logging level. func Trace(args ...interface{}) { log.Trace(args...) } // WithFields returns a message logger with multiple key-value fields. func WithFields(fields ...interface{}) logger.MessageLogger { return log.WithFields(fields...) } // Nested returns a new logger with hard coded key-value pairs func Nested(fields ...interface{}) logger.Logger { return log.Nested(fields...) } 07070100000074000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001C00000000grant-0.2.1/internal/redact07070100000075000081A4000000000000000000000001668D56C300000481000000000000000000000000000000000000002600000000grant-0.2.1/internal/redact/redact.gopackage redact import "github.com/anchore/go-logger/adapter/redact" var store redact.Store func Set(s redact.Store) { if store != nil { // if someone is trying to set a redaction store and we already have one then something is wrong. The store // that we're replacing might already have values in it, so we should never replace it. panic("replace existing redaction store (probably unintentional)") } store = s } func Get() redact.Store { return store } func Add(vs ...string) { if store == nil { // if someone is trying to add values that should never be output and we don't have a store then something is wrong. // we should never accidentally output values that should be redacted, thus we panic here. panic("cannot add redactions without a store") } store.Add(vs...) } func Apply(value string) string { if store == nil { // if someone is trying to add values that should never be output and we don't have a store then something is wrong. // we should never accidentally output values that should be redacted, thus we panic here. panic("cannot apply redactions without a store") } return store.RedactString(value) } 07070100000076000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000002100000000grant-0.2.1/internal/spdxlicense07070100000077000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000002A00000000grant-0.2.1/internal/spdxlicense/generate07070100000078000081A4000000000000000000000001668D56C300000A0F000000000000000000000000000000000000004400000000grant-0.2.1/internal/spdxlicense/generate/generate_license_index.go//go:generate go run generate_license_index.go package main import ( "encoding/json" "fmt" "net/http" "os" "strings" "text/template" "time" "github.com/anchore/grant/internal/spdxlicense" ) const ( generates = "../license_index.go" ) var FuncMap = template.FuncMap{ "ToLower": func(format string, args ...interface{}) string { return strings.ToLower(fmt.Sprintf(format, args...)) }, } var codeTemplate = template.Must(template.New("license_index.go").Funcs(FuncMap).Parse(`// Code generated by internal/spdxlicense/generate/generate_license_index.go; DO NOT EDIT. // This file was generated by go generate; DO NOT EDIT; {{ .Timestamp }} // License source: {{ .URL }} package spdxlicense const Version = {{ printf "%q" .Version }} const ReleaseData = {{ printf "%q" .ReleaseDate }} var index = map[string]SPDXLicense{ {{- range .Licenses }} {{ ToLower "%q" .LicenseID }}: { Reference: {{ printf "%q" .Reference }}, IsDeprecatedLicenseID: {{ .IsDeprecatedLicenseID }}, DetailsURL: {{ printf "%q" .DetailsURL }}, ReferenceNumber: {{ .ReferenceNumber }}, Name: {{ printf "%q" .Name }}, LicenseID: {{ printf "%q" .LicenseID }}, SeeAlso: []string{ {{- range .SeeAlso }} {{ printf "%q" . }}, {{- end }} }, IsOsiApproved: {{ .IsOsiApproved }}, }, {{- end }} } `)) func main() { if err := generate(); err != nil { fmt.Println(err) os.Exit(1) } fmt.Println("generated", generates) } func generate() error { spdxLicenseResposne, err := fetchLicenses() if err != nil { return err } if err := os.Remove(generates); err != nil && !os.IsNotExist(err) { fmt.Println("Error deleting existing file:", err) return err } f, err := os.Create(generates) if err != nil { return err } defer f.Close() return codeTemplate.Execute(f, struct { Timestamp string URL string Version string ReleaseDate string Licenses []spdxlicense.SPDXLicense }{ Timestamp: time.Now().UTC().Format(time.RFC3339), URL: "https://spdx.org/licenses/licenses.json", Version: spdxLicenseResposne.LicenseListVersion, ReleaseDate: spdxLicenseResposne.ReleaseDate, Licenses: spdxLicenseResposne.Licenses, }) } func fetchLicenses() (r *spdxlicense.Response, err error) { response, err := http.Get("https://spdx.org/licenses/licenses.json") if err != nil { return r, err } defer response.Body.Close() var spdxLicenseResponse spdxlicense.Response if err := json.NewDecoder(response.Body).Decode(&spdxLicenseResponse); err != nil { return r, err } return &spdxLicenseResponse, nil } 07070100000079000081A4000000000000000000000001668D56C300000452000000000000000000000000000000000000002C00000000grant-0.2.1/internal/spdxlicense/license.gopackage spdxlicense import ( "fmt" "strings" ) // SPDXLicenseResponse is the response from the SPDX license list endpoint // https://spdx.org/licenses/licenses.json type Response struct { LicenseListVersion string `json:"licenseListVersion"` ReleaseDate string `json:"releaseDate"` Licenses []SPDXLicense `json:"licenses"` } type SPDXLicense struct { Reference string `json:"reference"` IsDeprecatedLicenseID bool `json:"isDeprecatedLicenseId"` DetailsURL string `json:"detailsUrl"` ReferenceNumber int `json:"referenceNumber"` Name string `json:"name"` LicenseID string `json:"licenseId"` SeeAlso []string `json:"seeAlso"` IsOsiApproved bool `json:"isOsiApproved"` } func GetLicenseByID(id string) (license SPDXLicense, err error) { if index == nil { return license, fmt.Errorf("SPDX license index is nil") } license, ok := index[strings.ToLower(id)] if !ok { return license, fmt.Errorf("SPDX license %s not found", id) } return license, nil } 0707010000007A000081A4000000000000000000000001668D56C300043B23000000000000000000000000000000000000003200000000grant-0.2.1/internal/spdxlicense/license_index.go// Code generated by internal/spdxlicense/generate/generate_license_index.go; DO NOT EDIT. // This file was generated by go generate; DO NOT EDIT; 2023-11-20T17:52:23Z // License source: https://spdx.org/licenses/licenses.json package spdxlicense const Version = "3.22" const ReleaseData = "2023-10-05" var index = map[string]SPDXLicense{ "qhull": { Reference: "https://spdx.org/licenses/Qhull.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Qhull.json", ReferenceNumber: 0, Name: "Qhull License", LicenseID: "Qhull", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Qhull", }, IsOsiApproved: false, }, "nosl": { Reference: "https://spdx.org/licenses/NOSL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NOSL.json", ReferenceNumber: 1, Name: "Netizen Open Source License", LicenseID: "NOSL", SeeAlso: []string{ "http://bits.netizen.com.au/licenses/NOSL/nosl.txt", }, IsOsiApproved: false, }, "cc-by-nd-2.5": { Reference: "https://spdx.org/licenses/CC-BY-ND-2.5.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-ND-2.5.json", ReferenceNumber: 2, Name: "Creative Commons Attribution No Derivatives 2.5 Generic", LicenseID: "CC-BY-ND-2.5", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nd/2.5/legalcode", }, IsOsiApproved: false, }, "o-uda-1.0": { Reference: "https://spdx.org/licenses/O-UDA-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/O-UDA-1.0.json", ReferenceNumber: 3, Name: "Open Use of Data Agreement v1.0", LicenseID: "O-UDA-1.0", SeeAlso: []string{ "https://github.com/microsoft/Open-Use-of-Data-Agreement/blob/v1.0/O-UDA-1.0.md", "https://cdla.dev/open-use-of-data-agreement-v1-0/", }, IsOsiApproved: false, }, "drl-1.0": { Reference: "https://spdx.org/licenses/DRL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/DRL-1.0.json", ReferenceNumber: 4, Name: "Detection Rule License 1.0", LicenseID: "DRL-1.0", SeeAlso: []string{ "https://github.com/Neo23x0/sigma/blob/master/LICENSE.Detection.Rules.md", }, IsOsiApproved: false, }, "imagemagick": { Reference: "https://spdx.org/licenses/ImageMagick.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ImageMagick.json", ReferenceNumber: 5, Name: "ImageMagick License", LicenseID: "ImageMagick", SeeAlso: []string{ "http://www.imagemagick.org/script/license.php", }, IsOsiApproved: false, }, "mpich2": { Reference: "https://spdx.org/licenses/mpich2.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/mpich2.json", ReferenceNumber: 6, Name: "mpich2 License", LicenseID: "mpich2", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/MIT", }, IsOsiApproved: false, }, "cc-by-sa-4.0": { Reference: "https://spdx.org/licenses/CC-BY-SA-4.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-SA-4.0.json", ReferenceNumber: 7, Name: "Creative Commons Attribution Share Alike 4.0 International", LicenseID: "CC-BY-SA-4.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-sa/4.0/legalcode", }, IsOsiApproved: false, }, "spl-1.0": { Reference: "https://spdx.org/licenses/SPL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SPL-1.0.json", ReferenceNumber: 8, Name: "Sun Public License v1.0", LicenseID: "SPL-1.0", SeeAlso: []string{ "https://opensource.org/licenses/SPL-1.0", }, IsOsiApproved: true, }, "mcphee-slideshow": { Reference: "https://spdx.org/licenses/McPhee-slideshow.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/McPhee-slideshow.json", ReferenceNumber: 9, Name: "McPhee Slideshow License", LicenseID: "McPhee-slideshow", SeeAlso: []string{ "https://mirror.las.iastate.edu/tex-archive/graphics/metapost/contrib/macros/slideshow/slideshow.mp", }, IsOsiApproved: false, }, "mit-enna": { Reference: "https://spdx.org/licenses/MIT-enna.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MIT-enna.json", ReferenceNumber: 10, Name: "enna License", LicenseID: "MIT-enna", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/MIT#enna", }, IsOsiApproved: false, }, "osl-2.1": { Reference: "https://spdx.org/licenses/OSL-2.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OSL-2.1.json", ReferenceNumber: 11, Name: "Open Software License 2.1", LicenseID: "OSL-2.1", SeeAlso: []string{ "http://web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm", "https://opensource.org/licenses/OSL-2.1", }, IsOsiApproved: true, }, "gfdl-1.2-or-later": { Reference: "https://spdx.org/licenses/GFDL-1.2-or-later.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GFDL-1.2-or-later.json", ReferenceNumber: 12, Name: "GNU Free Documentation License v1.2 or later", LicenseID: "GFDL-1.2-or-later", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt", }, IsOsiApproved: false, }, "bsd-3-clause-lbnl": { Reference: "https://spdx.org/licenses/BSD-3-Clause-LBNL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-3-Clause-LBNL.json", ReferenceNumber: 13, Name: "Lawrence Berkeley National Labs BSD variant license", LicenseID: "BSD-3-Clause-LBNL", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/LBNLBSD", }, IsOsiApproved: true, }, "ofl-1.0-rfn": { Reference: "https://spdx.org/licenses/OFL-1.0-RFN.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OFL-1.0-RFN.json", ReferenceNumber: 14, Name: "SIL Open Font License 1.0 with Reserved Font Name", LicenseID: "OFL-1.0-RFN", SeeAlso: []string{ "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web", }, IsOsiApproved: false, }, "gpl-3.0": { Reference: "https://spdx.org/licenses/GPL-3.0.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/GPL-3.0.json", ReferenceNumber: 15, Name: "GNU General Public License v3.0 only", LicenseID: "GPL-3.0", SeeAlso: []string{ "https://www.gnu.org/licenses/gpl-3.0-standalone.html", "https://opensource.org/licenses/GPL-3.0", }, IsOsiApproved: true, }, "watcom-1.0": { Reference: "https://spdx.org/licenses/Watcom-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Watcom-1.0.json", ReferenceNumber: 16, Name: "Sybase Open Watcom Public License 1.0", LicenseID: "Watcom-1.0", SeeAlso: []string{ "https://opensource.org/licenses/Watcom-1.0", }, IsOsiApproved: true, }, "mpl-1.0": { Reference: "https://spdx.org/licenses/MPL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MPL-1.0.json", ReferenceNumber: 17, Name: "Mozilla Public License 1.0", LicenseID: "MPL-1.0", SeeAlso: []string{ "http://www.mozilla.org/MPL/MPL-1.0.html", "https://opensource.org/licenses/MPL-1.0", }, IsOsiApproved: true, }, "aladdin": { Reference: "https://spdx.org/licenses/Aladdin.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Aladdin.json", ReferenceNumber: 18, Name: "Aladdin Free Public License", LicenseID: "Aladdin", SeeAlso: []string{ "http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm", }, IsOsiApproved: false, }, "etalab-2.0": { Reference: "https://spdx.org/licenses/etalab-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/etalab-2.0.json", ReferenceNumber: 19, Name: "Etalab Open License 2.0", LicenseID: "etalab-2.0", SeeAlso: []string{ "https://github.com/DISIC/politique-de-contribution-open-source/blob/master/LICENSE.pdf", "https://raw.githubusercontent.com/DISIC/politique-de-contribution-open-source/master/LICENSE", }, IsOsiApproved: false, }, "copyleft-next-0.3.0": { Reference: "https://spdx.org/licenses/copyleft-next-0.3.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/copyleft-next-0.3.0.json", ReferenceNumber: 20, Name: "copyleft-next 0.3.0", LicenseID: "copyleft-next-0.3.0", SeeAlso: []string{ "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0", }, IsOsiApproved: false, }, "nlpl": { Reference: "https://spdx.org/licenses/NLPL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NLPL.json", ReferenceNumber: 21, Name: "No Limit Public License", LicenseID: "NLPL", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/NLPL", }, IsOsiApproved: false, }, "mplus": { Reference: "https://spdx.org/licenses/mplus.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/mplus.json", ReferenceNumber: 22, Name: "mplus Font License", LicenseID: "mplus", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing:Mplus?rd=Licensing/mplus", }, IsOsiApproved: false, }, "ecl-1.0": { Reference: "https://spdx.org/licenses/ECL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ECL-1.0.json", ReferenceNumber: 23, Name: "Educational Community License v1.0", LicenseID: "ECL-1.0", SeeAlso: []string{ "https://opensource.org/licenses/ECL-1.0", }, IsOsiApproved: true, }, "fwlw": { Reference: "https://spdx.org/licenses/fwlw.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/fwlw.json", ReferenceNumber: 24, Name: "fwlw License", LicenseID: "fwlw", SeeAlso: []string{ "https://mirrors.nic.cz/tex-archive/macros/latex/contrib/fwlw/README", }, IsOsiApproved: false, }, "blueoak-1.0.0": { Reference: "https://spdx.org/licenses/BlueOak-1.0.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BlueOak-1.0.0.json", ReferenceNumber: 25, Name: "Blue Oak Model License 1.0.0", LicenseID: "BlueOak-1.0.0", SeeAlso: []string{ "https://blueoakcouncil.org/license/1.0.0", }, IsOsiApproved: false, }, "jpnic": { Reference: "https://spdx.org/licenses/JPNIC.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/JPNIC.json", ReferenceNumber: 26, Name: "Japan Network Information Center License", LicenseID: "JPNIC", SeeAlso: []string{ "https://gitlab.isc.org/isc-projects/bind9/blob/master/COPYRIGHT#L366", }, IsOsiApproved: false, }, "afl-3.0": { Reference: "https://spdx.org/licenses/AFL-3.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/AFL-3.0.json", ReferenceNumber: 27, Name: "Academic Free License v3.0", LicenseID: "AFL-3.0", SeeAlso: []string{ "http://www.rosenlaw.com/AFL3.0.htm", "https://opensource.org/licenses/afl-3.0", }, IsOsiApproved: true, }, "cc-by-nc-sa-2.0-fr": { Reference: "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.json", ReferenceNumber: 28, Name: "Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France", LicenseID: "CC-BY-NC-SA-2.0-FR", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc-sa/2.0/fr/legalcode", }, IsOsiApproved: false, }, "gfdl-1.3-invariants-or-later": { Reference: "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.json", ReferenceNumber: 29, Name: "GNU Free Documentation License v1.3 or later - invariants", LicenseID: "GFDL-1.3-invariants-or-later", SeeAlso: []string{ "https://www.gnu.org/licenses/fdl-1.3.txt", }, IsOsiApproved: false, }, "cfitsio": { Reference: "https://spdx.org/licenses/CFITSIO.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CFITSIO.json", ReferenceNumber: 30, Name: "CFITSIO License", LicenseID: "CFITSIO", SeeAlso: []string{ "https://heasarc.gsfc.nasa.gov/docs/software/fitsio/c/f_user/node9.html", "https://heasarc.gsfc.nasa.gov/docs/software/ftools/fv/doc/license.html", }, IsOsiApproved: false, }, "gpl-1.0-only": { Reference: "https://spdx.org/licenses/GPL-1.0-only.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GPL-1.0-only.json", ReferenceNumber: 31, Name: "GNU General Public License v1.0 only", LicenseID: "GPL-1.0-only", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html", }, IsOsiApproved: false, }, "xskat": { Reference: "https://spdx.org/licenses/XSkat.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/XSkat.json", ReferenceNumber: 32, Name: "XSkat License", LicenseID: "XSkat", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/XSkat_License", }, IsOsiApproved: false, }, "cc-by-nd-2.0": { Reference: "https://spdx.org/licenses/CC-BY-ND-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-ND-2.0.json", ReferenceNumber: 33, Name: "Creative Commons Attribution No Derivatives 2.0 Generic", LicenseID: "CC-BY-ND-2.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nd/2.0/legalcode", }, IsOsiApproved: false, }, "cc-by-sa-3.0-igo": { Reference: "https://spdx.org/licenses/CC-BY-SA-3.0-IGO.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-SA-3.0-IGO.json", ReferenceNumber: 34, Name: "Creative Commons Attribution-ShareAlike 3.0 IGO", LicenseID: "CC-BY-SA-3.0-IGO", SeeAlso: []string{ "https://creativecommons.org/licenses/by-sa/3.0/igo/legalcode", }, IsOsiApproved: false, }, "cc-by-3.0-nl": { Reference: "https://spdx.org/licenses/CC-BY-3.0-NL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-3.0-NL.json", ReferenceNumber: 35, Name: "Creative Commons Attribution 3.0 Netherlands", LicenseID: "CC-BY-3.0-NL", SeeAlso: []string{ "https://creativecommons.org/licenses/by/3.0/nl/legalcode", }, IsOsiApproved: false, }, "fsful": { Reference: "https://spdx.org/licenses/FSFUL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/FSFUL.json", ReferenceNumber: 36, Name: "FSF Unlimited License", LicenseID: "FSFUL", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License", }, IsOsiApproved: false, }, "hpnd-export-us": { Reference: "https://spdx.org/licenses/HPND-export-US.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/HPND-export-US.json", ReferenceNumber: 37, Name: "HPND with US Government export control warning", LicenseID: "HPND-export-US", SeeAlso: []string{ "https://www.kermitproject.org/ck90.html#source", }, IsOsiApproved: false, }, "catosl-1.1": { Reference: "https://spdx.org/licenses/CATOSL-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CATOSL-1.1.json", ReferenceNumber: 38, Name: "Computer Associates Trusted Open Source License 1.1", LicenseID: "CATOSL-1.1", SeeAlso: []string{ "https://opensource.org/licenses/CATOSL-1.1", }, IsOsiApproved: true, }, "zpl-2.1": { Reference: "https://spdx.org/licenses/ZPL-2.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ZPL-2.1.json", ReferenceNumber: 39, Name: "Zope Public License 2.1", LicenseID: "ZPL-2.1", SeeAlso: []string{ "http://old.zope.org/Resources/ZPL/", }, IsOsiApproved: true, }, "cc-by-nc-sa-2.0-de": { Reference: "https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.json", ReferenceNumber: 40, Name: "Creative Commons Attribution Non Commercial Share Alike 2.0 Germany", LicenseID: "CC-BY-NC-SA-2.0-DE", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc-sa/2.0/de/legalcode", }, IsOsiApproved: false, }, "ogl-uk-1.0": { Reference: "https://spdx.org/licenses/OGL-UK-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OGL-UK-1.0.json", ReferenceNumber: 41, Name: "Open Government Licence v1.0", LicenseID: "OGL-UK-1.0", SeeAlso: []string{ "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/1/", }, IsOsiApproved: false, }, "bsd-3-clause-no-nuclear-warranty": { Reference: "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.json", ReferenceNumber: 42, Name: "BSD 3-Clause No Nuclear Warranty", LicenseID: "BSD-3-Clause-No-Nuclear-Warranty", SeeAlso: []string{ "https://jogamp.org/git/?p=gluegen.git;a=blob_plain;f=LICENSE.txt", }, IsOsiApproved: false, }, "tu-berlin-2.0": { Reference: "https://spdx.org/licenses/TU-Berlin-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/TU-Berlin-2.0.json", ReferenceNumber: 43, Name: "Technische Universitaet Berlin License 2.0", LicenseID: "TU-Berlin-2.0", SeeAlso: []string{ "https://github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt", }, IsOsiApproved: false, }, "gpl-2.0+": { Reference: "https://spdx.org/licenses/GPL-2.0+.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/GPL-2.0+.json", ReferenceNumber: 44, Name: "GNU General Public License v2.0 or later", LicenseID: "GPL-2.0+", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", "https://opensource.org/licenses/GPL-2.0", }, IsOsiApproved: true, }, "saxpath": { Reference: "https://spdx.org/licenses/Saxpath.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Saxpath.json", ReferenceNumber: 45, Name: "Saxpath License", LicenseID: "Saxpath", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Saxpath_License", }, IsOsiApproved: false, }, "zpl-2.0": { Reference: "https://spdx.org/licenses/ZPL-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ZPL-2.0.json", ReferenceNumber: 46, Name: "Zope Public License 2.0", LicenseID: "ZPL-2.0", SeeAlso: []string{ "http://old.zope.org/Resources/License/ZPL-2.0", "https://opensource.org/licenses/ZPL-2.0", }, IsOsiApproved: true, }, "bitstream-charter": { Reference: "https://spdx.org/licenses/Bitstream-Charter.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Bitstream-Charter.json", ReferenceNumber: 47, Name: "Bitstream Charter Font License", LicenseID: "Bitstream-Charter", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Charter#License_Text", "https://raw.githubusercontent.com/blackhole89/notekit/master/data/fonts/Charter%20license.txt", }, IsOsiApproved: false, }, "openssl": { Reference: "https://spdx.org/licenses/OpenSSL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OpenSSL.json", ReferenceNumber: 48, Name: "OpenSSL License", LicenseID: "OpenSSL", SeeAlso: []string{ "http://www.openssl.org/source/license.html", }, IsOsiApproved: false, }, "clartistic": { Reference: "https://spdx.org/licenses/ClArtistic.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ClArtistic.json", ReferenceNumber: 49, Name: "Clarified Artistic License", LicenseID: "ClArtistic", SeeAlso: []string{ "http://gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/", "http://www.ncftp.com/ncftp/doc/LICENSE.txt", }, IsOsiApproved: false, }, "mpl-2.0-no-copyleft-exception": { Reference: "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.json", ReferenceNumber: 50, Name: "Mozilla Public License 2.0 (no copyleft exception)", LicenseID: "MPL-2.0-no-copyleft-exception", SeeAlso: []string{ "https://www.mozilla.org/MPL/2.0/", "https://opensource.org/licenses/MPL-2.0", }, IsOsiApproved: true, }, "x11": { Reference: "https://spdx.org/licenses/X11.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/X11.json", ReferenceNumber: 51, Name: "X11 License", LicenseID: "X11", SeeAlso: []string{ "http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3", }, IsOsiApproved: false, }, "fsfullr": { Reference: "https://spdx.org/licenses/FSFULLR.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/FSFULLR.json", ReferenceNumber: 52, Name: "FSF Unlimited License (with License Retention)", LicenseID: "FSFULLR", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant", }, IsOsiApproved: false, }, "cc-by-4.0": { Reference: "https://spdx.org/licenses/CC-BY-4.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-4.0.json", ReferenceNumber: 53, Name: "Creative Commons Attribution 4.0 International", LicenseID: "CC-BY-4.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by/4.0/legalcode", }, IsOsiApproved: false, }, "cc-by-sa-3.0-de": { Reference: "https://spdx.org/licenses/CC-BY-SA-3.0-DE.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-SA-3.0-DE.json", ReferenceNumber: 54, Name: "Creative Commons Attribution Share Alike 3.0 Germany", LicenseID: "CC-BY-SA-3.0-DE", SeeAlso: []string{ "https://creativecommons.org/licenses/by-sa/3.0/de/legalcode", }, IsOsiApproved: false, }, "cc-by-sa-2.5": { Reference: "https://spdx.org/licenses/CC-BY-SA-2.5.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-SA-2.5.json", ReferenceNumber: 55, Name: "Creative Commons Attribution Share Alike 2.5 Generic", LicenseID: "CC-BY-SA-2.5", SeeAlso: []string{ "https://creativecommons.org/licenses/by-sa/2.5/legalcode", }, IsOsiApproved: false, }, "mpeg-ssg": { Reference: "https://spdx.org/licenses/MPEG-SSG.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MPEG-SSG.json", ReferenceNumber: 56, Name: "MPEG Software Simulation", LicenseID: "MPEG-SSG", SeeAlso: []string{ "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/ppm/ppmtompeg/jrevdct.c#l1189", }, IsOsiApproved: false, }, "wxwindows": { Reference: "https://spdx.org/licenses/wxWindows.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/wxWindows.json", ReferenceNumber: 57, Name: "wxWindows Library License", LicenseID: "wxWindows", SeeAlso: []string{ "https://opensource.org/licenses/WXwindows", }, IsOsiApproved: true, }, "lppl-1.0": { Reference: "https://spdx.org/licenses/LPPL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LPPL-1.0.json", ReferenceNumber: 58, Name: "LaTeX Project Public License v1.0", LicenseID: "LPPL-1.0", SeeAlso: []string{ "http://www.latex-project.org/lppl/lppl-1-0.txt", }, IsOsiApproved: false, }, "lgpl-2.0": { Reference: "https://spdx.org/licenses/LGPL-2.0.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/LGPL-2.0.json", ReferenceNumber: 59, Name: "GNU Library General Public License v2 only", LicenseID: "LGPL-2.0", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html", }, IsOsiApproved: true, }, "freeimage": { Reference: "https://spdx.org/licenses/FreeImage.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/FreeImage.json", ReferenceNumber: 60, Name: "FreeImage Public License v1.0", LicenseID: "FreeImage", SeeAlso: []string{ "http://freeimage.sourceforge.net/freeimage-license.txt", }, IsOsiApproved: false, }, "cern-ohl-1.2": { Reference: "https://spdx.org/licenses/CERN-OHL-1.2.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CERN-OHL-1.2.json", ReferenceNumber: 61, Name: "CERN Open Hardware Licence v1.2", LicenseID: "CERN-OHL-1.2", SeeAlso: []string{ "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.2", }, IsOsiApproved: false, }, "artistic-1.0-cl8": { Reference: "https://spdx.org/licenses/Artistic-1.0-cl8.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Artistic-1.0-cl8.json", ReferenceNumber: 62, Name: "Artistic License 1.0 w/clause 8", LicenseID: "Artistic-1.0-cl8", SeeAlso: []string{ "https://opensource.org/licenses/Artistic-1.0", }, IsOsiApproved: true, }, "lzma-sdk-9.22": { Reference: "https://spdx.org/licenses/LZMA-SDK-9.22.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LZMA-SDK-9.22.json", ReferenceNumber: 63, Name: "LZMA SDK License (versions 9.22 and beyond)", LicenseID: "LZMA-SDK-9.22", SeeAlso: []string{ "https://www.7-zip.org/sdk.html", "https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/", }, IsOsiApproved: false, }, "bsd-3-clause-no-nuclear-license-2014": { Reference: "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.json", ReferenceNumber: 64, Name: "BSD 3-Clause No Nuclear License 2014", LicenseID: "BSD-3-Clause-No-Nuclear-License-2014", SeeAlso: []string{ "https://java.net/projects/javaeetutorial/pages/BerkeleyLicense", }, IsOsiApproved: false, }, "cc-by-nd-3.0-de": { Reference: "https://spdx.org/licenses/CC-BY-ND-3.0-DE.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-ND-3.0-DE.json", ReferenceNumber: 65, Name: "Creative Commons Attribution No Derivatives 3.0 Germany", LicenseID: "CC-BY-ND-3.0-DE", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nd/3.0/de/legalcode", }, IsOsiApproved: false, }, "afmparse": { Reference: "https://spdx.org/licenses/Afmparse.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Afmparse.json", ReferenceNumber: 66, Name: "Afmparse License", LicenseID: "Afmparse", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Afmparse", }, IsOsiApproved: false, }, "cern-ohl-s-2.0": { Reference: "https://spdx.org/licenses/CERN-OHL-S-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CERN-OHL-S-2.0.json", ReferenceNumber: 67, Name: "CERN Open Hardware Licence Version 2 - Strongly Reciprocal", LicenseID: "CERN-OHL-S-2.0", SeeAlso: []string{ "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2", }, IsOsiApproved: true, }, "doc": { Reference: "https://spdx.org/licenses/DOC.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/DOC.json", ReferenceNumber: 68, Name: "DOC License", LicenseID: "DOC", SeeAlso: []string{ "http://www.cs.wustl.edu/~schmidt/ACE-copying.html", "https://www.dre.vanderbilt.edu/~schmidt/ACE-copying.html", }, IsOsiApproved: false, }, "gl2ps": { Reference: "https://spdx.org/licenses/GL2PS.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GL2PS.json", ReferenceNumber: 69, Name: "GL2PS License", LicenseID: "GL2PS", SeeAlso: []string{ "http://www.geuz.org/gl2ps/COPYING.GL2PS", }, IsOsiApproved: false, }, "ypl-1.1": { Reference: "https://spdx.org/licenses/YPL-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/YPL-1.1.json", ReferenceNumber: 70, Name: "Yahoo! Public License v1.1", LicenseID: "YPL-1.1", SeeAlso: []string{ "http://www.zimbra.com/license/yahoo_public_license_1.1.html", }, IsOsiApproved: false, }, "gfdl-1.2-only": { Reference: "https://spdx.org/licenses/GFDL-1.2-only.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GFDL-1.2-only.json", ReferenceNumber: 71, Name: "GNU Free Documentation License v1.2 only", LicenseID: "GFDL-1.2-only", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt", }, IsOsiApproved: false, }, "cc-by-nc-nd-3.0": { Reference: "https://spdx.org/licenses/CC-BY-NC-ND-3.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-ND-3.0.json", ReferenceNumber: 72, Name: "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported", LicenseID: "CC-BY-NC-ND-3.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode", }, IsOsiApproved: false, }, "ecos-2.0": { Reference: "https://spdx.org/licenses/eCos-2.0.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/eCos-2.0.json", ReferenceNumber: 73, Name: "eCos license version 2.0", LicenseID: "eCos-2.0", SeeAlso: []string{ "https://www.gnu.org/licenses/ecos-license.html", }, IsOsiApproved: false, }, "ofl-1.0-no-rfn": { Reference: "https://spdx.org/licenses/OFL-1.0-no-RFN.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OFL-1.0-no-RFN.json", ReferenceNumber: 74, Name: "SIL Open Font License 1.0 with no Reserved Font Name", LicenseID: "OFL-1.0-no-RFN", SeeAlso: []string{ "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web", }, IsOsiApproved: false, }, "sendmail": { Reference: "https://spdx.org/licenses/Sendmail.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Sendmail.json", ReferenceNumber: 75, Name: "Sendmail License", LicenseID: "Sendmail", SeeAlso: []string{ "http://www.sendmail.com/pdfs/open_source/sendmail_license.pdf", "https://web.archive.org/web/20160322142305/https://www.sendmail.com/pdfs/open_source/sendmail_license.pdf", }, IsOsiApproved: false, }, "agpl-3.0-only": { Reference: "https://spdx.org/licenses/AGPL-3.0-only.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/AGPL-3.0-only.json", ReferenceNumber: 76, Name: "GNU Affero General Public License v3.0 only", LicenseID: "AGPL-3.0-only", SeeAlso: []string{ "https://www.gnu.org/licenses/agpl.txt", "https://opensource.org/licenses/AGPL-3.0", }, IsOsiApproved: true, }, "cecill-2.0": { Reference: "https://spdx.org/licenses/CECILL-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CECILL-2.0.json", ReferenceNumber: 77, Name: "CeCILL Free Software License Agreement v2.0", LicenseID: "CECILL-2.0", SeeAlso: []string{ "http://www.cecill.info/licences/Licence_CeCILL_V2-en.html", }, IsOsiApproved: false, }, "mit-advertising": { Reference: "https://spdx.org/licenses/MIT-advertising.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MIT-advertising.json", ReferenceNumber: 78, Name: "Enlightenment License (e16)", LicenseID: "MIT-advertising", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/MIT_With_Advertising", }, IsOsiApproved: false, }, "snprintf": { Reference: "https://spdx.org/licenses/snprintf.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/snprintf.json", ReferenceNumber: 79, Name: "snprintf License", LicenseID: "snprintf", SeeAlso: []string{ "https://github.com/openssh/openssh-portable/blob/master/openbsd-compat/bsd-snprintf.c#L2", }, IsOsiApproved: false, }, "cc-by-nd-3.0": { Reference: "https://spdx.org/licenses/CC-BY-ND-3.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-ND-3.0.json", ReferenceNumber: 80, Name: "Creative Commons Attribution No Derivatives 3.0 Unported", LicenseID: "CC-BY-ND-3.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nd/3.0/legalcode", }, IsOsiApproved: false, }, "cc-by-2.5-au": { Reference: "https://spdx.org/licenses/CC-BY-2.5-AU.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-2.5-AU.json", ReferenceNumber: 81, Name: "Creative Commons Attribution 2.5 Australia", LicenseID: "CC-BY-2.5-AU", SeeAlso: []string{ "https://creativecommons.org/licenses/by/2.5/au/legalcode", }, IsOsiApproved: false, }, "naist-2003": { Reference: "https://spdx.org/licenses/NAIST-2003.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NAIST-2003.json", ReferenceNumber: 82, Name: "Nara Institute of Science and Technology License (2003)", LicenseID: "NAIST-2003", SeeAlso: []string{ "https://enterprise.dejacode.com/licenses/public/naist-2003/#license-text", "https://github.com/nodejs/node/blob/4a19cc8947b1bba2b2d27816ec3d0edf9b28e503/LICENSE#L343", }, IsOsiApproved: false, }, "nbpl-1.0": { Reference: "https://spdx.org/licenses/NBPL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NBPL-1.0.json", ReferenceNumber: 83, Name: "Net Boolean Public License v1", LicenseID: "NBPL-1.0", SeeAlso: []string{ "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=37b4b3f6cc4bf34e1d3dec61e69914b9819d8894", }, IsOsiApproved: false, }, "ruby": { Reference: "https://spdx.org/licenses/Ruby.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Ruby.json", ReferenceNumber: 84, Name: "Ruby License", LicenseID: "Ruby", SeeAlso: []string{ "https://www.ruby-lang.org/en/about/license.txt", }, IsOsiApproved: false, }, "hpnd-doc": { Reference: "https://spdx.org/licenses/HPND-doc.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/HPND-doc.json", ReferenceNumber: 85, Name: "Historical Permission Notice and Disclaimer - documentation variant", LicenseID: "HPND-doc", SeeAlso: []string{ "https://gitlab.freedesktop.org/xorg/lib/libxext/-/blob/master/COPYING?ref_type=heads#L185-197", "https://gitlab.freedesktop.org/xorg/lib/libxtst/-/blob/master/COPYING?ref_type=heads#L70-77", }, IsOsiApproved: false, }, "osl-2.0": { Reference: "https://spdx.org/licenses/OSL-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OSL-2.0.json", ReferenceNumber: 86, Name: "Open Software License 2.0", LicenseID: "OSL-2.0", SeeAlso: []string{ "http://web.archive.org/web/20041020171434/http://www.rosenlaw.com/osl2.0.html", }, IsOsiApproved: true, }, "gpl-2.0-only": { Reference: "https://spdx.org/licenses/GPL-2.0-only.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GPL-2.0-only.json", ReferenceNumber: 87, Name: "GNU General Public License v2.0 only", LicenseID: "GPL-2.0-only", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", "https://opensource.org/licenses/GPL-2.0", }, IsOsiApproved: true, }, "smppl": { Reference: "https://spdx.org/licenses/SMPPL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SMPPL.json", ReferenceNumber: 88, Name: "Secure Messaging Protocol Public License", LicenseID: "SMPPL", SeeAlso: []string{ "https://github.com/dcblake/SMP/blob/master/Documentation/License.txt", }, IsOsiApproved: false, }, "lzma-sdk-9.11-to-9.20": { Reference: "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.json", ReferenceNumber: 89, Name: "LZMA SDK License (versions 9.11 to 9.20)", LicenseID: "LZMA-SDK-9.11-to-9.20", SeeAlso: []string{ "https://www.7-zip.org/sdk.html", "https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/", }, IsOsiApproved: false, }, "oldap-2.6": { Reference: "https://spdx.org/licenses/OLDAP-2.6.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OLDAP-2.6.json", ReferenceNumber: 90, Name: "Open LDAP Public License v2.6", LicenseID: "OLDAP-2.6", SeeAlso: []string{ "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=1cae062821881f41b73012ba816434897abf4205", }, IsOsiApproved: false, }, "parity-7.0.0": { Reference: "https://spdx.org/licenses/Parity-7.0.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Parity-7.0.0.json", ReferenceNumber: 91, Name: "The Parity Public License 7.0.0", LicenseID: "Parity-7.0.0", SeeAlso: []string{ "https://paritylicense.com/versions/7.0.0.html", }, IsOsiApproved: false, }, "clips": { Reference: "https://spdx.org/licenses/Clips.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Clips.json", ReferenceNumber: 92, Name: "Clips License", LicenseID: "Clips", SeeAlso: []string{ "https://github.com/DrItanium/maya/blob/master/LICENSE.CLIPS", }, IsOsiApproved: false, }, "symlinks": { Reference: "https://spdx.org/licenses/Symlinks.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Symlinks.json", ReferenceNumber: 93, Name: "Symlinks License", LicenseID: "Symlinks", SeeAlso: []string{ "https://www.mail-archive.com/debian-bugs-rc@lists.debian.org/msg11494.html", }, IsOsiApproved: false, }, "oldap-1.1": { Reference: "https://spdx.org/licenses/OLDAP-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OLDAP-1.1.json", ReferenceNumber: 94, Name: "Open LDAP Public License v1.1", LicenseID: "OLDAP-1.1", SeeAlso: []string{ "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=806557a5ad59804ef3a44d5abfbe91d706b0791f", }, IsOsiApproved: false, }, "nicta-1.0": { Reference: "https://spdx.org/licenses/NICTA-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NICTA-1.0.json", ReferenceNumber: 95, Name: "NICTA Public Software License, Version 1.0", LicenseID: "NICTA-1.0", SeeAlso: []string{ "https://opensource.apple.com/source/mDNSResponder/mDNSResponder-320.10/mDNSPosix/nss_ReadMe.txt", }, IsOsiApproved: false, }, "python-ldap": { Reference: "https://spdx.org/licenses/python-ldap.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/python-ldap.json", ReferenceNumber: 96, Name: "Python ldap License", LicenseID: "python-ldap", SeeAlso: []string{ "https://github.com/zdohnal/hplip/blob/master/base/ldif.py", "https://sourceforge.net/projects/hplip/files/hplip/3.23.5/hplip-3.23.5.tar.gz/download", }, IsOsiApproved: false, }, "gpl-1.0": { Reference: "https://spdx.org/licenses/GPL-1.0.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/GPL-1.0.json", ReferenceNumber: 97, Name: "GNU General Public License v1.0 only", LicenseID: "GPL-1.0", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html", }, IsOsiApproved: false, }, "liliq-rplus-1.1": { Reference: "https://spdx.org/licenses/LiLiQ-Rplus-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LiLiQ-Rplus-1.1.json", ReferenceNumber: 98, Name: "Licence Libre du QuÊbec â RÊciprocitÊ forte version 1.1", LicenseID: "LiLiQ-Rplus-1.1", SeeAlso: []string{ "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/", "http://opensource.org/licenses/LiLiQ-Rplus-1.1", }, IsOsiApproved: true, }, "bsd-2-clause-patent": { Reference: "https://spdx.org/licenses/BSD-2-Clause-Patent.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-2-Clause-Patent.json", ReferenceNumber: 99, Name: "BSD-2-Clause Plus Patent License", LicenseID: "BSD-2-Clause-Patent", SeeAlso: []string{ "https://opensource.org/licenses/BSDplusPatent", }, IsOsiApproved: true, }, "cc-by-sa-1.0": { Reference: "https://spdx.org/licenses/CC-BY-SA-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-SA-1.0.json", ReferenceNumber: 100, Name: "Creative Commons Attribution Share Alike 1.0 Generic", LicenseID: "CC-BY-SA-1.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-sa/1.0/legalcode", }, IsOsiApproved: false, }, "lgpl-2.0-or-later": { Reference: "https://spdx.org/licenses/LGPL-2.0-or-later.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LGPL-2.0-or-later.json", ReferenceNumber: 101, Name: "GNU Library General Public License v2 or later", LicenseID: "LGPL-2.0-or-later", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html", }, IsOsiApproved: true, }, "intel-acpi": { Reference: "https://spdx.org/licenses/Intel-ACPI.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Intel-ACPI.json", ReferenceNumber: 102, Name: "Intel ACPI Software License Agreement", LicenseID: "Intel-ACPI", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement", }, IsOsiApproved: false, }, "cern-ohl-p-2.0": { Reference: "https://spdx.org/licenses/CERN-OHL-P-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CERN-OHL-P-2.0.json", ReferenceNumber: 103, Name: "CERN Open Hardware Licence Version 2 - Permissive", LicenseID: "CERN-OHL-P-2.0", SeeAlso: []string{ "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2", }, IsOsiApproved: true, }, "ssh-short": { Reference: "https://spdx.org/licenses/SSH-short.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SSH-short.json", ReferenceNumber: 104, Name: "SSH short notice", LicenseID: "SSH-short", SeeAlso: []string{ "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/pathnames.h", "http://web.mit.edu/kolya/.f/root/athena.mit.edu/sipb.mit.edu/project/openssh/OldFiles/src/openssh-2.9.9p2/ssh-add.1", "https://joinup.ec.europa.eu/svn/lesoll/trunk/italc/lib/src/dsa_key.cpp", }, IsOsiApproved: false, }, "kazlib": { Reference: "https://spdx.org/licenses/Kazlib.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Kazlib.json", ReferenceNumber: 105, Name: "Kazlib License", LicenseID: "Kazlib", SeeAlso: []string{ "http://git.savannah.gnu.org/cgit/kazlib.git/tree/except.c?id=0062df360c2d17d57f6af19b0e444c51feb99036", }, IsOsiApproved: false, }, "tosl": { Reference: "https://spdx.org/licenses/TOSL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/TOSL.json", ReferenceNumber: 106, Name: "Trusster Open Source License", LicenseID: "TOSL", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/TOSL", }, IsOsiApproved: false, }, "glwtpl": { Reference: "https://spdx.org/licenses/GLWTPL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GLWTPL.json", ReferenceNumber: 107, Name: "Good Luck With That Public License", LicenseID: "GLWTPL", SeeAlso: []string{ "https://github.com/me-shaon/GLWTPL/commit/da5f6bc734095efbacb442c0b31e33a65b9d6e85", }, IsOsiApproved: false, }, "bsd-3-clause-modification": { Reference: "https://spdx.org/licenses/BSD-3-Clause-Modification.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-3-Clause-Modification.json", ReferenceNumber: 108, Name: "BSD 3-Clause Modification", LicenseID: "BSD-3-Clause-Modification", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing:BSD#Modification_Variant", }, IsOsiApproved: false, }, "oldap-2.2": { Reference: "https://spdx.org/licenses/OLDAP-2.2.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OLDAP-2.2.json", ReferenceNumber: 109, Name: "Open LDAP Public License v2.2", LicenseID: "OLDAP-2.2", SeeAlso: []string{ "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=470b0c18ec67621c85881b2733057fecf4a1acc3", }, IsOsiApproved: false, }, "bsd-3-clause-no-nuclear-license": { Reference: "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.json", ReferenceNumber: 110, Name: "BSD 3-Clause No Nuclear License", LicenseID: "BSD-3-Clause-No-Nuclear-License", SeeAlso: []string{ "http://download.oracle.com/otn-pub/java/licenses/bsd.txt?AuthParam=1467140197_43d516ce1776bd08a58235a7785be1cc", }, IsOsiApproved: false, }, "torque-1.1": { Reference: "https://spdx.org/licenses/TORQUE-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/TORQUE-1.1.json", ReferenceNumber: 111, Name: "TORQUE v2.5+ Software License v1.1", LicenseID: "TORQUE-1.1", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/TORQUEv1.1", }, IsOsiApproved: false, }, "psf-2.0": { Reference: "https://spdx.org/licenses/PSF-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/PSF-2.0.json", ReferenceNumber: 112, Name: "Python Software Foundation License 2.0", LicenseID: "PSF-2.0", SeeAlso: []string{ "https://opensource.org/licenses/Python-2.0", }, IsOsiApproved: false, }, "cddl-1.1": { Reference: "https://spdx.org/licenses/CDDL-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CDDL-1.1.json", ReferenceNumber: 113, Name: "Common Development and Distribution License 1.1", LicenseID: "CDDL-1.1", SeeAlso: []string{ "http://glassfish.java.net/public/CDDL+GPL_1_1.html", "https://javaee.github.io/glassfish/LICENSE", }, IsOsiApproved: false, }, "cdl-1.0": { Reference: "https://spdx.org/licenses/CDL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CDL-1.0.json", ReferenceNumber: 114, Name: "Common Documentation License 1.0", LicenseID: "CDL-1.0", SeeAlso: []string{ "http://www.opensource.apple.com/cdl/", "https://fedoraproject.org/wiki/Licensing/Common_Documentation_License", "https://www.gnu.org/licenses/license-list.html#ACDL", }, IsOsiApproved: false, }, "oset-pl-2.1": { Reference: "https://spdx.org/licenses/OSET-PL-2.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OSET-PL-2.1.json", ReferenceNumber: 115, Name: "OSET Public License version 2.1", LicenseID: "OSET-PL-2.1", SeeAlso: []string{ "http://www.osetfoundation.org/public-license", "https://opensource.org/licenses/OPL-2.1", }, IsOsiApproved: true, }, "eupl-1.2": { Reference: "https://spdx.org/licenses/EUPL-1.2.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/EUPL-1.2.json", ReferenceNumber: 116, Name: "European Union Public License 1.2", LicenseID: "EUPL-1.2", SeeAlso: []string{ "https://joinup.ec.europa.eu/page/eupl-text-11-12", "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf", "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/2020-03/EUPL-1.2%20EN.txt", "https://joinup.ec.europa.eu/sites/default/files/inline-files/EUPL%20v1_2%20EN(1).txt", "http://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32017D0863", "https://opensource.org/licenses/EUPL-1.2", }, IsOsiApproved: true, }, "standardml-nj": { Reference: "https://spdx.org/licenses/StandardML-NJ.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/StandardML-NJ.json", ReferenceNumber: 117, Name: "Standard ML of New Jersey License", LicenseID: "StandardML-NJ", SeeAlso: []string{ "https://www.smlnj.org/license.html", }, IsOsiApproved: false, }, "cal-1.0": { Reference: "https://spdx.org/licenses/CAL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CAL-1.0.json", ReferenceNumber: 118, Name: "Cryptographic Autonomy License 1.0", LicenseID: "CAL-1.0", SeeAlso: []string{ "http://cryptographicautonomylicense.com/license-text.html", "https://opensource.org/licenses/CAL-1.0", }, IsOsiApproved: true, }, "opl-uk-3.0": { Reference: "https://spdx.org/licenses/OPL-UK-3.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OPL-UK-3.0.json", ReferenceNumber: 119, Name: "United Kingdom Open Parliament Licence v3.0", LicenseID: "OPL-UK-3.0", SeeAlso: []string{ "https://www.parliament.uk/site-information/copyright-parliament/open-parliament-licence/", }, IsOsiApproved: false, }, "cronyx": { Reference: "https://spdx.org/licenses/Cronyx.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Cronyx.json", ReferenceNumber: 120, Name: "Cronyx License", LicenseID: "Cronyx", SeeAlso: []string{ "https://gitlab.freedesktop.org/xorg/font/alias/-/blob/master/COPYING", "https://gitlab.freedesktop.org/xorg/font/cronyx-cyrillic/-/blob/master/COPYING", "https://gitlab.freedesktop.org/xorg/font/misc-cyrillic/-/blob/master/COPYING", "https://gitlab.freedesktop.org/xorg/font/screen-cyrillic/-/blob/master/COPYING", }, IsOsiApproved: false, }, "gfdl-1.1-or-later": { Reference: "https://spdx.org/licenses/GFDL-1.1-or-later.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GFDL-1.1-or-later.json", ReferenceNumber: 121, Name: "GNU Free Documentation License v1.1 or later", LicenseID: "GFDL-1.1-or-later", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt", }, IsOsiApproved: false, }, "afl-2.1": { Reference: "https://spdx.org/licenses/AFL-2.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/AFL-2.1.json", ReferenceNumber: 122, Name: "Academic Free License v2.1", LicenseID: "AFL-2.1", SeeAlso: []string{ "http://opensource.linux-mirror.org/licenses/afl-2.1.txt", }, IsOsiApproved: true, }, "afl-1.2": { Reference: "https://spdx.org/licenses/AFL-1.2.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/AFL-1.2.json", ReferenceNumber: 123, Name: "Academic Free License v1.2", LicenseID: "AFL-1.2", SeeAlso: []string{ "http://opensource.linux-mirror.org/licenses/afl-1.2.txt", "http://wayback.archive.org/web/20021204204652/http://www.opensource.org/licenses/academic.php", }, IsOsiApproved: true, }, "fdk-aac": { Reference: "https://spdx.org/licenses/FDK-AAC.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/FDK-AAC.json", ReferenceNumber: 124, Name: "Fraunhofer FDK AAC Codec Library", LicenseID: "FDK-AAC", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/FDK-AAC", "https://directory.fsf.org/wiki/License:Fdk", }, IsOsiApproved: false, }, "bsd-1-clause": { Reference: "https://spdx.org/licenses/BSD-1-Clause.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-1-Clause.json", ReferenceNumber: 125, Name: "BSD 1-Clause License", LicenseID: "BSD-1-Clause", SeeAlso: []string{ "https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision=326823", }, IsOsiApproved: true, }, "psfrag": { Reference: "https://spdx.org/licenses/psfrag.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/psfrag.json", ReferenceNumber: 126, Name: "psfrag License", LicenseID: "psfrag", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/psfrag", }, IsOsiApproved: false, }, "ofl-1.1-rfn": { Reference: "https://spdx.org/licenses/OFL-1.1-RFN.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OFL-1.1-RFN.json", ReferenceNumber: 127, Name: "SIL Open Font License 1.1 with Reserved Font Name", LicenseID: "OFL-1.1-RFN", SeeAlso: []string{ "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web", "https://opensource.org/licenses/OFL-1.1", }, IsOsiApproved: true, }, "cecill-1.0": { Reference: "https://spdx.org/licenses/CECILL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CECILL-1.0.json", ReferenceNumber: 128, Name: "CeCILL Free Software License Agreement v1.0", LicenseID: "CECILL-1.0", SeeAlso: []string{ "http://www.cecill.info/licences/Licence_CeCILL_V1-fr.html", }, IsOsiApproved: false, }, "tcp-wrappers": { Reference: "https://spdx.org/licenses/TCP-wrappers.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/TCP-wrappers.json", ReferenceNumber: 129, Name: "TCP Wrappers License", LicenseID: "TCP-wrappers", SeeAlso: []string{ "http://rc.quest.com/topics/openssh/license.php#tcpwrappers", }, IsOsiApproved: false, }, "cc-by-nc-nd-2.0": { Reference: "https://spdx.org/licenses/CC-BY-NC-ND-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-ND-2.0.json", ReferenceNumber: 130, Name: "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic", LicenseID: "CC-BY-NC-ND-2.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc-nd/2.0/legalcode", }, IsOsiApproved: false, }, "apl-1.0": { Reference: "https://spdx.org/licenses/APL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/APL-1.0.json", ReferenceNumber: 131, Name: "Adaptive Public License 1.0", LicenseID: "APL-1.0", SeeAlso: []string{ "https://opensource.org/licenses/APL-1.0", }, IsOsiApproved: true, }, "knuth-ctan": { Reference: "https://spdx.org/licenses/Knuth-CTAN.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Knuth-CTAN.json", ReferenceNumber: 132, Name: "Knuth CTAN License", LicenseID: "Knuth-CTAN", SeeAlso: []string{ "https://ctan.org/license/knuth", }, IsOsiApproved: false, }, "mit-testregex": { Reference: "https://spdx.org/licenses/MIT-testregex.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MIT-testregex.json", ReferenceNumber: 133, Name: "MIT testregex Variant", LicenseID: "MIT-testregex", SeeAlso: []string{ "https://github.com/dotnet/runtime/blob/55e1ac7c07df62c4108d4acedf78f77574470ce5/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/AttRegexTests.cs#L12-L28", }, IsOsiApproved: false, }, "osl-3.0": { Reference: "https://spdx.org/licenses/OSL-3.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OSL-3.0.json", ReferenceNumber: 134, Name: "Open Software License 3.0", LicenseID: "OSL-3.0", SeeAlso: []string{ "https://web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm", "https://opensource.org/licenses/OSL-3.0", }, IsOsiApproved: true, }, "linux-man-pages-copyleft-2-para": { Reference: "https://spdx.org/licenses/Linux-man-pages-copyleft-2-para.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Linux-man-pages-copyleft-2-para.json", ReferenceNumber: 135, Name: "Linux man-pages Copyleft - 2 paragraphs", LicenseID: "Linux-man-pages-copyleft-2-para", SeeAlso: []string{ "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/move_pages.2#n5", "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/migrate_pages.2#n8", }, IsOsiApproved: false, }, "oldap-2.0.1": { Reference: "https://spdx.org/licenses/OLDAP-2.0.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OLDAP-2.0.1.json", ReferenceNumber: 136, Name: "Open LDAP Public License v2.0.1", LicenseID: "OLDAP-2.0.1", SeeAlso: []string{ "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=b6d68acd14e51ca3aab4428bf26522aa74873f0e", }, IsOsiApproved: false, }, "beerware": { Reference: "https://spdx.org/licenses/Beerware.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Beerware.json", ReferenceNumber: 137, Name: "Beerware License", LicenseID: "Beerware", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Beerware", "https://people.freebsd.org/~phk/", }, IsOsiApproved: false, }, "apache-2.0": { Reference: "https://spdx.org/licenses/Apache-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Apache-2.0.json", ReferenceNumber: 138, Name: "Apache License 2.0", LicenseID: "Apache-2.0", SeeAlso: []string{ "https://www.apache.org/licenses/LICENSE-2.0", "https://opensource.org/licenses/Apache-2.0", }, IsOsiApproved: true, }, "cal-1.0-combined-work-exception": { Reference: "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.json", ReferenceNumber: 139, Name: "Cryptographic Autonomy License 1.0 (Combined Work Exception)", LicenseID: "CAL-1.0-Combined-Work-Exception", SeeAlso: []string{ "http://cryptographicautonomylicense.com/license-text.html", "https://opensource.org/licenses/CAL-1.0", }, IsOsiApproved: true, }, "gpl-2.0-with-autoconf-exception": { Reference: "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.json", ReferenceNumber: 140, Name: "GNU General Public License v2.0 w/Autoconf exception", LicenseID: "GPL-2.0-with-autoconf-exception", SeeAlso: []string{ "http://ac-archive.sourceforge.net/doc/copyright.html", }, IsOsiApproved: false, }, "bsd-3-clause-sun": { Reference: "https://spdx.org/licenses/BSD-3-Clause-Sun.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-3-Clause-Sun.json", ReferenceNumber: 141, Name: "BSD 3-Clause Sun Microsystems", LicenseID: "BSD-3-Clause-Sun", SeeAlso: []string{ "https://github.com/xmlark/msv/blob/b9316e2f2270bc1606952ea4939ec87fbba157f3/xsdlib/src/main/java/com/sun/msv/datatype/regexp/InternalImpl.java", }, IsOsiApproved: false, }, "makeindex": { Reference: "https://spdx.org/licenses/MakeIndex.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MakeIndex.json", ReferenceNumber: 142, Name: "MakeIndex License", LicenseID: "MakeIndex", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/MakeIndex", }, IsOsiApproved: false, }, "bsd-2-clause-netbsd": { Reference: "https://spdx.org/licenses/BSD-2-Clause-NetBSD.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/BSD-2-Clause-NetBSD.json", ReferenceNumber: 143, Name: "BSD 2-Clause NetBSD License", LicenseID: "BSD-2-Clause-NetBSD", SeeAlso: []string{ "http://www.netbsd.org/about/redistribution.html#default", }, IsOsiApproved: false, }, "gfdl-1.1-no-invariants-only": { Reference: "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.json", ReferenceNumber: 144, Name: "GNU Free Documentation License v1.1 only - no invariants", LicenseID: "GFDL-1.1-no-invariants-only", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt", }, IsOsiApproved: false, }, "ucl-1.0": { Reference: "https://spdx.org/licenses/UCL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/UCL-1.0.json", ReferenceNumber: 145, Name: "Upstream Compatibility License v1.0", LicenseID: "UCL-1.0", SeeAlso: []string{ "https://opensource.org/licenses/UCL-1.0", }, IsOsiApproved: true, }, "nasa-1.3": { Reference: "https://spdx.org/licenses/NASA-1.3.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NASA-1.3.json", ReferenceNumber: 146, Name: "NASA Open Source Agreement 1.3", LicenseID: "NASA-1.3", SeeAlso: []string{ "http://ti.arc.nasa.gov/opensource/nosa/", "https://opensource.org/licenses/NASA-1.3", }, IsOsiApproved: true, }, "ijg": { Reference: "https://spdx.org/licenses/IJG.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/IJG.json", ReferenceNumber: 147, Name: "Independent JPEG Group License", LicenseID: "IJG", SeeAlso: []string{ "http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev=1.2", }, IsOsiApproved: false, }, "xfig": { Reference: "https://spdx.org/licenses/Xfig.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Xfig.json", ReferenceNumber: 148, Name: "Xfig License", LicenseID: "Xfig", SeeAlso: []string{ "https://github.com/Distrotech/transfig/blob/master/transfig/transfig.c", "https://fedoraproject.org/wiki/Licensing:MIT#Xfig_Variant", "https://sourceforge.net/p/mcj/xfig/ci/master/tree/src/Makefile.am", }, IsOsiApproved: false, }, "noweb": { Reference: "https://spdx.org/licenses/Noweb.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Noweb.json", ReferenceNumber: 149, Name: "Noweb License", LicenseID: "Noweb", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Noweb", }, IsOsiApproved: false, }, "mup": { Reference: "https://spdx.org/licenses/Mup.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Mup.json", ReferenceNumber: 150, Name: "Mup License", LicenseID: "Mup", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Mup", }, IsOsiApproved: false, }, "cc-by-2.0": { Reference: "https://spdx.org/licenses/CC-BY-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-2.0.json", ReferenceNumber: 151, Name: "Creative Commons Attribution 2.0 Generic", LicenseID: "CC-BY-2.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by/2.0/legalcode", }, IsOsiApproved: false, }, "odc-by-1.0": { Reference: "https://spdx.org/licenses/ODC-By-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ODC-By-1.0.json", ReferenceNumber: 152, Name: "Open Data Commons Attribution License v1.0", LicenseID: "ODC-By-1.0", SeeAlso: []string{ "https://opendatacommons.org/licenses/by/1.0/", }, IsOsiApproved: false, }, "blessing": { Reference: "https://spdx.org/licenses/blessing.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/blessing.json", ReferenceNumber: 153, Name: "SQLite Blessing", LicenseID: "blessing", SeeAlso: []string{ "https://www.sqlite.org/src/artifact/e33a4df7e32d742a?ln=4-9", "https://sqlite.org/src/artifact/df5091916dbb40e6", }, IsOsiApproved: false, }, "ssh-openssh": { Reference: "https://spdx.org/licenses/SSH-OpenSSH.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SSH-OpenSSH.json", ReferenceNumber: 154, Name: "SSH OpenSSH license", LicenseID: "SSH-OpenSSH", SeeAlso: []string{ "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/LICENCE#L10", }, IsOsiApproved: false, }, "cc-by-nc-2.0": { Reference: "https://spdx.org/licenses/CC-BY-NC-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-2.0.json", ReferenceNumber: 155, Name: "Creative Commons Attribution Non Commercial 2.0 Generic", LicenseID: "CC-BY-NC-2.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc/2.0/legalcode", }, IsOsiApproved: false, }, "lppl-1.2": { Reference: "https://spdx.org/licenses/LPPL-1.2.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LPPL-1.2.json", ReferenceNumber: 156, Name: "LaTeX Project Public License v1.2", LicenseID: "LPPL-1.2", SeeAlso: []string{ "http://www.latex-project.org/lppl/lppl-1-2.txt", }, IsOsiApproved: false, }, "gfdl-1.3-invariants-only": { Reference: "https://spdx.org/licenses/GFDL-1.3-invariants-only.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GFDL-1.3-invariants-only.json", ReferenceNumber: 157, Name: "GNU Free Documentation License v1.3 only - invariants", LicenseID: "GFDL-1.3-invariants-only", SeeAlso: []string{ "https://www.gnu.org/licenses/fdl-1.3.txt", }, IsOsiApproved: false, }, "gfdl-1.2-no-invariants-only": { Reference: "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.json", ReferenceNumber: 158, Name: "GNU Free Documentation License v1.2 only - no invariants", LicenseID: "GFDL-1.2-no-invariants-only", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt", }, IsOsiApproved: false, }, "ofl-1.0": { Reference: "https://spdx.org/licenses/OFL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OFL-1.0.json", ReferenceNumber: 159, Name: "SIL Open Font License 1.0", LicenseID: "OFL-1.0", SeeAlso: []string{ "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web", }, IsOsiApproved: false, }, "sissl-1.2": { Reference: "https://spdx.org/licenses/SISSL-1.2.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SISSL-1.2.json", ReferenceNumber: 160, Name: "Sun Industry Standards Source License v1.2", LicenseID: "SISSL-1.2", SeeAlso: []string{ "http://gridscheduler.sourceforge.net/Gridengine_SISSL_license.html", }, IsOsiApproved: false, }, "tpl-1.0": { Reference: "https://spdx.org/licenses/TPL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/TPL-1.0.json", ReferenceNumber: 161, Name: "THOR Public License 1.0", LicenseID: "TPL-1.0", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing:ThorPublicLicense", }, IsOsiApproved: false, }, "lsof": { Reference: "https://spdx.org/licenses/lsof.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/lsof.json", ReferenceNumber: 162, Name: "lsof License", LicenseID: "lsof", SeeAlso: []string{ "https://github.com/lsof-org/lsof/blob/master/COPYING", }, IsOsiApproved: false, }, "agpl-1.0-or-later": { Reference: "https://spdx.org/licenses/AGPL-1.0-or-later.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/AGPL-1.0-or-later.json", ReferenceNumber: 163, Name: "Affero General Public License v1.0 or later", LicenseID: "AGPL-1.0-or-later", SeeAlso: []string{ "http://www.affero.org/oagpl.html", }, IsOsiApproved: false, }, "mitnfa": { Reference: "https://spdx.org/licenses/MITNFA.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MITNFA.json", ReferenceNumber: 164, Name: "MIT +no-false-attribs license", LicenseID: "MITNFA", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/MITNFA", }, IsOsiApproved: false, }, "metamail": { Reference: "https://spdx.org/licenses/metamail.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/metamail.json", ReferenceNumber: 165, Name: "metamail License", LicenseID: "metamail", SeeAlso: []string{ "https://github.com/Dual-Life/mime-base64/blob/master/Base64.xs#L12", }, IsOsiApproved: false, }, "imlib2": { Reference: "https://spdx.org/licenses/Imlib2.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Imlib2.json", ReferenceNumber: 166, Name: "Imlib2 License", LicenseID: "Imlib2", SeeAlso: []string{ "http://trac.enlightenment.org/e/browser/trunk/imlib2/COPYING", "https://git.enlightenment.org/legacy/imlib2.git/tree/COPYING", }, IsOsiApproved: false, }, "afl-2.0": { Reference: "https://spdx.org/licenses/AFL-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/AFL-2.0.json", ReferenceNumber: 167, Name: "Academic Free License v2.0", LicenseID: "AFL-2.0", SeeAlso: []string{ "http://wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt", }, IsOsiApproved: true, }, "eupl-1.0": { Reference: "https://spdx.org/licenses/EUPL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/EUPL-1.0.json", ReferenceNumber: 168, Name: "European Union Public License 1.0", LicenseID: "EUPL-1.0", SeeAlso: []string{ "http://ec.europa.eu/idabc/en/document/7330.html", "http://ec.europa.eu/idabc/servlets/Doc027f.pdf?id=31096", }, IsOsiApproved: false, }, "aal": { Reference: "https://spdx.org/licenses/AAL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/AAL.json", ReferenceNumber: 169, Name: "Attribution Assurance License", LicenseID: "AAL", SeeAlso: []string{ "https://opensource.org/licenses/attribution", }, IsOsiApproved: true, }, "ssh-keyscan": { Reference: "https://spdx.org/licenses/ssh-keyscan.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ssh-keyscan.json", ReferenceNumber: 170, Name: "ssh-keyscan License", LicenseID: "ssh-keyscan", SeeAlso: []string{ "https://github.com/openssh/openssh-portable/blob/master/LICENCE#L82", }, IsOsiApproved: false, }, "soundex": { Reference: "https://spdx.org/licenses/Soundex.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Soundex.json", ReferenceNumber: 171, Name: "Soundex License", LicenseID: "Soundex", SeeAlso: []string{ "https://metacpan.org/release/RJBS/Text-Soundex-3.05/source/Soundex.pm#L3-11", }, IsOsiApproved: false, }, "w3c-19980720": { Reference: "https://spdx.org/licenses/W3C-19980720.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/W3C-19980720.json", ReferenceNumber: 172, Name: "W3C Software Notice and License (1998-07-20)", LicenseID: "W3C-19980720", SeeAlso: []string{ "http://www.w3.org/Consortium/Legal/copyright-software-19980720.html", }, IsOsiApproved: false, }, "w3c": { Reference: "https://spdx.org/licenses/W3C.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/W3C.json", ReferenceNumber: 173, Name: "W3C Software Notice and License (2002-12-31)", LicenseID: "W3C", SeeAlso: []string{ "http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html", "https://opensource.org/licenses/W3C", }, IsOsiApproved: true, }, "bittorrent-1.1": { Reference: "https://spdx.org/licenses/BitTorrent-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BitTorrent-1.1.json", ReferenceNumber: 174, Name: "BitTorrent Open Source License v1.1", LicenseID: "BitTorrent-1.1", SeeAlso: []string{ "http://directory.fsf.org/wiki/License:BitTorrentOSL1.1", }, IsOsiApproved: false, }, "gpl-1.0+": { Reference: "https://spdx.org/licenses/GPL-1.0+.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/GPL-1.0+.json", ReferenceNumber: 175, Name: "GNU General Public License v1.0 or later", LicenseID: "GPL-1.0+", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html", }, IsOsiApproved: false, }, "spencer-99": { Reference: "https://spdx.org/licenses/Spencer-99.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Spencer-99.json", ReferenceNumber: 176, Name: "Spencer License 99", LicenseID: "Spencer-99", SeeAlso: []string{ "http://www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c", }, IsOsiApproved: false, }, "sleepycat": { Reference: "https://spdx.org/licenses/Sleepycat.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Sleepycat.json", ReferenceNumber: 177, Name: "Sleepycat License", LicenseID: "Sleepycat", SeeAlso: []string{ "https://opensource.org/licenses/Sleepycat", }, IsOsiApproved: true, }, "dl-de-zero-2.0": { Reference: "https://spdx.org/licenses/DL-DE-ZERO-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/DL-DE-ZERO-2.0.json", ReferenceNumber: 178, Name: "Data licence Germany â zero â version 2.0", LicenseID: "DL-DE-ZERO-2.0", SeeAlso: []string{ "https://www.govdata.de/dl-de/zero-2-0", }, IsOsiApproved: false, }, "bsd-3-clause": { Reference: "https://spdx.org/licenses/BSD-3-Clause.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-3-Clause.json", ReferenceNumber: 179, Name: "BSD 3-Clause \"New\" or \"Revised\" License", LicenseID: "BSD-3-Clause", SeeAlso: []string{ "https://opensource.org/licenses/BSD-3-Clause", "https://www.eclipse.org/org/documents/edl-v10.php", }, IsOsiApproved: true, }, "bsd-4-clause-shortened": { Reference: "https://spdx.org/licenses/BSD-4-Clause-Shortened.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-4-Clause-Shortened.json", ReferenceNumber: 180, Name: "BSD 4 Clause Shortened", LicenseID: "BSD-4-Clause-Shortened", SeeAlso: []string{ "https://metadata.ftp-master.debian.org/changelogs//main/a/arpwatch/arpwatch_2.1a15-7_copyright", }, IsOsiApproved: false, }, "shl-0.51": { Reference: "https://spdx.org/licenses/SHL-0.51.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SHL-0.51.json", ReferenceNumber: 181, Name: "Solderpad Hardware License, Version 0.51", LicenseID: "SHL-0.51", SeeAlso: []string{ "https://solderpad.org/licenses/SHL-0.51/", }, IsOsiApproved: false, }, "lgpl-2.1-only": { Reference: "https://spdx.org/licenses/LGPL-2.1-only.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LGPL-2.1-only.json", ReferenceNumber: 182, Name: "GNU Lesser General Public License v2.1 only", LicenseID: "LGPL-2.1-only", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", "https://opensource.org/licenses/LGPL-2.1", }, IsOsiApproved: true, }, "parity-6.0.0": { Reference: "https://spdx.org/licenses/Parity-6.0.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Parity-6.0.0.json", ReferenceNumber: 183, Name: "The Parity Public License 6.0.0", LicenseID: "Parity-6.0.0", SeeAlso: []string{ "https://paritylicense.com/versions/6.0.0.html", }, IsOsiApproved: false, }, "gpl-3.0-with-autoconf-exception": { Reference: "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.json", ReferenceNumber: 184, Name: "GNU General Public License v3.0 w/Autoconf exception", LicenseID: "GPL-3.0-with-autoconf-exception", SeeAlso: []string{ "https://www.gnu.org/licenses/autoconf-exception-3.0.html", }, IsOsiApproved: false, }, "mit-0": { Reference: "https://spdx.org/licenses/MIT-0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MIT-0.json", ReferenceNumber: 185, Name: "MIT No Attribution", LicenseID: "MIT-0", SeeAlso: []string{ "https://github.com/aws/mit-0", "https://romanrm.net/mit-zero", "https://github.com/awsdocs/aws-cloud9-user-guide/blob/master/LICENSE-SAMPLECODE", }, IsOsiApproved: true, }, "cc-pddc": { Reference: "https://spdx.org/licenses/CC-PDDC.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-PDDC.json", ReferenceNumber: 186, Name: "Creative Commons Public Domain Dedication and Certification", LicenseID: "CC-PDDC", SeeAlso: []string{ "https://creativecommons.org/licenses/publicdomain/", }, IsOsiApproved: false, }, "ulem": { Reference: "https://spdx.org/licenses/ulem.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ulem.json", ReferenceNumber: 187, Name: "ulem License", LicenseID: "ulem", SeeAlso: []string{ "https://mirrors.ctan.org/macros/latex/contrib/ulem/README", }, IsOsiApproved: false, }, "xinetd": { Reference: "https://spdx.org/licenses/xinetd.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/xinetd.json", ReferenceNumber: 188, Name: "xinetd License", LicenseID: "xinetd", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Xinetd_License", }, IsOsiApproved: false, }, "linux-man-pages-1-para": { Reference: "https://spdx.org/licenses/Linux-man-pages-1-para.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Linux-man-pages-1-para.json", ReferenceNumber: 189, Name: "Linux man-pages - 1 paragraph", LicenseID: "Linux-man-pages-1-para", SeeAlso: []string{ "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/getcpu.2#n4", }, IsOsiApproved: false, }, "oldap-2.8": { Reference: "https://spdx.org/licenses/OLDAP-2.8.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OLDAP-2.8.json", ReferenceNumber: 190, Name: "Open LDAP Public License v2.8", LicenseID: "OLDAP-2.8", SeeAlso: []string{ "http://www.openldap.org/software/release/license.html", }, IsOsiApproved: true, }, "oml": { Reference: "https://spdx.org/licenses/OML.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OML.json", ReferenceNumber: 191, Name: "Open Market License", LicenseID: "OML", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Open_Market_License", }, IsOsiApproved: false, }, "icu": { Reference: "https://spdx.org/licenses/ICU.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ICU.json", ReferenceNumber: 192, Name: "ICU License", LicenseID: "ICU", SeeAlso: []string{ "http://source.icu-project.org/repos/icu/icu/trunk/license.html", }, IsOsiApproved: false, }, "sgi-b-2.0": { Reference: "https://spdx.org/licenses/SGI-B-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SGI-B-2.0.json", ReferenceNumber: 193, Name: "SGI Free Software License B v2.0", LicenseID: "SGI-B-2.0", SeeAlso: []string{ "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf", }, IsOsiApproved: false, }, "antlr-pd-fallback": { Reference: "https://spdx.org/licenses/ANTLR-PD-fallback.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ANTLR-PD-fallback.json", ReferenceNumber: 194, Name: "ANTLR Software Rights Notice with license fallback", LicenseID: "ANTLR-PD-fallback", SeeAlso: []string{ "http://www.antlr2.org/license.html", }, IsOsiApproved: false, }, "dvipdfm": { Reference: "https://spdx.org/licenses/dvipdfm.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/dvipdfm.json", ReferenceNumber: 195, Name: "dvipdfm License", LicenseID: "dvipdfm", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/dvipdfm", }, IsOsiApproved: false, }, "gpl-3.0+": { Reference: "https://spdx.org/licenses/GPL-3.0+.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/GPL-3.0+.json", ReferenceNumber: 196, Name: "GNU General Public License v3.0 or later", LicenseID: "GPL-3.0+", SeeAlso: []string{ "https://www.gnu.org/licenses/gpl-3.0-standalone.html", "https://opensource.org/licenses/GPL-3.0", }, IsOsiApproved: true, }, "epl-2.0": { Reference: "https://spdx.org/licenses/EPL-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/EPL-2.0.json", ReferenceNumber: 197, Name: "Eclipse Public License 2.0", LicenseID: "EPL-2.0", SeeAlso: []string{ "https://www.eclipse.org/legal/epl-2.0", "https://www.opensource.org/licenses/EPL-2.0", }, IsOsiApproved: true, }, "oldap-1.3": { Reference: "https://spdx.org/licenses/OLDAP-1.3.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OLDAP-1.3.json", ReferenceNumber: 198, Name: "Open LDAP Public License v1.3", LicenseID: "OLDAP-1.3", SeeAlso: []string{ "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=e5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1", }, IsOsiApproved: false, }, "linux-man-pages-copyleft": { Reference: "https://spdx.org/licenses/Linux-man-pages-copyleft.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Linux-man-pages-copyleft.json", ReferenceNumber: 199, Name: "Linux man-pages Copyleft", LicenseID: "Linux-man-pages-copyleft", SeeAlso: []string{ "https://www.kernel.org/doc/man-pages/licenses.html", }, IsOsiApproved: false, }, "ofl-1.1-no-rfn": { Reference: "https://spdx.org/licenses/OFL-1.1-no-RFN.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OFL-1.1-no-RFN.json", ReferenceNumber: 200, Name: "SIL Open Font License 1.1 with no Reserved Font Name", LicenseID: "OFL-1.1-no-RFN", SeeAlso: []string{ "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web", "https://opensource.org/licenses/OFL-1.1", }, IsOsiApproved: true, }, "isc": { Reference: "https://spdx.org/licenses/ISC.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ISC.json", ReferenceNumber: 201, Name: "ISC License", LicenseID: "ISC", SeeAlso: []string{ "https://www.isc.org/licenses/", "https://www.isc.org/downloads/software-support-policy/isc-license/", "https://opensource.org/licenses/ISC", }, IsOsiApproved: true, }, "gfdl-1.1-invariants-only": { Reference: "https://spdx.org/licenses/GFDL-1.1-invariants-only.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GFDL-1.1-invariants-only.json", ReferenceNumber: 202, Name: "GNU Free Documentation License v1.1 only - invariants", LicenseID: "GFDL-1.1-invariants-only", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt", }, IsOsiApproved: false, }, "adobe-2006": { Reference: "https://spdx.org/licenses/Adobe-2006.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Adobe-2006.json", ReferenceNumber: 203, Name: "Adobe Systems Incorporated Source Code License Agreement", LicenseID: "Adobe-2006", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/AdobeLicense", }, IsOsiApproved: false, }, "cc-by-nc-nd-1.0": { Reference: "https://spdx.org/licenses/CC-BY-NC-ND-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-ND-1.0.json", ReferenceNumber: 204, Name: "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic", LicenseID: "CC-BY-NC-ND-1.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nd-nc/1.0/legalcode", }, IsOsiApproved: false, }, "dsdp": { Reference: "https://spdx.org/licenses/DSDP.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/DSDP.json", ReferenceNumber: 205, Name: "DSDP License", LicenseID: "DSDP", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/DSDP", }, IsOsiApproved: false, }, "d-fsl-1.0": { Reference: "https://spdx.org/licenses/D-FSL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/D-FSL-1.0.json", ReferenceNumber: 206, Name: "Deutsche Freie Software Lizenz", LicenseID: "D-FSL-1.0", SeeAlso: []string{ "http://www.dipp.nrw.de/d-fsl/lizenzen/", "http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/de/D-FSL-1_0_de.txt", "http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/en/D-FSL-1_0_en.txt", "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl", "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/deutsche-freie-software-lizenz", "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/german-free-software-license", "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_de.txt/at_download/file", "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_en.txt/at_download/file", }, IsOsiApproved: false, }, "shl-0.5": { Reference: "https://spdx.org/licenses/SHL-0.5.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SHL-0.5.json", ReferenceNumber: 207, Name: "Solderpad Hardware License v0.5", LicenseID: "SHL-0.5", SeeAlso: []string{ "https://solderpad.org/licenses/SHL-0.5/", }, IsOsiApproved: false, }, "schemereport": { Reference: "https://spdx.org/licenses/SchemeReport.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SchemeReport.json", ReferenceNumber: 208, Name: "Scheme Language Report License", LicenseID: "SchemeReport", SeeAlso: []string{}, IsOsiApproved: false, }, "mulanpsl-1.0": { Reference: "https://spdx.org/licenses/MulanPSL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MulanPSL-1.0.json", ReferenceNumber: 209, Name: "Mulan Permissive Software License, Version 1", LicenseID: "MulanPSL-1.0", SeeAlso: []string{ "https://license.coscl.org.cn/MulanPSL/", "https://github.com/yuwenlong/longphp/blob/25dfb70cc2a466dc4bb55ba30901cbce08d164b5/LICENSE", }, IsOsiApproved: false, }, "ntp": { Reference: "https://spdx.org/licenses/NTP.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NTP.json", ReferenceNumber: 210, Name: "NTP License", LicenseID: "NTP", SeeAlso: []string{ "https://opensource.org/licenses/NTP", }, IsOsiApproved: true, }, "jam": { Reference: "https://spdx.org/licenses/Jam.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Jam.json", ReferenceNumber: 211, Name: "Jam License", LicenseID: "Jam", SeeAlso: []string{ "https://www.boost.org/doc/libs/1_35_0/doc/html/jam.html", "https://web.archive.org/web/20160330173339/https://swarm.workshop.perforce.com/files/guest/perforce_software/jam/src/README", }, IsOsiApproved: true, }, "cc-by-sa-2.0-uk": { Reference: "https://spdx.org/licenses/CC-BY-SA-2.0-UK.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-SA-2.0-UK.json", ReferenceNumber: 212, Name: "Creative Commons Attribution Share Alike 2.0 England and Wales", LicenseID: "CC-BY-SA-2.0-UK", SeeAlso: []string{ "https://creativecommons.org/licenses/by-sa/2.0/uk/legalcode", }, IsOsiApproved: false, }, "bsd-3-clause-attribution": { Reference: "https://spdx.org/licenses/BSD-3-Clause-Attribution.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-3-Clause-Attribution.json", ReferenceNumber: 213, Name: "BSD with attribution", LicenseID: "BSD-3-Clause-Attribution", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution", }, IsOsiApproved: false, }, "lucida-bitmap-fonts": { Reference: "https://spdx.org/licenses/Lucida-Bitmap-Fonts.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Lucida-Bitmap-Fonts.json", ReferenceNumber: 214, Name: "Lucida Bitmap Fonts License", LicenseID: "Lucida-Bitmap-Fonts", SeeAlso: []string{ "https://gitlab.freedesktop.org/xorg/font/bh-100dpi/-/blob/master/COPYING?ref_type=heads", }, IsOsiApproved: false, }, "zimbra-1.4": { Reference: "https://spdx.org/licenses/Zimbra-1.4.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Zimbra-1.4.json", ReferenceNumber: 215, Name: "Zimbra Public License v1.4", LicenseID: "Zimbra-1.4", SeeAlso: []string{ "http://www.zimbra.com/legal/zimbra-public-license-1-4", }, IsOsiApproved: false, }, "cua-opl-1.0": { Reference: "https://spdx.org/licenses/CUA-OPL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CUA-OPL-1.0.json", ReferenceNumber: 216, Name: "CUA Office Public License v1.0", LicenseID: "CUA-OPL-1.0", SeeAlso: []string{ "https://opensource.org/licenses/CUA-OPL-1.0", }, IsOsiApproved: true, }, "bsd-2-clause": { Reference: "https://spdx.org/licenses/BSD-2-Clause.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-2-Clause.json", ReferenceNumber: 217, Name: "BSD 2-Clause \"Simplified\" License", LicenseID: "BSD-2-Clause", SeeAlso: []string{ "https://opensource.org/licenses/BSD-2-Clause", }, IsOsiApproved: true, }, "community-spec-1.0": { Reference: "https://spdx.org/licenses/Community-Spec-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Community-Spec-1.0.json", ReferenceNumber: 218, Name: "Community Specification License 1.0", LicenseID: "Community-Spec-1.0", SeeAlso: []string{ "https://github.com/CommunitySpecification/1.0/blob/master/1._Community_Specification_License-v1.md", }, IsOsiApproved: false, }, "oldap-2.0": { Reference: "https://spdx.org/licenses/OLDAP-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OLDAP-2.0.json", ReferenceNumber: 219, Name: "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)", LicenseID: "OLDAP-2.0", SeeAlso: []string{ "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=cbf50f4e1185a21abd4c0a54d3f4341fe28f36ea", }, IsOsiApproved: false, }, "diffmark": { Reference: "https://spdx.org/licenses/diffmark.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/diffmark.json", ReferenceNumber: 220, Name: "diffmark license", LicenseID: "diffmark", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/diffmark", }, IsOsiApproved: false, }, "abstyles": { Reference: "https://spdx.org/licenses/Abstyles.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Abstyles.json", ReferenceNumber: 221, Name: "Abstyles License", LicenseID: "Abstyles", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Abstyles", }, IsOsiApproved: false, }, "zeeff": { Reference: "https://spdx.org/licenses/Zeeff.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Zeeff.json", ReferenceNumber: 222, Name: "Zeeff License", LicenseID: "Zeeff", SeeAlso: []string{ "ftp://ftp.tin.org/pub/news/utils/newsx/newsx-1.6.tar.gz", }, IsOsiApproved: false, }, "brian-gladman-3-clause": { Reference: "https://spdx.org/licenses/Brian-Gladman-3-Clause.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Brian-Gladman-3-Clause.json", ReferenceNumber: 223, Name: "Brian Gladman 3-Clause License", LicenseID: "Brian-Gladman-3-Clause", SeeAlso: []string{ "https://github.com/SWI-Prolog/packages-clib/blob/master/sha1/brg_endian.h", }, IsOsiApproved: false, }, "bitstream-vera": { Reference: "https://spdx.org/licenses/Bitstream-Vera.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Bitstream-Vera.json", ReferenceNumber: 224, Name: "Bitstream Vera Font License", LicenseID: "Bitstream-Vera", SeeAlso: []string{ "https://web.archive.org/web/20080207013128/http://www.gnome.org/fonts/", "https://docubrain.com/sites/default/files/licenses/bitstream-vera.html", }, IsOsiApproved: false, }, "naumen": { Reference: "https://spdx.org/licenses/Naumen.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Naumen.json", ReferenceNumber: 225, Name: "Naumen Public License", LicenseID: "Naumen", SeeAlso: []string{ "https://opensource.org/licenses/Naumen", }, IsOsiApproved: true, }, "sgi-opengl": { Reference: "https://spdx.org/licenses/SGI-OpenGL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SGI-OpenGL.json", ReferenceNumber: 226, Name: "SGI OpenGL License", LicenseID: "SGI-OpenGL", SeeAlso: []string{ "https://gitlab.freedesktop.org/mesa/glw/-/blob/master/README?ref_type=heads", }, IsOsiApproved: false, }, "cc-by-sa-2.1-jp": { Reference: "https://spdx.org/licenses/CC-BY-SA-2.1-JP.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-SA-2.1-JP.json", ReferenceNumber: 227, Name: "Creative Commons Attribution Share Alike 2.1 Japan", LicenseID: "CC-BY-SA-2.1-JP", SeeAlso: []string{ "https://creativecommons.org/licenses/by-sa/2.1/jp/legalcode", }, IsOsiApproved: false, }, "cc-by-nd-4.0": { Reference: "https://spdx.org/licenses/CC-BY-ND-4.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-ND-4.0.json", ReferenceNumber: 228, Name: "Creative Commons Attribution No Derivatives 4.0 International", LicenseID: "CC-BY-ND-4.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nd/4.0/legalcode", }, IsOsiApproved: false, }, "mit-wu": { Reference: "https://spdx.org/licenses/MIT-Wu.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MIT-Wu.json", ReferenceNumber: 229, Name: "MIT Tom Wu Variant", LicenseID: "MIT-Wu", SeeAlso: []string{ "https://github.com/chromium/octane/blob/master/crypto.js", }, IsOsiApproved: false, }, "gnuplot": { Reference: "https://spdx.org/licenses/gnuplot.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/gnuplot.json", ReferenceNumber: 230, Name: "gnuplot License", LicenseID: "gnuplot", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Gnuplot", }, IsOsiApproved: false, }, "sax-pd": { Reference: "https://spdx.org/licenses/SAX-PD.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SAX-PD.json", ReferenceNumber: 231, Name: "Sax Public Domain Notice", LicenseID: "SAX-PD", SeeAlso: []string{ "http://www.saxproject.org/copying.html", }, IsOsiApproved: false, }, "hpnd-doc-sell": { Reference: "https://spdx.org/licenses/HPND-doc-sell.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/HPND-doc-sell.json", ReferenceNumber: 232, Name: "Historical Permission Notice and Disclaimer - documentation sell variant", LicenseID: "HPND-doc-sell", SeeAlso: []string{ "https://gitlab.freedesktop.org/xorg/lib/libxtst/-/blob/master/COPYING?ref_type=heads#L108-117", "https://gitlab.freedesktop.org/xorg/lib/libxext/-/blob/master/COPYING?ref_type=heads#L153-162", }, IsOsiApproved: false, }, "bittorrent-1.0": { Reference: "https://spdx.org/licenses/BitTorrent-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BitTorrent-1.0.json", ReferenceNumber: 233, Name: "BitTorrent Open Source License v1.0", LicenseID: "BitTorrent-1.0", SeeAlso: []string{ "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1=1.1&r2=1.1.1.1&diff_format=s", }, IsOsiApproved: false, }, "hp-1989": { Reference: "https://spdx.org/licenses/HP-1989.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/HP-1989.json", ReferenceNumber: 234, Name: "Hewlett-Packard 1989 License", LicenseID: "HP-1989", SeeAlso: []string{ "https://github.com/bleargh45/Data-UUID/blob/master/LICENSE", }, IsOsiApproved: false, }, "oclc-2.0": { Reference: "https://spdx.org/licenses/OCLC-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OCLC-2.0.json", ReferenceNumber: 235, Name: "OCLC Research Public License 2.0", LicenseID: "OCLC-2.0", SeeAlso: []string{ "http://www.oclc.org/research/activities/software/license/v2final.htm", "https://opensource.org/licenses/OCLC-2.0", }, IsOsiApproved: true, }, "ms-lpl": { Reference: "https://spdx.org/licenses/MS-LPL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MS-LPL.json", ReferenceNumber: 236, Name: "Microsoft Limited Public License", LicenseID: "MS-LPL", SeeAlso: []string{ "https://www.openhub.net/licenses/mslpl", "https://github.com/gabegundy/atlserver/blob/master/License.txt", "https://en.wikipedia.org/wiki/Shared_Source_Initiative#Microsoft_Limited_Public_License_(Ms-LPL)", }, IsOsiApproved: false, }, "artistic-2.0": { Reference: "https://spdx.org/licenses/Artistic-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Artistic-2.0.json", ReferenceNumber: 237, Name: "Artistic License 2.0", LicenseID: "Artistic-2.0", SeeAlso: []string{ "http://www.perlfoundation.org/artistic_license_2_0", "https://www.perlfoundation.org/artistic-license-20.html", "https://opensource.org/licenses/artistic-license-2.0", }, IsOsiApproved: true, }, "gfdl-1.2-invariants-or-later": { Reference: "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.json", ReferenceNumber: 238, Name: "GNU Free Documentation License v1.2 or later - invariants", LicenseID: "GFDL-1.2-invariants-or-later", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt", }, IsOsiApproved: false, }, "json": { Reference: "https://spdx.org/licenses/JSON.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/JSON.json", ReferenceNumber: 239, Name: "JSON License", LicenseID: "JSON", SeeAlso: []string{ "http://www.json.org/license.html", }, IsOsiApproved: false, }, "checkmk": { Reference: "https://spdx.org/licenses/checkmk.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/checkmk.json", ReferenceNumber: 240, Name: "Checkmk License", LicenseID: "checkmk", SeeAlso: []string{ "https://github.com/libcheck/check/blob/master/checkmk/checkmk.in", }, IsOsiApproved: false, }, "cc-by-nc-sa-4.0": { Reference: "https://spdx.org/licenses/CC-BY-NC-SA-4.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-SA-4.0.json", ReferenceNumber: 241, Name: "Creative Commons Attribution Non Commercial Share Alike 4.0 International", LicenseID: "CC-BY-NC-SA-4.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode", }, IsOsiApproved: false, }, "graphics-gems": { Reference: "https://spdx.org/licenses/Graphics-Gems.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Graphics-Gems.json", ReferenceNumber: 242, Name: "Graphics Gems License", LicenseID: "Graphics-Gems", SeeAlso: []string{ "https://github.com/erich666/GraphicsGems/blob/master/LICENSE.md", }, IsOsiApproved: false, }, "gd": { Reference: "https://spdx.org/licenses/GD.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GD.json", ReferenceNumber: 243, Name: "GD License", LicenseID: "GD", SeeAlso: []string{ "https://libgd.github.io/manuals/2.3.0/files/license-txt.html", }, IsOsiApproved: false, }, "0bsd": { Reference: "https://spdx.org/licenses/0BSD.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/0BSD.json", ReferenceNumber: 244, Name: "BSD Zero Clause License", LicenseID: "0BSD", SeeAlso: []string{ "http://landley.net/toybox/license.html", "https://opensource.org/licenses/0BSD", }, IsOsiApproved: true, }, "lgpl-2.1+": { Reference: "https://spdx.org/licenses/LGPL-2.1+.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/LGPL-2.1+.json", ReferenceNumber: 245, Name: "GNU Lesser General Public License v2.1 or later", LicenseID: "LGPL-2.1+", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", "https://opensource.org/licenses/LGPL-2.1", }, IsOsiApproved: true, }, "mit": { Reference: "https://spdx.org/licenses/MIT.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MIT.json", ReferenceNumber: 246, Name: "MIT License", LicenseID: "MIT", SeeAlso: []string{ "https://opensource.org/licenses/MIT", }, IsOsiApproved: true, }, "occt-pl": { Reference: "https://spdx.org/licenses/OCCT-PL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OCCT-PL.json", ReferenceNumber: 247, Name: "Open CASCADE Technology Public License", LicenseID: "OCCT-PL", SeeAlso: []string{ "http://www.opencascade.com/content/occt-public-license", }, IsOsiApproved: false, }, "lgpl-3.0-only": { Reference: "https://spdx.org/licenses/LGPL-3.0-only.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LGPL-3.0-only.json", ReferenceNumber: 248, Name: "GNU Lesser General Public License v3.0 only", LicenseID: "LGPL-3.0-only", SeeAlso: []string{ "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", "https://opensource.org/licenses/LGPL-3.0", }, IsOsiApproved: true, }, "adacore-doc": { Reference: "https://spdx.org/licenses/AdaCore-doc.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/AdaCore-doc.json", ReferenceNumber: 249, Name: "AdaCore Doc License", LicenseID: "AdaCore-doc", SeeAlso: []string{ "https://github.com/AdaCore/xmlada/blob/master/docs/index.rst", "https://github.com/AdaCore/gnatcoll-core/blob/master/docs/index.rst", "https://github.com/AdaCore/gnatcoll-db/blob/master/docs/index.rst", }, IsOsiApproved: false, }, "cc-by-nc-3.0": { Reference: "https://spdx.org/licenses/CC-BY-NC-3.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-3.0.json", ReferenceNumber: 250, Name: "Creative Commons Attribution Non Commercial 3.0 Unported", LicenseID: "CC-BY-NC-3.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc/3.0/legalcode", }, IsOsiApproved: false, }, "spencer-94": { Reference: "https://spdx.org/licenses/Spencer-94.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Spencer-94.json", ReferenceNumber: 251, Name: "Spencer License 94", LicenseID: "Spencer-94", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License", "https://metacpan.org/release/KNOK/File-MMagic-1.30/source/COPYING#L28", }, IsOsiApproved: false, }, "htmltidy": { Reference: "https://spdx.org/licenses/HTMLTIDY.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/HTMLTIDY.json", ReferenceNumber: 252, Name: "HTML Tidy License", LicenseID: "HTMLTIDY", SeeAlso: []string{ "https://github.com/htacg/tidy-html5/blob/next/README/LICENSE.md", }, IsOsiApproved: false, }, "gfdl-1.2-no-invariants-or-later": { Reference: "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.json", ReferenceNumber: 253, Name: "GNU Free Documentation License v1.2 or later - no invariants", LicenseID: "GFDL-1.2-no-invariants-or-later", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt", }, IsOsiApproved: false, }, "bsd-4.3tahoe": { Reference: "https://spdx.org/licenses/BSD-4.3TAHOE.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-4.3TAHOE.json", ReferenceNumber: 254, Name: "BSD 4.3 TAHOE License", LicenseID: "BSD-4.3TAHOE", SeeAlso: []string{ "https://github.com/389ds/389-ds-base/blob/main/ldap/include/sysexits-compat.h#L15", "https://git.savannah.gnu.org/cgit/indent.git/tree/doc/indent.texi?id=a74c6b4ee49397cf330b333da1042bffa60ed14f#n1788", }, IsOsiApproved: false, }, "giftware": { Reference: "https://spdx.org/licenses/Giftware.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Giftware.json", ReferenceNumber: 255, Name: "Giftware License", LicenseID: "Giftware", SeeAlso: []string{ "http://liballeg.org/license.html#allegro-4-the-giftware-license", }, IsOsiApproved: false, }, "mpl-1.1": { Reference: "https://spdx.org/licenses/MPL-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MPL-1.1.json", ReferenceNumber: 256, Name: "Mozilla Public License 1.1", LicenseID: "MPL-1.1", SeeAlso: []string{ "http://www.mozilla.org/MPL/MPL-1.1.html", "https://opensource.org/licenses/MPL-1.1", }, IsOsiApproved: true, }, "ogdl-taiwan-1.0": { Reference: "https://spdx.org/licenses/OGDL-Taiwan-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OGDL-Taiwan-1.0.json", ReferenceNumber: 257, Name: "Taiwan Open Government Data License, version 1.0", LicenseID: "OGDL-Taiwan-1.0", SeeAlso: []string{ "https://data.gov.tw/license", }, IsOsiApproved: false, }, "oldap-2.7": { Reference: "https://spdx.org/licenses/OLDAP-2.7.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OLDAP-2.7.json", ReferenceNumber: 258, Name: "Open LDAP Public License v2.7", LicenseID: "OLDAP-2.7", SeeAlso: []string{ "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=47c2415c1df81556eeb39be6cad458ef87c534a2", }, IsOsiApproved: false, }, "rsa-md": { Reference: "https://spdx.org/licenses/RSA-MD.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/RSA-MD.json", ReferenceNumber: 259, Name: "RSA Message-Digest License", LicenseID: "RSA-MD", SeeAlso: []string{ "http://www.faqs.org/rfcs/rfc1321.html", }, IsOsiApproved: false, }, "ferguson-twofish": { Reference: "https://spdx.org/licenses/Ferguson-Twofish.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Ferguson-Twofish.json", ReferenceNumber: 260, Name: "Ferguson Twofish License", LicenseID: "Ferguson-Twofish", SeeAlso: []string{ "https://github.com/wernerd/ZRTPCPP/blob/6b3cd8e6783642292bad0c21e3e5e5ce45ff3e03/cryptcommon/twofish.c#L113C3-L127", }, IsOsiApproved: false, }, "bsd-source-code": { Reference: "https://spdx.org/licenses/BSD-Source-Code.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-Source-Code.json", ReferenceNumber: 261, Name: "BSD Source Code Attribution", LicenseID: "BSD-Source-Code", SeeAlso: []string{ "https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt", }, IsOsiApproved: false, }, "aswf-digital-assets-1.0": { Reference: "https://spdx.org/licenses/ASWF-Digital-Assets-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ASWF-Digital-Assets-1.0.json", ReferenceNumber: 262, Name: "ASWF Digital Assets License version 1.0", LicenseID: "ASWF-Digital-Assets-1.0", SeeAlso: []string{ "https://github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.0.txt", }, IsOsiApproved: false, }, "ypl-1.0": { Reference: "https://spdx.org/licenses/YPL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/YPL-1.0.json", ReferenceNumber: 263, Name: "Yahoo! Public License v1.0", LicenseID: "YPL-1.0", SeeAlso: []string{ "http://www.zimbra.com/license/yahoo_public_license_1.0.html", }, IsOsiApproved: false, }, "oldap-2.1": { Reference: "https://spdx.org/licenses/OLDAP-2.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OLDAP-2.1.json", ReferenceNumber: 264, Name: "Open LDAP Public License v2.1", LicenseID: "OLDAP-2.1", SeeAlso: []string{ "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=b0d176738e96a0d3b9f85cb51e140a86f21be715", }, IsOsiApproved: false, }, "glulxe": { Reference: "https://spdx.org/licenses/Glulxe.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Glulxe.json", ReferenceNumber: 265, Name: "Glulxe License", LicenseID: "Glulxe", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Glulxe", }, IsOsiApproved: false, }, "postgresql": { Reference: "https://spdx.org/licenses/PostgreSQL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/PostgreSQL.json", ReferenceNumber: 266, Name: "PostgreSQL License", LicenseID: "PostgreSQL", SeeAlso: []string{ "http://www.postgresql.org/about/licence", "https://opensource.org/licenses/PostgreSQL", }, IsOsiApproved: true, }, "fair": { Reference: "https://spdx.org/licenses/Fair.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Fair.json", ReferenceNumber: 267, Name: "Fair License", LicenseID: "Fair", SeeAlso: []string{ "http://fairlicense.org/", "https://opensource.org/licenses/Fair", }, IsOsiApproved: true, }, "apsl-1.0": { Reference: "https://spdx.org/licenses/APSL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/APSL-1.0.json", ReferenceNumber: 268, Name: "Apple Public Source License 1.0", LicenseID: "APSL-1.0", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0", }, IsOsiApproved: true, }, "gpl-1.0-or-later": { Reference: "https://spdx.org/licenses/GPL-1.0-or-later.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GPL-1.0-or-later.json", ReferenceNumber: 269, Name: "GNU General Public License v1.0 or later", LicenseID: "GPL-1.0-or-later", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html", }, IsOsiApproved: false, }, "libutil-david-nugent": { Reference: "https://spdx.org/licenses/libutil-David-Nugent.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/libutil-David-Nugent.json", ReferenceNumber: 270, Name: "libutil David Nugent License", LicenseID: "libutil-David-Nugent", SeeAlso: []string{ "http://web.mit.edu/freebsd/head/lib/libutil/login_ok.3", "https://cgit.freedesktop.org/libbsd/tree/man/setproctitle.3bsd", }, IsOsiApproved: false, }, "scea": { Reference: "https://spdx.org/licenses/SCEA.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SCEA.json", ReferenceNumber: 271, Name: "SCEA Shared Source License", LicenseID: "SCEA", SeeAlso: []string{ "http://research.scea.com/scea_shared_source_license.html", }, IsOsiApproved: false, }, "bsd-3-clause-no-military-license": { Reference: "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.json", ReferenceNumber: 272, Name: "BSD 3-Clause No Military License", LicenseID: "BSD-3-Clause-No-Military-License", SeeAlso: []string{ "https://gitlab.syncad.com/hive/dhive/-/blob/master/LICENSE", "https://github.com/greymass/swift-eosio/blob/master/LICENSE", }, IsOsiApproved: false, }, "xnet": { Reference: "https://spdx.org/licenses/Xnet.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Xnet.json", ReferenceNumber: 273, Name: "X.Net License", LicenseID: "Xnet", SeeAlso: []string{ "https://opensource.org/licenses/Xnet", }, IsOsiApproved: true, }, "mit-feh": { Reference: "https://spdx.org/licenses/MIT-feh.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MIT-feh.json", ReferenceNumber: 274, Name: "feh License", LicenseID: "MIT-feh", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/MIT#feh", }, IsOsiApproved: false, }, "agpl-1.0-only": { Reference: "https://spdx.org/licenses/AGPL-1.0-only.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/AGPL-1.0-only.json", ReferenceNumber: 275, Name: "Affero General Public License v1.0 only", LicenseID: "AGPL-1.0-only", SeeAlso: []string{ "http://www.affero.org/oagpl.html", }, IsOsiApproved: false, }, "nokia": { Reference: "https://spdx.org/licenses/Nokia.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Nokia.json", ReferenceNumber: 276, Name: "Nokia Open Source License", LicenseID: "Nokia", SeeAlso: []string{ "https://opensource.org/licenses/nokia", }, IsOsiApproved: true, }, "cornell-lossless-jpeg": { Reference: "https://spdx.org/licenses/Cornell-Lossless-JPEG.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Cornell-Lossless-JPEG.json", ReferenceNumber: 277, Name: "Cornell Lossless JPEG License", LicenseID: "Cornell-Lossless-JPEG", SeeAlso: []string{ "https://android.googlesource.com/platform/external/dng_sdk/+/refs/heads/master/source/dng_lossless_jpeg.cpp#16", "https://www.mssl.ucl.ac.uk/~mcrw/src/20050920/proto.h", "https://gitlab.freedesktop.org/libopenraw/libopenraw/blob/master/lib/ljpegdecompressor.cpp#L32", }, IsOsiApproved: false, }, "swrule": { Reference: "https://spdx.org/licenses/swrule.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/swrule.json", ReferenceNumber: 278, Name: "swrule License", LicenseID: "swrule", SeeAlso: []string{ "https://ctan.math.utah.edu/ctan/tex-archive/macros/generic/misc/swrule.sty", }, IsOsiApproved: false, }, "osl-1.1": { Reference: "https://spdx.org/licenses/OSL-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OSL-1.1.json", ReferenceNumber: 279, Name: "Open Software License 1.1", LicenseID: "OSL-1.1", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/OSL1.1", }, IsOsiApproved: false, }, "gpl-2.0-with-bison-exception": { Reference: "https://spdx.org/licenses/GPL-2.0-with-bison-exception.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/GPL-2.0-with-bison-exception.json", ReferenceNumber: 280, Name: "GNU General Public License v2.0 w/Bison exception", LicenseID: "GPL-2.0-with-bison-exception", SeeAlso: []string{ "http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id=193d7c7054ba7197b0789e14965b739162319b5e#n141", }, IsOsiApproved: false, }, "epl-1.0": { Reference: "https://spdx.org/licenses/EPL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/EPL-1.0.json", ReferenceNumber: 281, Name: "Eclipse Public License 1.0", LicenseID: "EPL-1.0", SeeAlso: []string{ "http://www.eclipse.org/legal/epl-v10.html", "https://opensource.org/licenses/EPL-1.0", }, IsOsiApproved: true, }, "xfree86-1.1": { Reference: "https://spdx.org/licenses/XFree86-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/XFree86-1.1.json", ReferenceNumber: 282, Name: "XFree86 License 1.1", LicenseID: "XFree86-1.1", SeeAlso: []string{ "http://www.xfree86.org/current/LICENSE4.html", }, IsOsiApproved: false, }, "ucar": { Reference: "https://spdx.org/licenses/UCAR.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/UCAR.json", ReferenceNumber: 283, Name: "UCAR License", LicenseID: "UCAR", SeeAlso: []string{ "https://github.com/Unidata/UDUNITS-2/blob/master/COPYRIGHT", }, IsOsiApproved: false, }, "copyleft-next-0.3.1": { Reference: "https://spdx.org/licenses/copyleft-next-0.3.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/copyleft-next-0.3.1.json", ReferenceNumber: 284, Name: "copyleft-next 0.3.1", LicenseID: "copyleft-next-0.3.1", SeeAlso: []string{ "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1", }, IsOsiApproved: false, }, "ijg-short": { Reference: "https://spdx.org/licenses/IJG-short.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/IJG-short.json", ReferenceNumber: 285, Name: "Independent JPEG Group License - short", LicenseID: "IJG-short", SeeAlso: []string{ "https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/ljpg/", }, IsOsiApproved: false, }, "plexus": { Reference: "https://spdx.org/licenses/Plexus.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Plexus.json", ReferenceNumber: 286, Name: "Plexus Classworlds License", LicenseID: "Plexus", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License", }, IsOsiApproved: false, }, "apache-1.1": { Reference: "https://spdx.org/licenses/Apache-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Apache-1.1.json", ReferenceNumber: 287, Name: "Apache License 1.1", LicenseID: "Apache-1.1", SeeAlso: []string{ "http://apache.org/licenses/LICENSE-1.1", "https://opensource.org/licenses/Apache-1.1", }, IsOsiApproved: true, }, "upl-1.0": { Reference: "https://spdx.org/licenses/UPL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/UPL-1.0.json", ReferenceNumber: 288, Name: "Universal Permissive License v1.0", LicenseID: "UPL-1.0", SeeAlso: []string{ "https://opensource.org/licenses/UPL", }, IsOsiApproved: true, }, "hpnd-dec": { Reference: "https://spdx.org/licenses/HPND-DEC.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/HPND-DEC.json", ReferenceNumber: 289, Name: "Historical Permission Notice and Disclaimer - DEC variant", LicenseID: "HPND-DEC", SeeAlso: []string{ "https://gitlab.freedesktop.org/xorg/app/xkbcomp/-/blob/master/COPYING?ref_type=heads#L69", }, IsOsiApproved: false, }, "hp-1986": { Reference: "https://spdx.org/licenses/HP-1986.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/HP-1986.json", ReferenceNumber: 290, Name: "Hewlett-Packard 1986 License", LicenseID: "HP-1986", SeeAlso: []string{ "https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/machine/hppa/memchr.S;h=1cca3e5e8867aa4bffef1f75a5c1bba25c0c441e;hb=HEAD#l2", }, IsOsiApproved: false, }, "gfdl-1.1-only": { Reference: "https://spdx.org/licenses/GFDL-1.1-only.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GFDL-1.1-only.json", ReferenceNumber: 291, Name: "GNU Free Documentation License v1.1 only", LicenseID: "GFDL-1.1-only", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt", }, IsOsiApproved: false, }, "qpl-1.0": { Reference: "https://spdx.org/licenses/QPL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/QPL-1.0.json", ReferenceNumber: 292, Name: "Q Public License 1.0", LicenseID: "QPL-1.0", SeeAlso: []string{ "http://doc.qt.nokia.com/3.3/license.html", "https://opensource.org/licenses/QPL-1.0", "https://doc.qt.io/archives/3.3/license.html", }, IsOsiApproved: true, }, "libpng-2.0": { Reference: "https://spdx.org/licenses/libpng-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/libpng-2.0.json", ReferenceNumber: 293, Name: "PNG Reference Library version 2", LicenseID: "libpng-2.0", SeeAlso: []string{ "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt", }, IsOsiApproved: false, }, "zlib": { Reference: "https://spdx.org/licenses/Zlib.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Zlib.json", ReferenceNumber: 294, Name: "zlib License", LicenseID: "Zlib", SeeAlso: []string{ "http://www.zlib.net/zlib_license.html", "https://opensource.org/licenses/Zlib", }, IsOsiApproved: true, }, "gfdl-1.3-or-later": { Reference: "https://spdx.org/licenses/GFDL-1.3-or-later.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GFDL-1.3-or-later.json", ReferenceNumber: 295, Name: "GNU Free Documentation License v1.3 or later", LicenseID: "GFDL-1.3-or-later", SeeAlso: []string{ "https://www.gnu.org/licenses/fdl-1.3.txt", }, IsOsiApproved: false, }, "cern-ohl-1.1": { Reference: "https://spdx.org/licenses/CERN-OHL-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CERN-OHL-1.1.json", ReferenceNumber: 296, Name: "CERN Open Hardware Licence v1.1", LicenseID: "CERN-OHL-1.1", SeeAlso: []string{ "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.1", }, IsOsiApproved: false, }, "sugarcrm-1.1.3": { Reference: "https://spdx.org/licenses/SugarCRM-1.1.3.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SugarCRM-1.1.3.json", ReferenceNumber: 297, Name: "SugarCRM Public License v1.1.3", LicenseID: "SugarCRM-1.1.3", SeeAlso: []string{ "http://www.sugarcrm.com/crm/SPL", }, IsOsiApproved: false, }, "vsl-1.0": { Reference: "https://spdx.org/licenses/VSL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/VSL-1.0.json", ReferenceNumber: 298, Name: "Vovida Software License v1.0", LicenseID: "VSL-1.0", SeeAlso: []string{ "https://opensource.org/licenses/VSL-1.0", }, IsOsiApproved: true, }, "nrl": { Reference: "https://spdx.org/licenses/NRL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NRL.json", ReferenceNumber: 299, Name: "NRL License", LicenseID: "NRL", SeeAlso: []string{ "http://web.mit.edu/network/isakmp/nrllicense.html", }, IsOsiApproved: false, }, "zend-2.0": { Reference: "https://spdx.org/licenses/Zend-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Zend-2.0.json", ReferenceNumber: 300, Name: "Zend License v2.0", LicenseID: "Zend-2.0", SeeAlso: []string{ "https://web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt", }, IsOsiApproved: false, }, "ogl-canada-2.0": { Reference: "https://spdx.org/licenses/OGL-Canada-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OGL-Canada-2.0.json", ReferenceNumber: 301, Name: "Open Government Licence - Canada", LicenseID: "OGL-Canada-2.0", SeeAlso: []string{ "https://open.canada.ca/en/open-government-licence-canada", }, IsOsiApproved: false, }, "eudatagrid": { Reference: "https://spdx.org/licenses/EUDatagrid.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/EUDatagrid.json", ReferenceNumber: 302, Name: "EU DataGrid Software License", LicenseID: "EUDatagrid", SeeAlso: []string{ "http://eu-datagrid.web.cern.ch/eu-datagrid/license.html", "https://opensource.org/licenses/EUDatagrid", }, IsOsiApproved: true, }, "nunit": { Reference: "https://spdx.org/licenses/Nunit.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/Nunit.json", ReferenceNumber: 303, Name: "Nunit License", LicenseID: "Nunit", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Nunit", }, IsOsiApproved: false, }, "mulanpsl-2.0": { Reference: "https://spdx.org/licenses/MulanPSL-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MulanPSL-2.0.json", ReferenceNumber: 304, Name: "Mulan Permissive Software License, Version 2", LicenseID: "MulanPSL-2.0", SeeAlso: []string{ "https://license.coscl.org.cn/MulanPSL2/", }, IsOsiApproved: true, }, "newsletr": { Reference: "https://spdx.org/licenses/Newsletr.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Newsletr.json", ReferenceNumber: 305, Name: "Newsletr License", LicenseID: "Newsletr", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Newsletr", }, IsOsiApproved: false, }, "bsd-4-clause-uc": { Reference: "https://spdx.org/licenses/BSD-4-Clause-UC.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-4-Clause-UC.json", ReferenceNumber: 306, Name: "BSD-4-Clause (University of California-Specific)", LicenseID: "BSD-4-Clause-UC", SeeAlso: []string{ "http://www.freebsd.org/copyright/license.html", }, IsOsiApproved: false, }, "polyform-small-business-1.0.0": { Reference: "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.json", ReferenceNumber: 307, Name: "PolyForm Small Business License 1.0.0", LicenseID: "PolyForm-Small-Business-1.0.0", SeeAlso: []string{ "https://polyformproject.org/licenses/small-business/1.0.0", }, IsOsiApproved: false, }, "miros": { Reference: "https://spdx.org/licenses/MirOS.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MirOS.json", ReferenceNumber: 308, Name: "The MirOS Licence", LicenseID: "MirOS", SeeAlso: []string{ "https://opensource.org/licenses/MirOS", }, IsOsiApproved: true, }, "adobe-utopia": { Reference: "https://spdx.org/licenses/Adobe-Utopia.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Adobe-Utopia.json", ReferenceNumber: 309, Name: "Adobe Utopia Font License", LicenseID: "Adobe-Utopia", SeeAlso: []string{ "https://gitlab.freedesktop.org/xorg/font/adobe-utopia-100dpi/-/blob/master/COPYING?ref_type=heads", }, IsOsiApproved: false, }, "gfdl-1.1-no-invariants-or-later": { Reference: "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.json", ReferenceNumber: 310, Name: "GNU Free Documentation License v1.1 or later - no invariants", LicenseID: "GFDL-1.1-no-invariants-or-later", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt", }, IsOsiApproved: false, }, "rpl-1.5": { Reference: "https://spdx.org/licenses/RPL-1.5.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/RPL-1.5.json", ReferenceNumber: 311, Name: "Reciprocal Public License 1.5", LicenseID: "RPL-1.5", SeeAlso: []string{ "https://opensource.org/licenses/RPL-1.5", }, IsOsiApproved: true, }, "tmate": { Reference: "https://spdx.org/licenses/TMate.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/TMate.json", ReferenceNumber: 312, Name: "TMate Open Source License", LicenseID: "TMate", SeeAlso: []string{ "http://svnkit.com/license.html", }, IsOsiApproved: false, }, "libtiff": { Reference: "https://spdx.org/licenses/libtiff.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/libtiff.json", ReferenceNumber: 313, Name: "libtiff License", LicenseID: "libtiff", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/libtiff", }, IsOsiApproved: false, }, "gpl-3.0-only": { Reference: "https://spdx.org/licenses/GPL-3.0-only.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GPL-3.0-only.json", ReferenceNumber: 314, Name: "GNU General Public License v3.0 only", LicenseID: "GPL-3.0-only", SeeAlso: []string{ "https://www.gnu.org/licenses/gpl-3.0-standalone.html", "https://opensource.org/licenses/GPL-3.0", }, IsOsiApproved: true, }, "cc-by-sa-3.0": { Reference: "https://spdx.org/licenses/CC-BY-SA-3.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-SA-3.0.json", ReferenceNumber: 315, Name: "Creative Commons Attribution Share Alike 3.0 Unported", LicenseID: "CC-BY-SA-3.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-sa/3.0/legalcode", }, IsOsiApproved: false, }, "unicode-dfs-2016": { Reference: "https://spdx.org/licenses/Unicode-DFS-2016.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Unicode-DFS-2016.json", ReferenceNumber: 316, Name: "Unicode License Agreement - Data Files and Software (2016)", LicenseID: "Unicode-DFS-2016", SeeAlso: []string{ "https://www.unicode.org/license.txt", "http://web.archive.org/web/20160823201924/http://www.unicode.org/copyright.html#License", "http://www.unicode.org/copyright.html", }, IsOsiApproved: true, }, "cc-by-nc-3.0-de": { Reference: "https://spdx.org/licenses/CC-BY-NC-3.0-DE.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-3.0-DE.json", ReferenceNumber: 317, Name: "Creative Commons Attribution Non Commercial 3.0 Germany", LicenseID: "CC-BY-NC-3.0-DE", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc/3.0/de/legalcode", }, IsOsiApproved: false, }, "npl-1.0": { Reference: "https://spdx.org/licenses/NPL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NPL-1.0.json", ReferenceNumber: 318, Name: "Netscape Public License v1.0", LicenseID: "NPL-1.0", SeeAlso: []string{ "http://www.mozilla.org/MPL/NPL/1.0/", }, IsOsiApproved: false, }, "egenix": { Reference: "https://spdx.org/licenses/eGenix.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/eGenix.json", ReferenceNumber: 319, Name: "eGenix.com Public License 1.1.0", LicenseID: "eGenix", SeeAlso: []string{ "http://www.egenix.com/products/eGenix.com-Public-License-1.1.0.pdf", "https://fedoraproject.org/wiki/Licensing/eGenix.com_Public_License_1.1.0", }, IsOsiApproved: false, }, "polyform-noncommercial-1.0.0": { Reference: "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.json", ReferenceNumber: 320, Name: "PolyForm Noncommercial License 1.0.0", LicenseID: "PolyForm-Noncommercial-1.0.0", SeeAlso: []string{ "https://polyformproject.org/licenses/noncommercial/1.0.0", }, IsOsiApproved: false, }, "crossword": { Reference: "https://spdx.org/licenses/Crossword.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Crossword.json", ReferenceNumber: 321, Name: "Crossword License", LicenseID: "Crossword", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Crossword", }, IsOsiApproved: false, }, "iec-code-components-eula": { Reference: "https://spdx.org/licenses/IEC-Code-Components-EULA.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/IEC-Code-Components-EULA.json", ReferenceNumber: 322, Name: "IEC Code Components End-user licence agreement", LicenseID: "IEC-Code-Components-EULA", SeeAlso: []string{ "https://www.iec.ch/webstore/custserv/pdf/CC-EULA.pdf", "https://www.iec.ch/CCv1", "https://www.iec.ch/copyright", }, IsOsiApproved: false, }, "hpnd": { Reference: "https://spdx.org/licenses/HPND.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/HPND.json", ReferenceNumber: 323, Name: "Historical Permission Notice and Disclaimer", LicenseID: "HPND", SeeAlso: []string{ "https://opensource.org/licenses/HPND", "http://lists.opensource.org/pipermail/license-discuss_lists.opensource.org/2002-November/006304.html", }, IsOsiApproved: true, }, "efl-1.0": { Reference: "https://spdx.org/licenses/EFL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/EFL-1.0.json", ReferenceNumber: 324, Name: "Eiffel Forum License v1.0", LicenseID: "EFL-1.0", SeeAlso: []string{ "http://www.eiffel-nice.org/license/forum.txt", "https://opensource.org/licenses/EFL-1.0", }, IsOsiApproved: true, }, "oldap-1.4": { Reference: "https://spdx.org/licenses/OLDAP-1.4.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OLDAP-1.4.json", ReferenceNumber: 325, Name: "Open LDAP Public License v1.4", LicenseID: "OLDAP-1.4", SeeAlso: []string{ "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=c9f95c2f3f2ffb5e0ae55fe7388af75547660941", }, IsOsiApproved: false, }, "mmixware": { Reference: "https://spdx.org/licenses/MMIXware.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MMIXware.json", ReferenceNumber: 326, Name: "MMIXware License", LicenseID: "MMIXware", SeeAlso: []string{ "https://gitlab.lrz.de/mmix/mmixware/-/blob/master/boilerplate.w", }, IsOsiApproved: false, }, "openpbs-2.3": { Reference: "https://spdx.org/licenses/OpenPBS-2.3.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OpenPBS-2.3.json", ReferenceNumber: 327, Name: "OpenPBS v2.3 Software License", LicenseID: "OpenPBS-2.3", SeeAlso: []string{ "https://github.com/adaptivecomputing/torque/blob/master/PBS_License.txt", "https://www.mcs.anl.gov/research/projects/openpbs/PBS_License.txt", }, IsOsiApproved: false, }, "unicode-tou": { Reference: "https://spdx.org/licenses/Unicode-TOU.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Unicode-TOU.json", ReferenceNumber: 328, Name: "Unicode Terms of Use", LicenseID: "Unicode-TOU", SeeAlso: []string{ "http://web.archive.org/web/20140704074106/http://www.unicode.org/copyright.html", "http://www.unicode.org/copyright.html", }, IsOsiApproved: false, }, "cc-by-3.0-de": { Reference: "https://spdx.org/licenses/CC-BY-3.0-DE.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-3.0-DE.json", ReferenceNumber: 329, Name: "Creative Commons Attribution 3.0 Germany", LicenseID: "CC-BY-3.0-DE", SeeAlso: []string{ "https://creativecommons.org/licenses/by/3.0/de/legalcode", }, IsOsiApproved: false, }, "eupl-1.1": { Reference: "https://spdx.org/licenses/EUPL-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/EUPL-1.1.json", ReferenceNumber: 330, Name: "European Union Public License 1.1", LicenseID: "EUPL-1.1", SeeAlso: []string{ "https://joinup.ec.europa.eu/software/page/eupl/licence-eupl", "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl1.1.-licence-en_0.pdf", "https://opensource.org/licenses/EUPL-1.1", }, IsOsiApproved: true, }, "sl": { Reference: "https://spdx.org/licenses/SL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SL.json", ReferenceNumber: 331, Name: "SL License", LicenseID: "SL", SeeAlso: []string{ "https://github.com/mtoyoda/sl/blob/master/LICENSE", }, IsOsiApproved: false, }, "gpl-2.0-with-font-exception": { Reference: "https://spdx.org/licenses/GPL-2.0-with-font-exception.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/GPL-2.0-with-font-exception.json", ReferenceNumber: 332, Name: "GNU General Public License v2.0 w/Font exception", LicenseID: "GPL-2.0-with-font-exception", SeeAlso: []string{ "https://www.gnu.org/licenses/gpl-faq.html#FontException", }, IsOsiApproved: false, }, "motosoto": { Reference: "https://spdx.org/licenses/Motosoto.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Motosoto.json", ReferenceNumber: 333, Name: "Motosoto License", LicenseID: "Motosoto", SeeAlso: []string{ "https://opensource.org/licenses/Motosoto", }, IsOsiApproved: true, }, "caldera": { Reference: "https://spdx.org/licenses/Caldera.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Caldera.json", ReferenceNumber: 334, Name: "Caldera License", LicenseID: "Caldera", SeeAlso: []string{ "http://www.lemis.com/grog/UNIX/ancient-source-all.pdf", }, IsOsiApproved: false, }, "gpl-2.0": { Reference: "https://spdx.org/licenses/GPL-2.0.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/GPL-2.0.json", ReferenceNumber: 335, Name: "GNU General Public License v2.0 only", LicenseID: "GPL-2.0", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", "https://opensource.org/licenses/GPL-2.0", }, IsOsiApproved: true, }, "bsd-inferno-nettverk": { Reference: "https://spdx.org/licenses/BSD-Inferno-Nettverk.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-Inferno-Nettverk.json", ReferenceNumber: 336, Name: "BSD-Inferno-Nettverk", LicenseID: "BSD-Inferno-Nettverk", SeeAlso: []string{ "https://www.inet.no/dante/LICENSE", }, IsOsiApproved: false, }, "gfdl-1.1": { Reference: "https://spdx.org/licenses/GFDL-1.1.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/GFDL-1.1.json", ReferenceNumber: 337, Name: "GNU Free Documentation License v1.1", LicenseID: "GFDL-1.1", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt", }, IsOsiApproved: false, }, "tapr-ohl-1.0": { Reference: "https://spdx.org/licenses/TAPR-OHL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/TAPR-OHL-1.0.json", ReferenceNumber: 338, Name: "TAPR Open Hardware License v1.0", LicenseID: "TAPR-OHL-1.0", SeeAlso: []string{ "https://www.tapr.org/OHL", }, IsOsiApproved: false, }, "cc-by-nc-sa-3.0": { Reference: "https://spdx.org/licenses/CC-BY-NC-SA-3.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-SA-3.0.json", ReferenceNumber: 339, Name: "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported", LicenseID: "CC-BY-NC-SA-3.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode", }, IsOsiApproved: false, }, "cc-by-nc-sa-1.0": { Reference: "https://spdx.org/licenses/CC-BY-NC-SA-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-SA-1.0.json", ReferenceNumber: 340, Name: "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic", LicenseID: "CC-BY-NC-SA-1.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc-sa/1.0/legalcode", }, IsOsiApproved: false, }, "bsd-3-clause-open-mpi": { Reference: "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.json", ReferenceNumber: 341, Name: "BSD 3-Clause Open MPI variant", LicenseID: "BSD-3-Clause-Open-MPI", SeeAlso: []string{ "https://www.open-mpi.org/community/license.php", "http://www.netlib.org/lapack/LICENSE.txt", }, IsOsiApproved: false, }, "cc-by-1.0": { Reference: "https://spdx.org/licenses/CC-BY-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-1.0.json", ReferenceNumber: 342, Name: "Creative Commons Attribution 1.0 Generic", LicenseID: "CC-BY-1.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by/1.0/legalcode", }, IsOsiApproved: false, }, "php-3.01": { Reference: "https://spdx.org/licenses/PHP-3.01.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/PHP-3.01.json", ReferenceNumber: 343, Name: "PHP License v3.01", LicenseID: "PHP-3.01", SeeAlso: []string{ "http://www.php.net/license/3_01.txt", }, IsOsiApproved: true, }, "padl": { Reference: "https://spdx.org/licenses/PADL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/PADL.json", ReferenceNumber: 344, Name: "PADL License", LicenseID: "PADL", SeeAlso: []string{ "https://git.openldap.org/openldap/openldap/-/blob/master/libraries/libldap/os-local.c?ref_type=heads#L19-23", }, IsOsiApproved: false, }, "afl-1.1": { Reference: "https://spdx.org/licenses/AFL-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/AFL-1.1.json", ReferenceNumber: 345, Name: "Academic Free License v1.1", LicenseID: "AFL-1.1", SeeAlso: []string{ "http://opensource.linux-mirror.org/licenses/afl-1.1.txt", "http://wayback.archive.org/web/20021004124254/http://www.opensource.org/licenses/academic.php", }, IsOsiApproved: true, }, "mit-cmu": { Reference: "https://spdx.org/licenses/MIT-CMU.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MIT-CMU.json", ReferenceNumber: 346, Name: "CMU License", LicenseID: "MIT-CMU", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#CMU_Style", "https://github.com/python-pillow/Pillow/blob/fffb426092c8db24a5f4b6df243a8a3c01fb63cd/LICENSE", }, IsOsiApproved: false, }, "bsd-3-clause-flex": { Reference: "https://spdx.org/licenses/BSD-3-Clause-flex.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-3-Clause-flex.json", ReferenceNumber: 347, Name: "BSD 3-Clause Flex variant", LicenseID: "BSD-3-Clause-flex", SeeAlso: []string{ "https://github.com/westes/flex/blob/master/COPYING", }, IsOsiApproved: false, }, "odbl-1.0": { Reference: "https://spdx.org/licenses/ODbL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ODbL-1.0.json", ReferenceNumber: 348, Name: "Open Data Commons Open Database License v1.0", LicenseID: "ODbL-1.0", SeeAlso: []string{ "http://www.opendatacommons.org/licenses/odbl/1.0/", "https://opendatacommons.org/licenses/odbl/1-0/", }, IsOsiApproved: false, }, "cc-by-nc-4.0": { Reference: "https://spdx.org/licenses/CC-BY-NC-4.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-4.0.json", ReferenceNumber: 349, Name: "Creative Commons Attribution Non Commercial 4.0 International", LicenseID: "CC-BY-NC-4.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc/4.0/legalcode", }, IsOsiApproved: false, }, "python-2.0.1": { Reference: "https://spdx.org/licenses/Python-2.0.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Python-2.0.1.json", ReferenceNumber: 350, Name: "Python License 2.0.1", LicenseID: "Python-2.0.1", SeeAlso: []string{ "https://www.python.org/download/releases/2.0.1/license/", "https://docs.python.org/3/license.html", "https://github.com/python/cpython/blob/main/LICENSE", }, IsOsiApproved: false, }, "ipa": { Reference: "https://spdx.org/licenses/IPA.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/IPA.json", ReferenceNumber: 351, Name: "IPA Font License", LicenseID: "IPA", SeeAlso: []string{ "https://opensource.org/licenses/IPA", }, IsOsiApproved: true, }, "aml": { Reference: "https://spdx.org/licenses/AML.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/AML.json", ReferenceNumber: 352, Name: "Apple MIT License", LicenseID: "AML", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Apple_MIT_License", }, IsOsiApproved: false, }, "libselinux-1.0": { Reference: "https://spdx.org/licenses/libselinux-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/libselinux-1.0.json", ReferenceNumber: 353, Name: "libselinux public domain notice", LicenseID: "libselinux-1.0", SeeAlso: []string{ "https://github.com/SELinuxProject/selinux/blob/master/libselinux/LICENSE", }, IsOsiApproved: false, }, "cc-by-3.0-at": { Reference: "https://spdx.org/licenses/CC-BY-3.0-AT.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-3.0-AT.json", ReferenceNumber: 354, Name: "Creative Commons Attribution 3.0 Austria", LicenseID: "CC-BY-3.0-AT", SeeAlso: []string{ "https://creativecommons.org/licenses/by/3.0/at/legalcode", }, IsOsiApproved: false, }, "qpl-1.0-inria-2004": { Reference: "https://spdx.org/licenses/QPL-1.0-INRIA-2004.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/QPL-1.0-INRIA-2004.json", ReferenceNumber: 355, Name: "Q Public License 1.0 - INRIA 2004 variant", LicenseID: "QPL-1.0-INRIA-2004", SeeAlso: []string{ "https://github.com/maranget/hevea/blob/master/LICENSE", }, IsOsiApproved: false, }, "gfdl-1.1-invariants-or-later": { Reference: "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.json", ReferenceNumber: 356, Name: "GNU Free Documentation License v1.1 or later - invariants", LicenseID: "GFDL-1.1-invariants-or-later", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt", }, IsOsiApproved: false, }, "rdisc": { Reference: "https://spdx.org/licenses/Rdisc.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Rdisc.json", ReferenceNumber: 357, Name: "Rdisc License", LicenseID: "Rdisc", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Rdisc_License", }, IsOsiApproved: false, }, "bsd-attribution-hpnd-disclaimer": { Reference: "https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.json", ReferenceNumber: 358, Name: "BSD with Attribution and HPND disclaimer", LicenseID: "BSD-Attribution-HPND-disclaimer", SeeAlso: []string{ "https://github.com/cyrusimap/cyrus-sasl/blob/master/COPYING", }, IsOsiApproved: false, }, "xerox": { Reference: "https://spdx.org/licenses/Xerox.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Xerox.json", ReferenceNumber: 359, Name: "Xerox License", LicenseID: "Xerox", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Xerox", }, IsOsiApproved: false, }, "lppl-1.1": { Reference: "https://spdx.org/licenses/LPPL-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LPPL-1.1.json", ReferenceNumber: 360, Name: "LaTeX Project Public License v1.1", LicenseID: "LPPL-1.1", SeeAlso: []string{ "http://www.latex-project.org/lppl/lppl-1-1.txt", }, IsOsiApproved: false, }, "ogl-uk-3.0": { Reference: "https://spdx.org/licenses/OGL-UK-3.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OGL-UK-3.0.json", ReferenceNumber: 361, Name: "Open Government Licence v3.0", LicenseID: "OGL-UK-3.0", SeeAlso: []string{ "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/", }, IsOsiApproved: false, }, "lgpl-3.0": { Reference: "https://spdx.org/licenses/LGPL-3.0.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/LGPL-3.0.json", ReferenceNumber: 362, Name: "GNU Lesser General Public License v3.0 only", LicenseID: "LGPL-3.0", SeeAlso: []string{ "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", "https://opensource.org/licenses/LGPL-3.0", }, IsOsiApproved: true, }, "lgpl-2.1": { Reference: "https://spdx.org/licenses/LGPL-2.1.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/LGPL-2.1.json", ReferenceNumber: 363, Name: "GNU Lesser General Public License v2.1 only", LicenseID: "LGPL-2.1", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", "https://opensource.org/licenses/LGPL-2.1", }, IsOsiApproved: true, }, "minpack": { Reference: "https://spdx.org/licenses/Minpack.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Minpack.json", ReferenceNumber: 364, Name: "Minpack License", LicenseID: "Minpack", SeeAlso: []string{ "http://www.netlib.org/minpack/disclaimer", "https://gitlab.com/libeigen/eigen/-/blob/master/COPYING.MINPACK", }, IsOsiApproved: false, }, "apsl-1.2": { Reference: "https://spdx.org/licenses/APSL-1.2.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/APSL-1.2.json", ReferenceNumber: 365, Name: "Apple Public Source License 1.2", LicenseID: "APSL-1.2", SeeAlso: []string{ "http://www.samurajdata.se/opensource/mirror/licenses/apsl.php", }, IsOsiApproved: true, }, "eurosym": { Reference: "https://spdx.org/licenses/Eurosym.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Eurosym.json", ReferenceNumber: 366, Name: "Eurosym License", LicenseID: "Eurosym", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Eurosym", }, IsOsiApproved: false, }, "bsd-advertising-acknowledgement": { Reference: "https://spdx.org/licenses/BSD-Advertising-Acknowledgement.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-Advertising-Acknowledgement.json", ReferenceNumber: 367, Name: "BSD Advertising Acknowledgement License", LicenseID: "BSD-Advertising-Acknowledgement", SeeAlso: []string{ "https://github.com/python-excel/xlrd/blob/master/LICENSE#L33", }, IsOsiApproved: false, }, "cc-by-nc-sa-2.0-uk": { Reference: "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.json", ReferenceNumber: 368, Name: "Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales", LicenseID: "CC-BY-NC-SA-2.0-UK", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc-sa/2.0/uk/legalcode", }, IsOsiApproved: false, }, "x11-distribute-modifications-variant": { Reference: "https://spdx.org/licenses/X11-distribute-modifications-variant.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/X11-distribute-modifications-variant.json", ReferenceNumber: 369, Name: "X11 License Distribution Modification Variant", LicenseID: "X11-distribute-modifications-variant", SeeAlso: []string{ "https://github.com/mirror/ncurses/blob/master/COPYING", }, IsOsiApproved: false, }, "w3m": { Reference: "https://spdx.org/licenses/w3m.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/w3m.json", ReferenceNumber: 370, Name: "w3m License", LicenseID: "w3m", SeeAlso: []string{ "https://github.com/tats/w3m/blob/master/COPYING", }, IsOsiApproved: false, }, "bzip2-1.0.5": { Reference: "https://spdx.org/licenses/bzip2-1.0.5.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/bzip2-1.0.5.json", ReferenceNumber: 371, Name: "bzip2 and libbzip2 License v1.0.5", LicenseID: "bzip2-1.0.5", SeeAlso: []string{ "https://sourceware.org/bzip2/1.0.5/bzip2-manual-1.0.5.html", "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html", }, IsOsiApproved: false, }, "pnmstitch": { Reference: "https://spdx.org/licenses/pnmstitch.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/pnmstitch.json", ReferenceNumber: 372, Name: "pnmstitch License", LicenseID: "pnmstitch", SeeAlso: []string{ "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/editor/pnmstitch.c#l2", }, IsOsiApproved: false, }, "cpal-1.0": { Reference: "https://spdx.org/licenses/CPAL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CPAL-1.0.json", ReferenceNumber: 373, Name: "Common Public Attribution License 1.0", LicenseID: "CPAL-1.0", SeeAlso: []string{ "https://opensource.org/licenses/CPAL-1.0", }, IsOsiApproved: true, }, "sissl": { Reference: "https://spdx.org/licenses/SISSL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SISSL.json", ReferenceNumber: 374, Name: "Sun Industry Standards Source License v1.1", LicenseID: "SISSL", SeeAlso: []string{ "http://www.openoffice.org/licenses/sissl_license.html", "https://opensource.org/licenses/SISSL", }, IsOsiApproved: true, }, "liliq-r-1.1": { Reference: "https://spdx.org/licenses/LiLiQ-R-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LiLiQ-R-1.1.json", ReferenceNumber: 375, Name: "Licence Libre du QuÊbec â RÊciprocitÊ version 1.1", LicenseID: "LiLiQ-R-1.1", SeeAlso: []string{ "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/", "http://opensource.org/licenses/LiLiQ-R-1.1", }, IsOsiApproved: true, }, "cc-by-nc-sa-2.0": { Reference: "https://spdx.org/licenses/CC-BY-NC-SA-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-SA-2.0.json", ReferenceNumber: 376, Name: "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic", LicenseID: "CC-BY-NC-SA-2.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode", }, IsOsiApproved: false, }, "unlicense": { Reference: "https://spdx.org/licenses/Unlicense.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Unlicense.json", ReferenceNumber: 377, Name: "The Unlicense", LicenseID: "Unlicense", SeeAlso: []string{ "https://unlicense.org/", }, IsOsiApproved: true, }, "linux-openib": { Reference: "https://spdx.org/licenses/Linux-OpenIB.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Linux-OpenIB.json", ReferenceNumber: 378, Name: "Linux Kernel Variant of OpenIB.org license", LicenseID: "Linux-OpenIB", SeeAlso: []string{ "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h", }, IsOsiApproved: false, }, "loop": { Reference: "https://spdx.org/licenses/LOOP.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LOOP.json", ReferenceNumber: 379, Name: "Common Lisp LOOP License", LicenseID: "LOOP", SeeAlso: []string{ "https://gitlab.com/embeddable-common-lisp/ecl/-/blob/develop/src/lsp/loop.lsp", "http://git.savannah.gnu.org/cgit/gcl.git/tree/gcl/lsp/gcl_loop.lsp?h=Version_2_6_13pre", "https://sourceforge.net/p/sbcl/sbcl/ci/master/tree/src/code/loop.lisp", "https://github.com/cl-adams/adams/blob/master/LICENSE.md", "https://github.com/blakemcbride/eclipse-lisp/blob/master/lisp/loop.lisp", "https://gitlab.common-lisp.net/cmucl/cmucl/-/blob/master/src/code/loop.lisp", }, IsOsiApproved: false, }, "cdla-sharing-1.0": { Reference: "https://spdx.org/licenses/CDLA-Sharing-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CDLA-Sharing-1.0.json", ReferenceNumber: 380, Name: "Community Data License Agreement Sharing 1.0", LicenseID: "CDLA-Sharing-1.0", SeeAlso: []string{ "https://cdla.io/sharing-1-0", }, IsOsiApproved: false, }, "cc-by-3.0": { Reference: "https://spdx.org/licenses/CC-BY-3.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-3.0.json", ReferenceNumber: 381, Name: "Creative Commons Attribution 3.0 Unported", LicenseID: "CC-BY-3.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by/3.0/legalcode", }, IsOsiApproved: false, }, "oldap-2.4": { Reference: "https://spdx.org/licenses/OLDAP-2.4.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OLDAP-2.4.json", ReferenceNumber: 382, Name: "Open LDAP Public License v2.4", LicenseID: "OLDAP-2.4", SeeAlso: []string{ "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=cd1284c4a91a8a380d904eee68d1583f989ed386", }, IsOsiApproved: false, }, "cmu-mach": { Reference: "https://spdx.org/licenses/CMU-Mach.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CMU-Mach.json", ReferenceNumber: 383, Name: "CMU Mach License", LicenseID: "CMU-Mach", SeeAlso: []string{ "https://www.cs.cmu.edu/~410/licenses.html", }, IsOsiApproved: false, }, "liliq-p-1.1": { Reference: "https://spdx.org/licenses/LiLiQ-P-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LiLiQ-P-1.1.json", ReferenceNumber: 384, Name: "Licence Libre du QuÊbec â Permissive version 1.1", LicenseID: "LiLiQ-P-1.1", SeeAlso: []string{ "https://forge.gouv.qc.ca/licence/fr/liliq-v1-1/", "http://opensource.org/licenses/LiLiQ-P-1.1", }, IsOsiApproved: true, }, "lgpl-2.0-only": { Reference: "https://spdx.org/licenses/LGPL-2.0-only.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LGPL-2.0-only.json", ReferenceNumber: 385, Name: "GNU Library General Public License v2 only", LicenseID: "LGPL-2.0-only", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html", }, IsOsiApproved: true, }, "apafml": { Reference: "https://spdx.org/licenses/APAFML.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/APAFML.json", ReferenceNumber: 386, Name: "Adobe Postscript AFM License", LicenseID: "APAFML", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/AdobePostscriptAFM", }, IsOsiApproved: false, }, "entessa": { Reference: "https://spdx.org/licenses/Entessa.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Entessa.json", ReferenceNumber: 387, Name: "Entessa Public License v1.0", LicenseID: "Entessa", SeeAlso: []string{ "https://opensource.org/licenses/Entessa", }, IsOsiApproved: true, }, "cnri-python": { Reference: "https://spdx.org/licenses/CNRI-Python.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CNRI-Python.json", ReferenceNumber: 388, Name: "CNRI Python License", LicenseID: "CNRI-Python", SeeAlso: []string{ "https://opensource.org/licenses/CNRI-Python", }, IsOsiApproved: true, }, "ogc-1.0": { Reference: "https://spdx.org/licenses/OGC-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OGC-1.0.json", ReferenceNumber: 389, Name: "OGC Software License, Version 1.0", LicenseID: "OGC-1.0", SeeAlso: []string{ "https://www.ogc.org/ogc/software/1.0", }, IsOsiApproved: false, }, "hpnd-uc": { Reference: "https://spdx.org/licenses/HPND-UC.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/HPND-UC.json", ReferenceNumber: 390, Name: "Historical Permission Notice and Disclaimer - University of California variant", LicenseID: "HPND-UC", SeeAlso: []string{ "https://core.tcl-lang.org/tk/file?name=compat/unistd.h", }, IsOsiApproved: false, }, "cc-by-3.0-igo": { Reference: "https://spdx.org/licenses/CC-BY-3.0-IGO.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-3.0-IGO.json", ReferenceNumber: 391, Name: "Creative Commons Attribution 3.0 IGO", LicenseID: "CC-BY-3.0-IGO", SeeAlso: []string{ "https://creativecommons.org/licenses/by/3.0/igo/legalcode", }, IsOsiApproved: false, }, "mtll": { Reference: "https://spdx.org/licenses/MTLL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MTLL.json", ReferenceNumber: 392, Name: "Matrix Template Library License", LicenseID: "MTLL", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License", }, IsOsiApproved: false, }, "hpnd-markus-kuhn": { Reference: "https://spdx.org/licenses/HPND-Markus-Kuhn.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/HPND-Markus-Kuhn.json", ReferenceNumber: 393, Name: "Historical Permission Notice and Disclaimer - Markus Kuhn variant", LicenseID: "HPND-Markus-Kuhn", SeeAlso: []string{ "https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c", "https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=readline/readline/support/wcwidth.c;h=0f5ec995796f4813abbcf4972aec0378ab74722a;hb=HEAD#l55", }, IsOsiApproved: false, }, "cc-by-nc-nd-3.0-igo": { Reference: "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.json", ReferenceNumber: 394, Name: "Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO", LicenseID: "CC-BY-NC-ND-3.0-IGO", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc-nd/3.0/igo/legalcode", }, IsOsiApproved: false, }, "ms-rl": { Reference: "https://spdx.org/licenses/MS-RL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MS-RL.json", ReferenceNumber: 395, Name: "Microsoft Reciprocal License", LicenseID: "MS-RL", SeeAlso: []string{ "http://www.microsoft.com/opensource/licenses.mspx", "https://opensource.org/licenses/MS-RL", }, IsOsiApproved: true, }, "amdplpa": { Reference: "https://spdx.org/licenses/AMDPLPA.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/AMDPLPA.json", ReferenceNumber: 396, Name: "AMD's plpa_map.c License", LicenseID: "AMDPLPA", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/AMD_plpa_map_License", }, IsOsiApproved: false, }, "lal-1.2": { Reference: "https://spdx.org/licenses/LAL-1.2.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LAL-1.2.json", ReferenceNumber: 397, Name: "Licence Art Libre 1.2", LicenseID: "LAL-1.2", SeeAlso: []string{ "http://artlibre.org/licence/lal/licence-art-libre-12/", }, IsOsiApproved: false, }, "oldap-2.2.1": { Reference: "https://spdx.org/licenses/OLDAP-2.2.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OLDAP-2.2.1.json", ReferenceNumber: 398, Name: "Open LDAP Public License v2.2.1", LicenseID: "OLDAP-2.2.1", SeeAlso: []string{ "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=4bc786f34b50aa301be6f5600f58a980070f481e", }, IsOsiApproved: false, }, "curl": { Reference: "https://spdx.org/licenses/curl.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/curl.json", ReferenceNumber: 399, Name: "curl License", LicenseID: "curl", SeeAlso: []string{ "https://github.com/bagder/curl/blob/master/COPYING", }, IsOsiApproved: false, }, "oldap-1.2": { Reference: "https://spdx.org/licenses/OLDAP-1.2.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OLDAP-1.2.json", ReferenceNumber: 400, Name: "Open LDAP Public License v1.2", LicenseID: "OLDAP-1.2", SeeAlso: []string{ "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=42b0383c50c299977b5893ee695cf4e486fb0dc7", }, IsOsiApproved: false, }, "inner-net-2.0": { Reference: "https://spdx.org/licenses/Inner-Net-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Inner-Net-2.0.json", ReferenceNumber: 401, Name: "Inner Net License v2.0", LicenseID: "Inner-Net-2.0", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Inner_Net_License", "https://sourceware.org/git/?p=glibc.git;a=blob;f=LICENSES;h=530893b1dc9ea00755603c68fb36bd4fc38a7be8;hb=HEAD#l207", }, IsOsiApproved: false, }, "termreadkey": { Reference: "https://spdx.org/licenses/TermReadKey.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/TermReadKey.json", ReferenceNumber: 402, Name: "TermReadKey License", LicenseID: "TermReadKey", SeeAlso: []string{ "https://github.com/jonathanstowe/TermReadKey/blob/master/README#L9-L10", }, IsOsiApproved: false, }, "agpl-1.0": { Reference: "https://spdx.org/licenses/AGPL-1.0.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/AGPL-1.0.json", ReferenceNumber: 403, Name: "Affero General Public License v1.0", LicenseID: "AGPL-1.0", SeeAlso: []string{ "http://www.affero.org/oagpl.html", }, IsOsiApproved: false, }, "artistic-1.0": { Reference: "https://spdx.org/licenses/Artistic-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Artistic-1.0.json", ReferenceNumber: 404, Name: "Artistic License 1.0", LicenseID: "Artistic-1.0", SeeAlso: []string{ "https://opensource.org/licenses/Artistic-1.0", }, IsOsiApproved: true, }, "cecill-1.1": { Reference: "https://spdx.org/licenses/CECILL-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CECILL-1.1.json", ReferenceNumber: 405, Name: "CeCILL Free Software License Agreement v1.1", LicenseID: "CECILL-1.1", SeeAlso: []string{ "http://www.cecill.info/licences/Licence_CeCILL_V1.1-US.html", }, IsOsiApproved: false, }, "ipl-1.0": { Reference: "https://spdx.org/licenses/IPL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/IPL-1.0.json", ReferenceNumber: 406, Name: "IBM Public License v1.0", LicenseID: "IPL-1.0", SeeAlso: []string{ "https://opensource.org/licenses/IPL-1.0", }, IsOsiApproved: true, }, "lpl-1.02": { Reference: "https://spdx.org/licenses/LPL-1.02.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LPL-1.02.json", ReferenceNumber: 407, Name: "Lucent Public License v1.02", LicenseID: "LPL-1.02", SeeAlso: []string{ "http://plan9.bell-labs.com/plan9/license.html", "https://opensource.org/licenses/LPL-1.02", }, IsOsiApproved: true, }, "baekmuk": { Reference: "https://spdx.org/licenses/Baekmuk.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Baekmuk.json", ReferenceNumber: 408, Name: "Baekmuk License", LicenseID: "Baekmuk", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing:Baekmuk?rd=Licensing/Baekmuk", }, IsOsiApproved: false, }, "nlod-1.0": { Reference: "https://spdx.org/licenses/NLOD-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NLOD-1.0.json", ReferenceNumber: 409, Name: "Norwegian Licence for Open Government Data (NLOD) 1.0", LicenseID: "NLOD-1.0", SeeAlso: []string{ "http://data.norge.no/nlod/en/1.0", }, IsOsiApproved: false, }, "sendmail-8.23": { Reference: "https://spdx.org/licenses/Sendmail-8.23.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Sendmail-8.23.json", ReferenceNumber: 410, Name: "Sendmail License 8.23", LicenseID: "Sendmail-8.23", SeeAlso: []string{ "https://www.proofpoint.com/sites/default/files/sendmail-license.pdf", "https://web.archive.org/web/20181003101040/https://www.proofpoint.com/sites/default/files/sendmail-license.pdf", }, IsOsiApproved: false, }, "ngpl": { Reference: "https://spdx.org/licenses/NGPL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NGPL.json", ReferenceNumber: 411, Name: "Nethack General Public License", LicenseID: "NGPL", SeeAlso: []string{ "https://opensource.org/licenses/NGPL", }, IsOsiApproved: true, }, "sspl-1.0": { Reference: "https://spdx.org/licenses/SSPL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SSPL-1.0.json", ReferenceNumber: 412, Name: "Server Side Public License, v 1", LicenseID: "SSPL-1.0", SeeAlso: []string{ "https://www.mongodb.com/licensing/server-side-public-license", }, IsOsiApproved: false, }, "ncsa": { Reference: "https://spdx.org/licenses/NCSA.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NCSA.json", ReferenceNumber: 413, Name: "University of Illinois/NCSA Open Source License", LicenseID: "NCSA", SeeAlso: []string{ "http://otm.illinois.edu/uiuc_openSource", "https://opensource.org/licenses/NCSA", }, IsOsiApproved: true, }, "cc0-1.0": { Reference: "https://spdx.org/licenses/CC0-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC0-1.0.json", ReferenceNumber: 414, Name: "Creative Commons Zero v1.0 Universal", LicenseID: "CC0-1.0", SeeAlso: []string{ "https://creativecommons.org/publicdomain/zero/1.0/legalcode", }, IsOsiApproved: false, }, "cecill-c": { Reference: "https://spdx.org/licenses/CECILL-C.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CECILL-C.json", ReferenceNumber: 415, Name: "CeCILL-C Free Software License Agreement", LicenseID: "CECILL-C", SeeAlso: []string{ "http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html", }, IsOsiApproved: false, }, "furuseth": { Reference: "https://spdx.org/licenses/Furuseth.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Furuseth.json", ReferenceNumber: 416, Name: "Furuseth License", LicenseID: "Furuseth", SeeAlso: []string{ "https://git.openldap.org/openldap/openldap/-/blob/master/COPYRIGHT?ref_type=heads#L39-51", }, IsOsiApproved: false, }, "jasper-2.0": { Reference: "https://spdx.org/licenses/JasPer-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/JasPer-2.0.json", ReferenceNumber: 417, Name: "JasPer License", LicenseID: "JasPer-2.0", SeeAlso: []string{ "http://www.ece.uvic.ca/~mdadams/jasper/LICENSE", }, IsOsiApproved: false, }, "lgpl-3.0-or-later": { Reference: "https://spdx.org/licenses/LGPL-3.0-or-later.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LGPL-3.0-or-later.json", ReferenceNumber: 418, Name: "GNU Lesser General Public License v3.0 or later", LicenseID: "LGPL-3.0-or-later", SeeAlso: []string{ "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", "https://opensource.org/licenses/LGPL-3.0", }, IsOsiApproved: true, }, "libpng": { Reference: "https://spdx.org/licenses/Libpng.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Libpng.json", ReferenceNumber: 419, Name: "libpng License", LicenseID: "Libpng", SeeAlso: []string{ "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt", }, IsOsiApproved: false, }, "linux-man-pages-copyleft-var": { Reference: "https://spdx.org/licenses/Linux-man-pages-copyleft-var.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Linux-man-pages-copyleft-var.json", ReferenceNumber: 420, Name: "Linux man-pages Copyleft Variant", LicenseID: "Linux-man-pages-copyleft-var", SeeAlso: []string{ "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/set_mempolicy.2#n5", }, IsOsiApproved: false, }, "oldap-2.2.2": { Reference: "https://spdx.org/licenses/OLDAP-2.2.2.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OLDAP-2.2.2.json", ReferenceNumber: 421, Name: "Open LDAP Public License 2.2.2", LicenseID: "OLDAP-2.2.2", SeeAlso: []string{ "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=df2cc1e21eb7c160695f5b7cffd6296c151ba188", }, IsOsiApproved: false, }, "freebsd-doc": { Reference: "https://spdx.org/licenses/FreeBSD-DOC.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/FreeBSD-DOC.json", ReferenceNumber: 422, Name: "FreeBSD Documentation License", LicenseID: "FreeBSD-DOC", SeeAlso: []string{ "https://www.freebsd.org/copyright/freebsd-doc-license/", }, IsOsiApproved: false, }, "cc-by-nc-nd-3.0-de": { Reference: "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.json", ReferenceNumber: 423, Name: "Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany", LicenseID: "CC-BY-NC-ND-3.0-DE", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc-nd/3.0/de/legalcode", }, IsOsiApproved: false, }, "nist-pd-fallback": { Reference: "https://spdx.org/licenses/NIST-PD-fallback.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NIST-PD-fallback.json", ReferenceNumber: 424, Name: "NIST Public Domain Notice with license fallback", LicenseID: "NIST-PD-fallback", SeeAlso: []string{ "https://github.com/usnistgov/jsip/blob/59700e6926cbe96c5cdae897d9a7d2656b42abe3/LICENSE", "https://github.com/usnistgov/fipy/blob/86aaa5c2ba2c6f1be19593c5986071cf6568cc34/LICENSE.rst", }, IsOsiApproved: false, }, "widget-workshop": { Reference: "https://spdx.org/licenses/Widget-Workshop.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Widget-Workshop.json", ReferenceNumber: 425, Name: "Widget Workshop License", LicenseID: "Widget-Workshop", SeeAlso: []string{ "https://github.com/novnc/noVNC/blob/master/core/crypto/des.js#L24", }, IsOsiApproved: false, }, "rpl-1.1": { Reference: "https://spdx.org/licenses/RPL-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/RPL-1.1.json", ReferenceNumber: 426, Name: "Reciprocal Public License 1.1", LicenseID: "RPL-1.1", SeeAlso: []string{ "https://opensource.org/licenses/RPL-1.1", }, IsOsiApproved: true, }, "aswf-digital-assets-1.1": { Reference: "https://spdx.org/licenses/ASWF-Digital-Assets-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ASWF-Digital-Assets-1.1.json", ReferenceNumber: 427, Name: "ASWF Digital Assets License 1.1", LicenseID: "ASWF-Digital-Assets-1.1", SeeAlso: []string{ "https://github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.1.txt", }, IsOsiApproved: false, }, "net-snmp": { Reference: "https://spdx.org/licenses/Net-SNMP.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Net-SNMP.json", ReferenceNumber: 428, Name: "Net-SNMP License", LicenseID: "Net-SNMP", SeeAlso: []string{ "http://net-snmp.sourceforge.net/about/license.html", }, IsOsiApproved: false, }, "cc-by-nc-sa-2.5": { Reference: "https://spdx.org/licenses/CC-BY-NC-SA-2.5.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-SA-2.5.json", ReferenceNumber: 429, Name: "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic", LicenseID: "CC-BY-NC-SA-2.5", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc-sa/2.5/legalcode", }, IsOsiApproved: false, }, "unicode-dfs-2015": { Reference: "https://spdx.org/licenses/Unicode-DFS-2015.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Unicode-DFS-2015.json", ReferenceNumber: 430, Name: "Unicode License Agreement - Data Files and Software (2015)", LicenseID: "Unicode-DFS-2015", SeeAlso: []string{ "https://web.archive.org/web/20151224134844/http://unicode.org/copyright.html", }, IsOsiApproved: false, }, "gfdl-1.2": { Reference: "https://spdx.org/licenses/GFDL-1.2.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/GFDL-1.2.json", ReferenceNumber: 431, Name: "GNU Free Documentation License v1.2", LicenseID: "GFDL-1.2", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt", }, IsOsiApproved: false, }, "intel": { Reference: "https://spdx.org/licenses/Intel.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Intel.json", ReferenceNumber: 432, Name: "Intel Open Source License", LicenseID: "Intel", SeeAlso: []string{ "https://opensource.org/licenses/Intel", }, IsOsiApproved: true, }, "sgp4": { Reference: "https://spdx.org/licenses/SGP4.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SGP4.json", ReferenceNumber: 433, Name: "SGP4 Permission Notice", LicenseID: "SGP4", SeeAlso: []string{ "https://celestrak.org/publications/AIAA/2006-6753/faq.php", }, IsOsiApproved: false, }, "zimbra-1.3": { Reference: "https://spdx.org/licenses/Zimbra-1.3.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Zimbra-1.3.json", ReferenceNumber: 434, Name: "Zimbra Public License v1.3", LicenseID: "Zimbra-1.3", SeeAlso: []string{ "http://web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html", }, IsOsiApproved: false, }, "ogtsl": { Reference: "https://spdx.org/licenses/OGTSL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OGTSL.json", ReferenceNumber: 435, Name: "Open Group Test Suite License", LicenseID: "OGTSL", SeeAlso: []string{ "http://www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt", "https://opensource.org/licenses/OGTSL", }, IsOsiApproved: true, }, "pddl-1.0": { Reference: "https://spdx.org/licenses/PDDL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/PDDL-1.0.json", ReferenceNumber: 436, Name: "Open Data Commons Public Domain Dedication & License 1.0", LicenseID: "PDDL-1.0", SeeAlso: []string{ "http://opendatacommons.org/licenses/pddl/1.0/", "https://opendatacommons.org/licenses/pddl/", }, IsOsiApproved: false, }, "unixcrypt": { Reference: "https://spdx.org/licenses/UnixCrypt.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/UnixCrypt.json", ReferenceNumber: 437, Name: "UnixCrypt License", LicenseID: "UnixCrypt", SeeAlso: []string{ "https://foss.heptapod.net/python-libs/passlib/-/blob/branch/stable/LICENSE#L70", "https://opensource.apple.com/source/JBoss/JBoss-737/jboss-all/jetty/src/main/org/mortbay/util/UnixCrypt.java.auto.html", "https://archive.eclipse.org/jetty/8.0.1.v20110908/xref/org/eclipse/jetty/http/security/UnixCrypt.html", }, IsOsiApproved: false, }, "cern-ohl-w-2.0": { Reference: "https://spdx.org/licenses/CERN-OHL-W-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CERN-OHL-W-2.0.json", ReferenceNumber: 438, Name: "CERN Open Hardware Licence Version 2 - Weakly Reciprocal", LicenseID: "CERN-OHL-W-2.0", SeeAlso: []string{ "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2", }, IsOsiApproved: true, }, "gfdl-1.3-only": { Reference: "https://spdx.org/licenses/GFDL-1.3-only.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GFDL-1.3-only.json", ReferenceNumber: 439, Name: "GNU Free Documentation License v1.3 only", LicenseID: "GFDL-1.3-only", SeeAlso: []string{ "https://www.gnu.org/licenses/fdl-1.3.txt", }, IsOsiApproved: false, }, "cc-by-nc-2.5": { Reference: "https://spdx.org/licenses/CC-BY-NC-2.5.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-2.5.json", ReferenceNumber: 440, Name: "Creative Commons Attribution Non Commercial 2.5 Generic", LicenseID: "CC-BY-NC-2.5", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc/2.5/legalcode", }, IsOsiApproved: false, }, "erlpl-1.1": { Reference: "https://spdx.org/licenses/ErlPL-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ErlPL-1.1.json", ReferenceNumber: 441, Name: "Erlang Public License v1.1", LicenseID: "ErlPL-1.1", SeeAlso: []string{ "http://www.erlang.org/EPLICENSE", }, IsOsiApproved: false, }, "magaz": { Reference: "https://spdx.org/licenses/magaz.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/magaz.json", ReferenceNumber: 442, Name: "magaz License", LicenseID: "magaz", SeeAlso: []string{ "https://mirrors.nic.cz/tex-archive/macros/latex/contrib/magaz/magaz.tex", }, IsOsiApproved: false, }, "borceux": { Reference: "https://spdx.org/licenses/Borceux.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Borceux.json", ReferenceNumber: 443, Name: "Borceux license", LicenseID: "Borceux", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Borceux", }, IsOsiApproved: false, }, "app-s2p": { Reference: "https://spdx.org/licenses/App-s2p.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/App-s2p.json", ReferenceNumber: 444, Name: "App::s2p License", LicenseID: "App-s2p", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/App-s2p", }, IsOsiApproved: false, }, "cc-by-nc-nd-4.0": { Reference: "https://spdx.org/licenses/CC-BY-NC-ND-4.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-ND-4.0.json", ReferenceNumber: 445, Name: "Creative Commons Attribution Non Commercial No Derivatives 4.0 International", LicenseID: "CC-BY-NC-ND-4.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode", }, IsOsiApproved: false, }, "agpl-3.0": { Reference: "https://spdx.org/licenses/AGPL-3.0.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/AGPL-3.0.json", ReferenceNumber: 446, Name: "GNU Affero General Public License v3.0", LicenseID: "AGPL-3.0", SeeAlso: []string{ "https://www.gnu.org/licenses/agpl.txt", "https://opensource.org/licenses/AGPL-3.0", }, IsOsiApproved: true, }, "cecill-2.1": { Reference: "https://spdx.org/licenses/CECILL-2.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CECILL-2.1.json", ReferenceNumber: 447, Name: "CeCILL Free Software License Agreement v2.1", LicenseID: "CECILL-2.1", SeeAlso: []string{ "http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html", }, IsOsiApproved: true, }, "ogl-uk-2.0": { Reference: "https://spdx.org/licenses/OGL-UK-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OGL-UK-2.0.json", ReferenceNumber: 448, Name: "Open Government Licence v2.0", LicenseID: "OGL-UK-2.0", SeeAlso: []string{ "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/", }, IsOsiApproved: false, }, "bsd-protection": { Reference: "https://spdx.org/licenses/BSD-Protection.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-Protection.json", ReferenceNumber: 449, Name: "BSD Protection License", LicenseID: "BSD-Protection", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/BSD_Protection_License", }, IsOsiApproved: false, }, "cecill-b": { Reference: "https://spdx.org/licenses/CECILL-B.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CECILL-B.json", ReferenceNumber: 450, Name: "CeCILL-B Free Software License Agreement", LicenseID: "CECILL-B", SeeAlso: []string{ "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html", }, IsOsiApproved: false, }, "bsd-systemics": { Reference: "https://spdx.org/licenses/BSD-Systemics.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-Systemics.json", ReferenceNumber: 451, Name: "Systemics BSD variant license", LicenseID: "BSD-Systemics", SeeAlso: []string{ "https://metacpan.org/release/DPARIS/Crypt-DES-2.07/source/COPYRIGHT", }, IsOsiApproved: false, }, "gpl-2.0-with-classpath-exception": { Reference: "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.json", ReferenceNumber: 452, Name: "GNU General Public License v2.0 w/Classpath exception", LicenseID: "GPL-2.0-with-classpath-exception", SeeAlso: []string{ "https://www.gnu.org/software/classpath/license.html", }, IsOsiApproved: false, }, "osl-1.0": { Reference: "https://spdx.org/licenses/OSL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OSL-1.0.json", ReferenceNumber: 453, Name: "Open Software License 1.0", LicenseID: "OSL-1.0", SeeAlso: []string{ "https://opensource.org/licenses/OSL-1.0", }, IsOsiApproved: true, }, "epics": { Reference: "https://spdx.org/licenses/EPICS.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/EPICS.json", ReferenceNumber: 454, Name: "EPICS Open License", LicenseID: "EPICS", SeeAlso: []string{ "https://epics.anl.gov/license/open.php", }, IsOsiApproved: false, }, "gfdl-1.3-no-invariants-only": { Reference: "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.json", ReferenceNumber: 455, Name: "GNU Free Documentation License v1.3 only - no invariants", LicenseID: "GFDL-1.3-no-invariants-only", SeeAlso: []string{ "https://www.gnu.org/licenses/fdl-1.3.txt", }, IsOsiApproved: false, }, "rpsl-1.0": { Reference: "https://spdx.org/licenses/RPSL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/RPSL-1.0.json", ReferenceNumber: 456, Name: "RealNetworks Public Source License v1.0", LicenseID: "RPSL-1.0", SeeAlso: []string{ "https://helixcommunity.org/content/rpsl", "https://opensource.org/licenses/RPSL-1.0", }, IsOsiApproved: true, }, "cpl-1.0": { Reference: "https://spdx.org/licenses/CPL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CPL-1.0.json", ReferenceNumber: 457, Name: "Common Public License 1.0", LicenseID: "CPL-1.0", SeeAlso: []string{ "https://opensource.org/licenses/CPL-1.0", }, IsOsiApproved: true, }, "efl-2.0": { Reference: "https://spdx.org/licenses/EFL-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/EFL-2.0.json", ReferenceNumber: 458, Name: "Eiffel Forum License v2.0", LicenseID: "EFL-2.0", SeeAlso: []string{ "http://www.eiffel-nice.org/license/eiffel-forum-license-2.html", "https://opensource.org/licenses/EFL-2.0", }, IsOsiApproved: true, }, "npl-1.1": { Reference: "https://spdx.org/licenses/NPL-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NPL-1.1.json", ReferenceNumber: 459, Name: "Netscape Public License v1.1", LicenseID: "NPL-1.1", SeeAlso: []string{ "http://www.mozilla.org/MPL/NPL/1.1/", }, IsOsiApproved: false, }, "cube": { Reference: "https://spdx.org/licenses/Cube.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Cube.json", ReferenceNumber: 460, Name: "Cube License", LicenseID: "Cube", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Cube", }, IsOsiApproved: false, }, "hpnd-sell-regexpr": { Reference: "https://spdx.org/licenses/HPND-sell-regexpr.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/HPND-sell-regexpr.json", ReferenceNumber: 461, Name: "Historical Permission Notice and Disclaimer - sell regexpr variant", LicenseID: "HPND-sell-regexpr", SeeAlso: []string{ "https://gitlab.com/bacula-org/bacula/-/blob/Branch-11.0/bacula/LICENSE-FOSS?ref_type=heads#L245", }, IsOsiApproved: false, }, "cc-by-nc-sa-3.0-de": { Reference: "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.json", ReferenceNumber: 462, Name: "Creative Commons Attribution Non Commercial Share Alike 3.0 Germany", LicenseID: "CC-BY-NC-SA-3.0-DE", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc-sa/3.0/de/legalcode", }, IsOsiApproved: false, }, "ampas": { Reference: "https://spdx.org/licenses/AMPAS.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/AMPAS.json", ReferenceNumber: 463, Name: "Academy of Motion Picture Arts and Sciences BSD", LicenseID: "AMPAS", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/BSD#AMPASBSD", }, IsOsiApproved: false, }, "nlod-2.0": { Reference: "https://spdx.org/licenses/NLOD-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NLOD-2.0.json", ReferenceNumber: 464, Name: "Norwegian Licence for Open Government Data (NLOD) 2.0", LicenseID: "NLOD-2.0", SeeAlso: []string{ "http://data.norge.no/nlod/en/2.0", }, IsOsiApproved: false, }, "ttwl": { Reference: "https://spdx.org/licenses/TTWL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/TTWL.json", ReferenceNumber: 465, Name: "Text-Tabs+Wrap License", LicenseID: "TTWL", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/TTWL", "https://github.com/ap/Text-Tabs/blob/master/lib.modern/Text/Tabs.pm#L148", }, IsOsiApproved: false, }, "swl": { Reference: "https://spdx.org/licenses/SWL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SWL.json", ReferenceNumber: 466, Name: "Scheme Widget Library (SWL) Software License Agreement", LicenseID: "SWL", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/SWL", }, IsOsiApproved: false, }, "mit-modern-variant": { Reference: "https://spdx.org/licenses/MIT-Modern-Variant.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MIT-Modern-Variant.json", ReferenceNumber: 467, Name: "MIT License Modern Variant", LicenseID: "MIT-Modern-Variant", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing:MIT#Modern_Variants", "https://ptolemy.berkeley.edu/copyright.htm", "https://pirlwww.lpl.arizona.edu/resources/guide/software/PerlTk/Tixlic.html", }, IsOsiApproved: true, }, "fsfullrwd": { Reference: "https://spdx.org/licenses/FSFULLRWD.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/FSFULLRWD.json", ReferenceNumber: 468, Name: "FSF Unlimited License (With License Retention and Warranty Disclaimer)", LicenseID: "FSFULLRWD", SeeAlso: []string{ "https://lists.gnu.org/archive/html/autoconf/2012-04/msg00061.html", }, IsOsiApproved: false, }, "ncgl-uk-2.0": { Reference: "https://spdx.org/licenses/NCGL-UK-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NCGL-UK-2.0.json", ReferenceNumber: 469, Name: "Non-Commercial Government Licence", LicenseID: "NCGL-UK-2.0", SeeAlso: []string{ "http://www.nationalarchives.gov.uk/doc/non-commercial-government-licence/version/2/", }, IsOsiApproved: false, }, "ntp-0": { Reference: "https://spdx.org/licenses/NTP-0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NTP-0.json", ReferenceNumber: 470, Name: "NTP No Attribution", LicenseID: "NTP-0", SeeAlso: []string{ "https://github.com/tytso/e2fsprogs/blob/master/lib/et/et_name.c", }, IsOsiApproved: false, }, "sgi-b-1.0": { Reference: "https://spdx.org/licenses/SGI-B-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SGI-B-1.0.json", ReferenceNumber: 471, Name: "SGI Free Software License B v1.0", LicenseID: "SGI-B-1.0", SeeAlso: []string{ "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html", }, IsOsiApproved: false, }, "bsd-3-clause-hp": { Reference: "https://spdx.org/licenses/BSD-3-Clause-HP.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-3-Clause-HP.json", ReferenceNumber: 472, Name: "Hewlett-Packard BSD variant license", LicenseID: "BSD-3-Clause-HP", SeeAlso: []string{ "https://github.com/zdohnal/hplip/blob/master/COPYING#L939", }, IsOsiApproved: false, }, "cnri-python-gpl-compatible": { Reference: "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.json", ReferenceNumber: 473, Name: "CNRI Python Open Source GPL Compatible License Agreement", LicenseID: "CNRI-Python-GPL-Compatible", SeeAlso: []string{ "http://www.python.org/download/releases/1.6.1/download_win/", }, IsOsiApproved: false, }, "cdla-permissive-1.0": { Reference: "https://spdx.org/licenses/CDLA-Permissive-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CDLA-Permissive-1.0.json", ReferenceNumber: 474, Name: "Community Data License Agreement Permissive 1.0", LicenseID: "CDLA-Permissive-1.0", SeeAlso: []string{ "https://cdla.io/permissive-1-0", }, IsOsiApproved: false, }, "cc-by-nc-sa-3.0-igo": { Reference: "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.json", ReferenceNumber: 475, Name: "Creative Commons Attribution Non Commercial Share Alike 3.0 IGO", LicenseID: "CC-BY-NC-SA-3.0-IGO", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc-sa/3.0/igo/legalcode", }, IsOsiApproved: false, }, "gpl-2.0-with-gcc-exception": { Reference: "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.json", ReferenceNumber: 476, Name: "GNU General Public License v2.0 w/GCC Runtime Library exception", LicenseID: "GPL-2.0-with-GCC-exception", SeeAlso: []string{ "https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/libgcc1.c;h=762f5143fc6eed57b6797c82710f3538aa52b40b;hb=cb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10", }, IsOsiApproved: false, }, "opl-1.0": { Reference: "https://spdx.org/licenses/OPL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OPL-1.0.json", ReferenceNumber: 477, Name: "Open Public License v1.0", LicenseID: "OPL-1.0", SeeAlso: []string{ "http://old.koalateam.com/jackaroo/OPL_1_0.TXT", "https://fedoraproject.org/wiki/Licensing/Open_Public_License", }, IsOsiApproved: false, }, "frameworx-1.0": { Reference: "https://spdx.org/licenses/Frameworx-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Frameworx-1.0.json", ReferenceNumber: 478, Name: "Frameworx Open License 1.0", LicenseID: "Frameworx-1.0", SeeAlso: []string{ "https://opensource.org/licenses/Frameworx-1.0", }, IsOsiApproved: true, }, "zed": { Reference: "https://spdx.org/licenses/Zed.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Zed.json", ReferenceNumber: 479, Name: "Zed License", LicenseID: "Zed", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Zed", }, IsOsiApproved: false, }, "rhecos-1.1": { Reference: "https://spdx.org/licenses/RHeCos-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/RHeCos-1.1.json", ReferenceNumber: 480, Name: "Red Hat eCos Public License v1.1", LicenseID: "RHeCos-1.1", SeeAlso: []string{ "http://ecos.sourceware.org/old-license.html", }, IsOsiApproved: false, }, "boehm-gc": { Reference: "https://spdx.org/licenses/Boehm-GC.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Boehm-GC.json", ReferenceNumber: 481, Name: "Boehm-Demers-Weiser GC License", LicenseID: "Boehm-GC", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing:MIT#Another_Minimal_variant_(found_in_libatomic_ops)", "https://github.com/uim/libgcroots/blob/master/COPYING", "https://github.com/ivmai/libatomic_ops/blob/master/LICENSE", }, IsOsiApproved: false, }, "martin-birgmeier": { Reference: "https://spdx.org/licenses/Martin-Birgmeier.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Martin-Birgmeier.json", ReferenceNumber: 482, Name: "Martin Birgmeier License", LicenseID: "Martin-Birgmeier", SeeAlso: []string{ "https://github.com/Perl/perl5/blob/blead/util.c#L6136", }, IsOsiApproved: false, }, "cc-by-sa-3.0-at": { Reference: "https://spdx.org/licenses/CC-BY-SA-3.0-AT.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-SA-3.0-AT.json", ReferenceNumber: 483, Name: "Creative Commons Attribution Share Alike 3.0 Austria", LicenseID: "CC-BY-SA-3.0-AT", SeeAlso: []string{ "https://creativecommons.org/licenses/by-sa/3.0/at/legalcode", }, IsOsiApproved: false, }, "lgpl-2.1-or-later": { Reference: "https://spdx.org/licenses/LGPL-2.1-or-later.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LGPL-2.1-or-later.json", ReferenceNumber: 484, Name: "GNU Lesser General Public License v2.1 or later", LicenseID: "LGPL-2.1-or-later", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", "https://opensource.org/licenses/LGPL-2.1", }, IsOsiApproved: true, }, "w3c-20150513": { Reference: "https://spdx.org/licenses/W3C-20150513.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/W3C-20150513.json", ReferenceNumber: 485, Name: "W3C Software Notice and Document License (2015-05-13)", LicenseID: "W3C-20150513", SeeAlso: []string{ "https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document", }, IsOsiApproved: false, }, "kastrup": { Reference: "https://spdx.org/licenses/Kastrup.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Kastrup.json", ReferenceNumber: 486, Name: "Kastrup License", LicenseID: "Kastrup", SeeAlso: []string{ "https://ctan.math.utah.edu/ctan/tex-archive/macros/generic/kastrup/binhex.dtx", }, IsOsiApproved: false, }, "mpl-2.0": { Reference: "https://spdx.org/licenses/MPL-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MPL-2.0.json", ReferenceNumber: 487, Name: "Mozilla Public License 2.0", LicenseID: "MPL-2.0", SeeAlso: []string{ "https://www.mozilla.org/MPL/2.0/", "https://opensource.org/licenses/MPL-2.0", }, IsOsiApproved: true, }, "cpol-1.02": { Reference: "https://spdx.org/licenses/CPOL-1.02.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CPOL-1.02.json", ReferenceNumber: 488, Name: "Code Project Open License 1.02", LicenseID: "CPOL-1.02", SeeAlso: []string{ "http://www.codeproject.com/info/cpol10.aspx", }, IsOsiApproved: false, }, "vim": { Reference: "https://spdx.org/licenses/Vim.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Vim.json", ReferenceNumber: 489, Name: "Vim License", LicenseID: "Vim", SeeAlso: []string{ "http://vimdoc.sourceforge.net/htmldoc/uganda.html", }, IsOsiApproved: false, }, "zlib-acknowledgement": { Reference: "https://spdx.org/licenses/zlib-acknowledgement.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/zlib-acknowledgement.json", ReferenceNumber: 490, Name: "zlib/libpng License with Acknowledgement", LicenseID: "zlib-acknowledgement", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement", }, IsOsiApproved: false, }, "gpl-3.0-with-gcc-exception": { Reference: "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.json", ReferenceNumber: 491, Name: "GNU General Public License v3.0 w/GCC Runtime Library exception", LicenseID: "GPL-3.0-with-GCC-exception", SeeAlso: []string{ "https://www.gnu.org/licenses/gcc-exception-3.1.html", }, IsOsiApproved: true, }, "mit-open-group": { Reference: "https://spdx.org/licenses/MIT-open-group.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MIT-open-group.json", ReferenceNumber: 492, Name: "MIT Open Group variant", LicenseID: "MIT-open-group", SeeAlso: []string{ "https://gitlab.freedesktop.org/xorg/app/iceauth/-/blob/master/COPYING", "https://gitlab.freedesktop.org/xorg/app/xvinfo/-/blob/master/COPYING", "https://gitlab.freedesktop.org/xorg/app/xsetroot/-/blob/master/COPYING", "https://gitlab.freedesktop.org/xorg/app/xauth/-/blob/master/COPYING", }, IsOsiApproved: false, }, "imatix": { Reference: "https://spdx.org/licenses/iMatix.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/iMatix.json", ReferenceNumber: 493, Name: "iMatix Standard Function Library Agreement", LicenseID: "iMatix", SeeAlso: []string{ "http://legacy.imatix.com/html/sfl/sfl4.htm#license", }, IsOsiApproved: false, }, "mit-festival": { Reference: "https://spdx.org/licenses/MIT-Festival.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MIT-Festival.json", ReferenceNumber: 494, Name: "MIT Festival Variant", LicenseID: "MIT-Festival", SeeAlso: []string{ "https://github.com/festvox/flite/blob/master/COPYING", "https://github.com/festvox/speech_tools/blob/master/COPYING", }, IsOsiApproved: false, }, "urt-rle": { Reference: "https://spdx.org/licenses/URT-RLE.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/URT-RLE.json", ReferenceNumber: 495, Name: "Utah Raster Toolkit Run Length Encoded License", LicenseID: "URT-RLE", SeeAlso: []string{ "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/other/pnmtorle.c", "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/other/rletopnm.c", }, IsOsiApproved: false, }, "c-uda-1.0": { Reference: "https://spdx.org/licenses/C-UDA-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/C-UDA-1.0.json", ReferenceNumber: 496, Name: "Computational Use of Data Agreement v1.0", LicenseID: "C-UDA-1.0", SeeAlso: []string{ "https://github.com/microsoft/Computational-Use-of-Data-Agreement/blob/master/C-UDA-1.0.md", "https://cdla.dev/computational-use-of-data-agreement-v1-0/", }, IsOsiApproved: false, }, "zpl-1.1": { Reference: "https://spdx.org/licenses/ZPL-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ZPL-1.1.json", ReferenceNumber: 497, Name: "Zope Public License 1.1", LicenseID: "ZPL-1.1", SeeAlso: []string{ "http://old.zope.org/Resources/License/ZPL-1.1", }, IsOsiApproved: false, }, "crystalstacker": { Reference: "https://spdx.org/licenses/CrystalStacker.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CrystalStacker.json", ReferenceNumber: 498, Name: "CrystalStacker License", LicenseID: "CrystalStacker", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing:CrystalStacker?rd=Licensing/CrystalStacker", }, IsOsiApproved: false, }, "cc-by-nc-nd-2.5": { Reference: "https://spdx.org/licenses/CC-BY-NC-ND-2.5.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-ND-2.5.json", ReferenceNumber: 499, Name: "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic", LicenseID: "CC-BY-NC-ND-2.5", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc-nd/2.5/legalcode", }, IsOsiApproved: false, }, "cc-by-nc-1.0": { Reference: "https://spdx.org/licenses/CC-BY-NC-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-NC-1.0.json", ReferenceNumber: 500, Name: "Creative Commons Attribution Non Commercial 1.0 Generic", LicenseID: "CC-BY-NC-1.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nc/1.0/legalcode", }, IsOsiApproved: false, }, "gfdl-1.2-invariants-only": { Reference: "https://spdx.org/licenses/GFDL-1.2-invariants-only.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GFDL-1.2-invariants-only.json", ReferenceNumber: 501, Name: "GNU Free Documentation License v1.2 only - invariants", LicenseID: "GFDL-1.2-invariants-only", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt", }, IsOsiApproved: false, }, "hpnd-sell-variant-mit-disclaimer": { Reference: "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.json", ReferenceNumber: 502, Name: "HPND sell variant with MIT disclaimer", LicenseID: "HPND-sell-variant-MIT-disclaimer", SeeAlso: []string{ "https://github.com/sigmavirus24/x11-ssh-askpass/blob/master/README", }, IsOsiApproved: false, }, "ms-pl": { Reference: "https://spdx.org/licenses/MS-PL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/MS-PL.json", ReferenceNumber: 503, Name: "Microsoft Public License", LicenseID: "MS-PL", SeeAlso: []string{ "http://www.microsoft.com/opensource/licenses.mspx", "https://opensource.org/licenses/MS-PL", }, IsOsiApproved: true, }, "hpnd-pbmplus": { Reference: "https://spdx.org/licenses/HPND-Pbmplus.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/HPND-Pbmplus.json", ReferenceNumber: 504, Name: "Historical Permission Notice and Disclaimer - Pbmplus variant", LicenseID: "HPND-Pbmplus", SeeAlso: []string{ "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/netpbm.c#l8", }, IsOsiApproved: false, }, "ofl-1.1": { Reference: "https://spdx.org/licenses/OFL-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OFL-1.1.json", ReferenceNumber: 505, Name: "SIL Open Font License 1.1", LicenseID: "OFL-1.1", SeeAlso: []string{ "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web", "https://opensource.org/licenses/OFL-1.1", }, IsOsiApproved: true, }, "leptonica": { Reference: "https://spdx.org/licenses/Leptonica.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Leptonica.json", ReferenceNumber: 506, Name: "Leptonica License", LicenseID: "Leptonica", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Leptonica", }, IsOsiApproved: false, }, "sunpro": { Reference: "https://spdx.org/licenses/SunPro.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SunPro.json", ReferenceNumber: 507, Name: "SunPro License", LicenseID: "SunPro", SeeAlso: []string{ "https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_acosh.c", "https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_lgammal.c", }, IsOsiApproved: false, }, "wtfpl": { Reference: "https://spdx.org/licenses/WTFPL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/WTFPL.json", ReferenceNumber: 508, Name: "Do What The F*ck You Want To Public License", LicenseID: "WTFPL", SeeAlso: []string{ "http://www.wtfpl.net/about/", "http://sam.zoy.org/wtfpl/COPYING", }, IsOsiApproved: false, }, "cddl-1.0": { Reference: "https://spdx.org/licenses/CDDL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CDDL-1.0.json", ReferenceNumber: 509, Name: "Common Development and Distribution License 1.0", LicenseID: "CDDL-1.0", SeeAlso: []string{ "https://opensource.org/licenses/cddl1", }, IsOsiApproved: true, }, "offis": { Reference: "https://spdx.org/licenses/OFFIS.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OFFIS.json", ReferenceNumber: 510, Name: "OFFIS License", LicenseID: "OFFIS", SeeAlso: []string{ "https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/dicom/README", }, IsOsiApproved: false, }, "latex2e": { Reference: "https://spdx.org/licenses/Latex2e.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Latex2e.json", ReferenceNumber: 511, Name: "Latex2e License", LicenseID: "Latex2e", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Latex2e", }, IsOsiApproved: false, }, "gfdl-1.3-no-invariants-or-later": { Reference: "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.json", ReferenceNumber: 512, Name: "GNU Free Documentation License v1.3 or later - no invariants", LicenseID: "GFDL-1.3-no-invariants-or-later", SeeAlso: []string{ "https://www.gnu.org/licenses/fdl-1.3.txt", }, IsOsiApproved: false, }, "xpp": { Reference: "https://spdx.org/licenses/xpp.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/xpp.json", ReferenceNumber: 513, Name: "XPP License", LicenseID: "xpp", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/xpp", }, IsOsiApproved: false, }, "lppl-1.3c": { Reference: "https://spdx.org/licenses/LPPL-1.3c.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LPPL-1.3c.json", ReferenceNumber: 514, Name: "LaTeX Project Public License v1.3c", LicenseID: "LPPL-1.3c", SeeAlso: []string{ "http://www.latex-project.org/lppl/lppl-1-3c.txt", "https://opensource.org/licenses/LPPL-1.3c", }, IsOsiApproved: true, }, "xlock": { Reference: "https://spdx.org/licenses/xlock.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/xlock.json", ReferenceNumber: 515, Name: "xlock License", LicenseID: "xlock", SeeAlso: []string{ "https://fossies.org/linux/tiff/contrib/ras/ras2tif.c", }, IsOsiApproved: false, }, "dl-de-by-2.0": { Reference: "https://spdx.org/licenses/DL-DE-BY-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/DL-DE-BY-2.0.json", ReferenceNumber: 516, Name: "Data licence Germany â attribution â version 2.0", LicenseID: "DL-DE-BY-2.0", SeeAlso: []string{ "https://www.govdata.de/dl-de/by-2-0", }, IsOsiApproved: false, }, "vostrom": { Reference: "https://spdx.org/licenses/VOSTROM.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/VOSTROM.json", ReferenceNumber: 517, Name: "VOSTROM Public License for Open Source", LicenseID: "VOSTROM", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/VOSTROM", }, IsOsiApproved: false, }, "apsl-1.1": { Reference: "https://spdx.org/licenses/APSL-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/APSL-1.1.json", ReferenceNumber: 518, Name: "Apple Public Source License 1.1", LicenseID: "APSL-1.1", SeeAlso: []string{ "http://www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE", }, IsOsiApproved: true, }, "ecl-2.0": { Reference: "https://spdx.org/licenses/ECL-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ECL-2.0.json", ReferenceNumber: 519, Name: "Educational Community License v2.0", LicenseID: "ECL-2.0", SeeAlso: []string{ "https://opensource.org/licenses/ECL-2.0", }, IsOsiApproved: true, }, "bzip2-1.0.6": { Reference: "https://spdx.org/licenses/bzip2-1.0.6.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/bzip2-1.0.6.json", ReferenceNumber: 520, Name: "bzip2 and libbzip2 License v1.0.6", LicenseID: "bzip2-1.0.6", SeeAlso: []string{ "https://sourceware.org/git/?p=bzip2.git;a=blob;f=LICENSE;hb=bzip2-1.0.6", "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html", }, IsOsiApproved: false, }, "xdebug-1.03": { Reference: "https://spdx.org/licenses/Xdebug-1.03.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Xdebug-1.03.json", ReferenceNumber: 521, Name: "Xdebug License v 1.03", LicenseID: "Xdebug-1.03", SeeAlso: []string{ "https://github.com/xdebug/xdebug/blob/master/LICENSE", }, IsOsiApproved: false, }, "php-3.0": { Reference: "https://spdx.org/licenses/PHP-3.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/PHP-3.0.json", ReferenceNumber: 522, Name: "PHP License v3.0", LicenseID: "PHP-3.0", SeeAlso: []string{ "http://www.php.net/license/3_0.txt", "https://opensource.org/licenses/PHP-3.0", }, IsOsiApproved: true, }, "tcl": { Reference: "https://spdx.org/licenses/TCL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/TCL.json", ReferenceNumber: 523, Name: "TCL/TK License", LicenseID: "TCL", SeeAlso: []string{ "http://www.tcl.tk/software/tcltk/license.html", "https://fedoraproject.org/wiki/Licensing/TCL", }, IsOsiApproved: false, }, "sgi-b-1.1": { Reference: "https://spdx.org/licenses/SGI-B-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SGI-B-1.1.json", ReferenceNumber: 524, Name: "SGI Free Software License B v1.1", LicenseID: "SGI-B-1.1", SeeAlso: []string{ "http://oss.sgi.com/projects/FreeB/", }, IsOsiApproved: false, }, "python-2.0": { Reference: "https://spdx.org/licenses/Python-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Python-2.0.json", ReferenceNumber: 525, Name: "Python License 2.0", LicenseID: "Python-2.0", SeeAlso: []string{ "https://opensource.org/licenses/Python-2.0", }, IsOsiApproved: true, }, "apsl-2.0": { Reference: "https://spdx.org/licenses/APSL-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/APSL-2.0.json", ReferenceNumber: 526, Name: "Apple Public Source License 2.0", LicenseID: "APSL-2.0", SeeAlso: []string{ "http://www.opensource.apple.com/license/apsl/", }, IsOsiApproved: true, }, "wsuipa": { Reference: "https://spdx.org/licenses/Wsuipa.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Wsuipa.json", ReferenceNumber: 527, Name: "Wsuipa License", LicenseID: "Wsuipa", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Wsuipa", }, IsOsiApproved: false, }, "apache-1.0": { Reference: "https://spdx.org/licenses/Apache-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Apache-1.0.json", ReferenceNumber: 528, Name: "Apache License 1.0", LicenseID: "Apache-1.0", SeeAlso: []string{ "http://www.apache.org/licenses/LICENSE-1.0", }, IsOsiApproved: false, }, "bsl-1.0": { Reference: "https://spdx.org/licenses/BSL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSL-1.0.json", ReferenceNumber: 529, Name: "Boost Software License 1.0", LicenseID: "BSL-1.0", SeeAlso: []string{ "http://www.boost.org/LICENSE_1_0.txt", "https://opensource.org/licenses/BSL-1.0", }, IsOsiApproved: true, }, "antlr-pd": { Reference: "https://spdx.org/licenses/ANTLR-PD.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ANTLR-PD.json", ReferenceNumber: 530, Name: "ANTLR Software Rights Notice", LicenseID: "ANTLR-PD", SeeAlso: []string{ "http://www.antlr2.org/license.html", }, IsOsiApproved: false, }, "lal-1.3": { Reference: "https://spdx.org/licenses/LAL-1.3.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LAL-1.3.json", ReferenceNumber: 531, Name: "Licence Art Libre 1.3", LicenseID: "LAL-1.3", SeeAlso: []string{ "https://artlibre.org/", }, IsOsiApproved: false, }, "hpnd-export-us-modify": { Reference: "https://spdx.org/licenses/HPND-export-US-modify.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/HPND-export-US-modify.json", ReferenceNumber: 532, Name: "HPND with US Government export control warning and modification rqmt", LicenseID: "HPND-export-US-modify", SeeAlso: []string{ "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L1157-L1182", "https://github.com/pythongssapi/k5test/blob/v0.10.3/K5TEST-LICENSE.txt", }, IsOsiApproved: false, }, "arphic-1999": { Reference: "https://spdx.org/licenses/Arphic-1999.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Arphic-1999.json", ReferenceNumber: 533, Name: "Arphic Public License", LicenseID: "Arphic-1999", SeeAlso: []string{ "http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/LICENSE", }, IsOsiApproved: false, }, "dotseqn": { Reference: "https://spdx.org/licenses/Dotseqn.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Dotseqn.json", ReferenceNumber: 534, Name: "Dotseqn License", LicenseID: "Dotseqn", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Dotseqn", }, IsOsiApproved: false, }, "info-zip": { Reference: "https://spdx.org/licenses/Info-ZIP.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Info-ZIP.json", ReferenceNumber: 535, Name: "Info-ZIP License", LicenseID: "Info-ZIP", SeeAlso: []string{ "http://www.info-zip.org/license.html", }, IsOsiApproved: false, }, "psutils": { Reference: "https://spdx.org/licenses/psutils.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/psutils.json", ReferenceNumber: 536, Name: "psutils License", LicenseID: "psutils", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/psutils", }, IsOsiApproved: false, }, "nist-pd": { Reference: "https://spdx.org/licenses/NIST-PD.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NIST-PD.json", ReferenceNumber: 537, Name: "NIST Public Domain Notice", LicenseID: "NIST-PD", SeeAlso: []string{ "https://github.com/tcheneau/simpleRPL/blob/e645e69e38dd4e3ccfeceb2db8cba05b7c2e0cd3/LICENSE.txt", "https://github.com/tcheneau/Routing/blob/f09f46fcfe636107f22f2c98348188a65a135d98/README.md", }, IsOsiApproved: false, }, "gpl-2.0-or-later": { Reference: "https://spdx.org/licenses/GPL-2.0-or-later.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GPL-2.0-or-later.json", ReferenceNumber: 538, Name: "GNU General Public License v2.0 or later", LicenseID: "GPL-2.0-or-later", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", "https://opensource.org/licenses/GPL-2.0", }, IsOsiApproved: true, }, "bsd-4.3reno": { Reference: "https://spdx.org/licenses/BSD-4.3RENO.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-4.3RENO.json", ReferenceNumber: 539, Name: "BSD 4.3 RENO License", LicenseID: "BSD-4.3RENO", SeeAlso: []string{ "https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=libiberty/strcasecmp.c;h=131d81c2ce7881fa48c363dc5bf5fb302c61ce0b;hb=HEAD", "https://git.openldap.org/openldap/openldap/-/blob/master/COPYRIGHT#L55-63", }, IsOsiApproved: false, }, "hpnd-sell-variant": { Reference: "https://spdx.org/licenses/HPND-sell-variant.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/HPND-sell-variant.json", ReferenceNumber: 540, Name: "Historical Permission Notice and Disclaimer - sell variant", LicenseID: "HPND-sell-variant", SeeAlso: []string{ "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h=v4.19", }, IsOsiApproved: false, }, "cnri-jython": { Reference: "https://spdx.org/licenses/CNRI-Jython.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CNRI-Jython.json", ReferenceNumber: 541, Name: "CNRI Jython License", LicenseID: "CNRI-Jython", SeeAlso: []string{ "http://www.jython.org/license.html", }, IsOsiApproved: false, }, "coil-1.0": { Reference: "https://spdx.org/licenses/COIL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/COIL-1.0.json", ReferenceNumber: 542, Name: "Copyfree Open Innovation License", LicenseID: "COIL-1.0", SeeAlso: []string{ "https://coil.apotheon.org/plaintext/01.0.txt", }, IsOsiApproved: false, }, "fsfap": { Reference: "https://spdx.org/licenses/FSFAP.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/FSFAP.json", ReferenceNumber: 543, Name: "FSF All Permissive License", LicenseID: "FSFAP", SeeAlso: []string{ "https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html", }, IsOsiApproved: false, }, "lpl-1.0": { Reference: "https://spdx.org/licenses/LPL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LPL-1.0.json", ReferenceNumber: 544, Name: "Lucent Public License Version 1.0", LicenseID: "LPL-1.0", SeeAlso: []string{ "https://opensource.org/licenses/LPL-1.0", }, IsOsiApproved: true, }, "olfl-1.3": { Reference: "https://spdx.org/licenses/OLFL-1.3.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OLFL-1.3.json", ReferenceNumber: 545, Name: "Open Logistics Foundation License Version 1.3", LicenseID: "OLFL-1.3", SeeAlso: []string{ "https://openlogisticsfoundation.org/licenses/", "https://opensource.org/license/olfl-1-3/", }, IsOsiApproved: true, }, "adobe-glyph": { Reference: "https://spdx.org/licenses/Adobe-Glyph.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Adobe-Glyph.json", ReferenceNumber: 546, Name: "Adobe Glyph List License", LicenseID: "Adobe-Glyph", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph", }, IsOsiApproved: false, }, "nist-software": { Reference: "https://spdx.org/licenses/NIST-Software.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NIST-Software.json", ReferenceNumber: 547, Name: "NIST Software License", LicenseID: "NIST-Software", SeeAlso: []string{ "https://github.com/open-quantum-safe/liboqs/blob/40b01fdbb270f8614fde30e65d30e9da18c02393/src/common/rand/rand_nist.c#L1-L15", }, IsOsiApproved: false, }, "ttyp0": { Reference: "https://spdx.org/licenses/TTYP0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/TTYP0.json", ReferenceNumber: 548, Name: "TTYP0 License", LicenseID: "TTYP0", SeeAlso: []string{ "https://people.mpi-inf.mpg.de/~uwe/misc/uw-ttyp0/", }, IsOsiApproved: false, }, "lgpllr": { Reference: "https://spdx.org/licenses/LGPLLR.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LGPLLR.json", ReferenceNumber: 549, Name: "Lesser General Public License For Linguistic Resources", LicenseID: "LGPLLR", SeeAlso: []string{ "http://www-igm.univ-mlv.fr/~unitex/lgpllr.html", }, IsOsiApproved: false, }, "cc-by-nd-1.0": { Reference: "https://spdx.org/licenses/CC-BY-ND-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-ND-1.0.json", ReferenceNumber: 550, Name: "Creative Commons Attribution No Derivatives 1.0 Generic", LicenseID: "CC-BY-ND-1.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-nd/1.0/legalcode", }, IsOsiApproved: false, }, "elastic-2.0": { Reference: "https://spdx.org/licenses/Elastic-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Elastic-2.0.json", ReferenceNumber: 551, Name: "Elastic License 2.0", LicenseID: "Elastic-2.0", SeeAlso: []string{ "https://www.elastic.co/licensing/elastic-license", "https://github.com/elastic/elasticsearch/blob/master/licenses/ELASTIC-LICENSE-2.0.txt", }, IsOsiApproved: false, }, "fbm": { Reference: "https://spdx.org/licenses/FBM.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/FBM.json", ReferenceNumber: 552, Name: "Fuzzy Bitmap License", LicenseID: "FBM", SeeAlso: []string{ "https://github.com/SWI-Prolog/packages-xpce/blob/161a40cd82004f731ba48024f9d30af388a7edf5/src/img/gifwrite.c#L21-L26", }, IsOsiApproved: false, }, "lppl-1.3a": { Reference: "https://spdx.org/licenses/LPPL-1.3a.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/LPPL-1.3a.json", ReferenceNumber: 553, Name: "LaTeX Project Public License v1.3a", LicenseID: "LPPL-1.3a", SeeAlso: []string{ "http://www.latex-project.org/lppl/lppl-1-3a.txt", }, IsOsiApproved: false, }, "agpl-3.0-or-later": { Reference: "https://spdx.org/licenses/AGPL-3.0-or-later.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/AGPL-3.0-or-later.json", ReferenceNumber: 554, Name: "GNU Affero General Public License v3.0 or later", LicenseID: "AGPL-3.0-or-later", SeeAlso: []string{ "https://www.gnu.org/licenses/agpl.txt", "https://opensource.org/licenses/AGPL-3.0", }, IsOsiApproved: true, }, "barr": { Reference: "https://spdx.org/licenses/Barr.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Barr.json", ReferenceNumber: 555, Name: "Barr License", LicenseID: "Barr", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Barr", }, IsOsiApproved: false, }, "cdla-permissive-2.0": { Reference: "https://spdx.org/licenses/CDLA-Permissive-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CDLA-Permissive-2.0.json", ReferenceNumber: 556, Name: "Community Data License Agreement Permissive 2.0", LicenseID: "CDLA-Permissive-2.0", SeeAlso: []string{ "https://cdla.dev/permissive-2-0", }, IsOsiApproved: false, }, "gpl-3.0-or-later": { Reference: "https://spdx.org/licenses/GPL-3.0-or-later.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/GPL-3.0-or-later.json", ReferenceNumber: 557, Name: "GNU General Public License v3.0 or later", LicenseID: "GPL-3.0-or-later", SeeAlso: []string{ "https://www.gnu.org/licenses/gpl-3.0-standalone.html", "https://opensource.org/licenses/GPL-3.0", }, IsOsiApproved: true, }, "netcdf": { Reference: "https://spdx.org/licenses/NetCDF.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NetCDF.json", ReferenceNumber: 558, Name: "NetCDF license", LicenseID: "NetCDF", SeeAlso: []string{ "http://www.unidata.ucar.edu/software/netcdf/copyright.html", }, IsOsiApproved: false, }, "bahyph": { Reference: "https://spdx.org/licenses/Bahyph.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Bahyph.json", ReferenceNumber: 559, Name: "Bahyph License", LicenseID: "Bahyph", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Bahyph", }, IsOsiApproved: false, }, "cc-by-3.0-us": { Reference: "https://spdx.org/licenses/CC-BY-3.0-US.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-3.0-US.json", ReferenceNumber: 560, Name: "Creative Commons Attribution 3.0 United States", LicenseID: "CC-BY-3.0-US", SeeAlso: []string{ "https://creativecommons.org/licenses/by/3.0/us/legalcode", }, IsOsiApproved: false, }, "dtoa": { Reference: "https://spdx.org/licenses/dtoa.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/dtoa.json", ReferenceNumber: 561, Name: "David M. Gay dtoa License", LicenseID: "dtoa", SeeAlso: []string{ "https://github.com/SWI-Prolog/swipl-devel/blob/master/src/os/dtoa.c", }, IsOsiApproved: false, }, "cc-by-2.5": { Reference: "https://spdx.org/licenses/CC-BY-2.5.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-2.5.json", ReferenceNumber: 562, Name: "Creative Commons Attribution 2.5 Generic", LicenseID: "CC-BY-2.5", SeeAlso: []string{ "https://creativecommons.org/licenses/by/2.5/legalcode", }, IsOsiApproved: false, }, "condor-1.1": { Reference: "https://spdx.org/licenses/Condor-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Condor-1.1.json", ReferenceNumber: 563, Name: "Condor Public License v1.1", LicenseID: "Condor-1.1", SeeAlso: []string{ "http://research.cs.wisc.edu/condor/license.html#condor", "http://web.archive.org/web/20111123062036/http://research.cs.wisc.edu/condor/license.html#condor", }, IsOsiApproved: false, }, "check-cvs": { Reference: "https://spdx.org/licenses/check-cvs.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/check-cvs.json", ReferenceNumber: 564, Name: "check-cvs License", LicenseID: "check-cvs", SeeAlso: []string{ "http://cvs.savannah.gnu.org/viewvc/cvs/ccvs/contrib/check_cvs.in?revision=1.1.4.3&view=markup&pathrev=cvs1-11-23#l2", }, IsOsiApproved: false, }, "mpi-permissive": { Reference: "https://spdx.org/licenses/mpi-permissive.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/mpi-permissive.json", ReferenceNumber: 565, Name: "mpi Permissive License", LicenseID: "mpi-permissive", SeeAlso: []string{ "https://sources.debian.org/src/openmpi/4.1.0-10/ompi/debuggers/msgq_interface.h/?hl=19#L19", }, IsOsiApproved: false, }, "rscpl": { Reference: "https://spdx.org/licenses/RSCPL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/RSCPL.json", ReferenceNumber: 566, Name: "Ricoh Source Code Public License", LicenseID: "RSCPL", SeeAlso: []string{ "http://wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml", "https://opensource.org/licenses/RSCPL", }, IsOsiApproved: true, }, "latex2e-translated-notice": { Reference: "https://spdx.org/licenses/Latex2e-translated-notice.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Latex2e-translated-notice.json", ReferenceNumber: 567, Name: "Latex2e with translated notice permission", LicenseID: "Latex2e-translated-notice", SeeAlso: []string{ "https://git.savannah.gnu.org/cgit/indent.git/tree/doc/indent.texi?id=a74c6b4ee49397cf330b333da1042bffa60ed14f#n74", }, IsOsiApproved: false, }, "tu-berlin-1.0": { Reference: "https://spdx.org/licenses/TU-Berlin-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/TU-Berlin-1.0.json", ReferenceNumber: 568, Name: "Technische Universitaet Berlin License 1.0", LicenseID: "TU-Berlin-1.0", SeeAlso: []string{ "https://github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT", }, IsOsiApproved: false, }, "smlnj": { Reference: "https://spdx.org/licenses/SMLNJ.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SMLNJ.json", ReferenceNumber: 569, Name: "Standard ML of New Jersey License", LicenseID: "SMLNJ", SeeAlso: []string{ "https://www.smlnj.org/license.html", }, IsOsiApproved: false, }, "bsd-2-clause-freebsd": { Reference: "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.json", ReferenceNumber: 570, Name: "BSD 2-Clause FreeBSD License", LicenseID: "BSD-2-Clause-FreeBSD", SeeAlso: []string{ "http://www.freebsd.org/copyright/freebsd-license.html", }, IsOsiApproved: false, }, "tpdl": { Reference: "https://spdx.org/licenses/TPDL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/TPDL.json", ReferenceNumber: 571, Name: "Time::ParseDate License", LicenseID: "TPDL", SeeAlso: []string{ "https://metacpan.org/pod/Time::ParseDate#LICENSE", }, IsOsiApproved: false, }, "multics": { Reference: "https://spdx.org/licenses/Multics.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Multics.json", ReferenceNumber: 572, Name: "Multics License", LicenseID: "Multics", SeeAlso: []string{ "https://opensource.org/licenses/Multics", }, IsOsiApproved: true, }, "lgpl-3.0+": { Reference: "https://spdx.org/licenses/LGPL-3.0+.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/LGPL-3.0+.json", ReferenceNumber: 573, Name: "GNU Lesser General Public License v3.0 or later", LicenseID: "LGPL-3.0+", SeeAlso: []string{ "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", "https://opensource.org/licenses/LGPL-3.0", }, IsOsiApproved: true, }, "gfdl-1.3": { Reference: "https://spdx.org/licenses/GFDL-1.3.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/GFDL-1.3.json", ReferenceNumber: 574, Name: "GNU Free Documentation License v1.3", LicenseID: "GFDL-1.3", SeeAlso: []string{ "https://www.gnu.org/licenses/fdl-1.3.txt", }, IsOsiApproved: false, }, "bsd-4-clause": { Reference: "https://spdx.org/licenses/BSD-4-Clause.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-4-Clause.json", ReferenceNumber: 575, Name: "BSD 4-Clause \"Original\" or \"Old\" License", LicenseID: "BSD-4-Clause", SeeAlso: []string{ "http://directory.fsf.org/wiki/License:BSD_4Clause", }, IsOsiApproved: false, }, "lgpl-2.0+": { Reference: "https://spdx.org/licenses/LGPL-2.0+.html", IsDeprecatedLicenseID: true, DetailsURL: "https://spdx.org/licenses/LGPL-2.0+.json", ReferenceNumber: 576, Name: "GNU Library General Public License v2 or later", LicenseID: "LGPL-2.0+", SeeAlso: []string{ "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html", }, IsOsiApproved: true, }, "bsd-2-clause-views": { Reference: "https://spdx.org/licenses/BSD-2-Clause-Views.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-2-Clause-Views.json", ReferenceNumber: 577, Name: "BSD 2-Clause with views sentence", LicenseID: "BSD-2-Clause-Views", SeeAlso: []string{ "http://www.freebsd.org/copyright/freebsd-license.html", "https://people.freebsd.org/~ivoras/wine/patch-wine-nvidia.sh", "https://github.com/protegeproject/protege/blob/master/license.txt", }, IsOsiApproved: false, }, "glide": { Reference: "https://spdx.org/licenses/Glide.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Glide.json", ReferenceNumber: 578, Name: "3dfx Glide License", LicenseID: "Glide", SeeAlso: []string{ "http://www.users.on.net/~triforce/glidexp/COPYING.txt", }, IsOsiApproved: false, }, "opubl-1.0": { Reference: "https://spdx.org/licenses/OPUBL-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OPUBL-1.0.json", ReferenceNumber: 579, Name: "Open Publication License v1.0", LicenseID: "OPUBL-1.0", SeeAlso: []string{ "http://opencontent.org/openpub/", "https://www.debian.org/opl", "https://www.ctan.org/license/opl", }, IsOsiApproved: false, }, "cc-by-sa-2.0": { Reference: "https://spdx.org/licenses/CC-BY-SA-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/CC-BY-SA-2.0.json", ReferenceNumber: 580, Name: "Creative Commons Attribution Share Alike 2.0 Generic", LicenseID: "CC-BY-SA-2.0", SeeAlso: []string{ "https://creativecommons.org/licenses/by-sa/2.0/legalcode", }, IsOsiApproved: false, }, "haskellreport": { Reference: "https://spdx.org/licenses/HaskellReport.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/HaskellReport.json", ReferenceNumber: 581, Name: "Haskell Language Report License", LicenseID: "HaskellReport", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License", }, IsOsiApproved: false, }, "jpl-image": { Reference: "https://spdx.org/licenses/JPL-image.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/JPL-image.json", ReferenceNumber: 582, Name: "JPL Image Use Policy", LicenseID: "JPL-image", SeeAlso: []string{ "https://www.jpl.nasa.gov/jpl-image-use-policy", }, IsOsiApproved: false, }, "ibm-pibs": { Reference: "https://spdx.org/licenses/IBM-pibs.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/IBM-pibs.json", ReferenceNumber: 583, Name: "IBM PowerPC Initialization and Boot Software", LicenseID: "IBM-pibs", SeeAlso: []string{ "http://git.denx.de/?p=u-boot.git;a=blob;f=arch/powerpc/cpu/ppc4xx/miiphy.c;h=297155fdafa064b955e53e9832de93bfb0cfb85b;hb=9fab4bf4cc077c21e43941866f3f2c196f28670d", }, IsOsiApproved: false, }, "ftl": { Reference: "https://spdx.org/licenses/FTL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/FTL.json", ReferenceNumber: 584, Name: "Freetype Project License", LicenseID: "FTL", SeeAlso: []string{ "http://freetype.fis.uniroma2.it/FTL.TXT", "http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT", "http://gitlab.freedesktop.org/freetype/freetype/-/raw/master/docs/FTL.TXT", }, IsOsiApproved: false, }, "snia": { Reference: "https://spdx.org/licenses/SNIA.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SNIA.json", ReferenceNumber: 585, Name: "SNIA Public License 1.1", LicenseID: "SNIA", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/SNIA_Public_License", }, IsOsiApproved: false, }, "hippocratic-2.1": { Reference: "https://spdx.org/licenses/Hippocratic-2.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Hippocratic-2.1.json", ReferenceNumber: 586, Name: "Hippocratic License 2.1", LicenseID: "Hippocratic-2.1", SeeAlso: []string{ "https://firstdonoharm.dev/version/2/1/license.html", "https://github.com/EthicalSource/hippocratic-license/blob/58c0e646d64ff6fbee275bfe2b9492f914e3ab2a/LICENSE.txt", }, IsOsiApproved: false, }, "simpl-2.0": { Reference: "https://spdx.org/licenses/SimPL-2.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/SimPL-2.0.json", ReferenceNumber: 587, Name: "Simple Public License 2.0", LicenseID: "SimPL-2.0", SeeAlso: []string{ "https://opensource.org/licenses/SimPL-2.0", }, IsOsiApproved: true, }, "bsd-3-clause-clear": { Reference: "https://spdx.org/licenses/BSD-3-Clause-Clear.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BSD-3-Clause-Clear.json", ReferenceNumber: 588, Name: "BSD 3-Clause Clear License", LicenseID: "BSD-3-Clause-Clear", SeeAlso: []string{ "http://labs.metacarta.com/license-explanation.html#license", }, IsOsiApproved: false, }, "spencer-86": { Reference: "https://spdx.org/licenses/Spencer-86.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Spencer-86.json", ReferenceNumber: 589, Name: "Spencer License 86", LicenseID: "Spencer-86", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License", }, IsOsiApproved: false, }, "busl-1.1": { Reference: "https://spdx.org/licenses/BUSL-1.1.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/BUSL-1.1.json", ReferenceNumber: 590, Name: "Business Source License 1.1", LicenseID: "BUSL-1.1", SeeAlso: []string{ "https://mariadb.com/bsl11/", }, IsOsiApproved: false, }, "adsl": { Reference: "https://spdx.org/licenses/ADSL.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/ADSL.json", ReferenceNumber: 591, Name: "Amazon Digital Services License", LicenseID: "ADSL", SeeAlso: []string{ "https://fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense", }, IsOsiApproved: false, }, "oldap-2.3": { Reference: "https://spdx.org/licenses/OLDAP-2.3.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OLDAP-2.3.json", ReferenceNumber: 592, Name: "Open LDAP Public License v2.3", LicenseID: "OLDAP-2.3", SeeAlso: []string{ "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=d32cf54a32d581ab475d23c810b0a7fbaf8d63c3", }, IsOsiApproved: false, }, "interbase-1.0": { Reference: "https://spdx.org/licenses/Interbase-1.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Interbase-1.0.json", ReferenceNumber: 593, Name: "Interbase Public License v1.0", LicenseID: "Interbase-1.0", SeeAlso: []string{ "https://web.archive.org/web/20060319014854/http://info.borland.com/devsupport/interbase/opensource/IPL.html", }, IsOsiApproved: false, }, "oldap-2.5": { Reference: "https://spdx.org/licenses/OLDAP-2.5.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/OLDAP-2.5.json", ReferenceNumber: 594, Name: "Open LDAP Public License v2.5", LicenseID: "OLDAP-2.5", SeeAlso: []string{ "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=6852b9d90022e8593c98205413380536b1b5a7cf", }, IsOsiApproved: false, }, "artistic-1.0-perl": { Reference: "https://spdx.org/licenses/Artistic-1.0-Perl.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/Artistic-1.0-Perl.json", ReferenceNumber: 595, Name: "Artistic License 1.0 (Perl)", LicenseID: "Artistic-1.0-Perl", SeeAlso: []string{ "http://dev.perl.org/licenses/artistic.html", }, IsOsiApproved: true, }, "gsoap-1.3b": { Reference: "https://spdx.org/licenses/gSOAP-1.3b.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/gSOAP-1.3b.json", ReferenceNumber: 596, Name: "gSOAP Public License v1.3b", LicenseID: "gSOAP-1.3b", SeeAlso: []string{ "http://www.cs.fsu.edu/~engelen/license.html", }, IsOsiApproved: false, }, "nposl-3.0": { Reference: "https://spdx.org/licenses/NPOSL-3.0.html", IsDeprecatedLicenseID: false, DetailsURL: "https://spdx.org/licenses/NPOSL-3.0.json", ReferenceNumber: 597, Name: "Non-Profit Open Software License 3.0", LicenseID: "NPOSL-3.0", SeeAlso: []string{ "https://opensource.org/licenses/NOSL3.0", }, IsOsiApproved: true, }, } 0707010000007B000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001100000000grant-0.2.1/test0707010000007C000041ED000000000000000000000002668D56C300000000000000000000000000000000000000000000001500000000grant-0.2.1/test/cli0707010000007D000081A4000000000000000000000001668D56C3000003F4000000000000000000000000000000000000002300000000grant-0.2.1/test/cli/check_test.gopackage cli import ( "os/exec" "strings" "testing" ) func Test_CheckCmd(t *testing.T) { tests := []struct { name string args []string expectedInOutput []string }{ { name: "check command will deny all on empty config", args: []string{"-c", emptyConfigPath, "check", "dir:../../."}, expectedInOutput: []string{ "check failed", "license matches for rule: default-deny-all; matched with pattern *", "Apache-2.0", }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { cmd := exec.Command(grantTmpPath, tt.args...) output, err := cmd.CombinedOutput() if err != nil && !strings.Contains(err.Error(), "exit status 1") { t.Fatalf("cmd.CombinedOutput() failed with %s\n %s", err, string(output)) } for _, expected := range tt.expectedInOutput { if !strings.Contains(string(output), expected) { t.Errorf("expected %s to be in output, but it wasn't; output: %s", expected, string(output)) } } }) } } 0707010000007E000081A4000000000000000000000001668D56C3000004D9000000000000000000000000000000000000002200000000grant-0.2.1/test/cli/main_test.gopackage cli import ( "log" "os" "os/exec" "testing" ) const ( grantTmpPath = "../../.tmp/grant" emptyConfigPath = "../../.tmp/grant_empty.yaml" ) func buildBinary() (string, error) { buildCmd := exec.Command("go", "build", "-o", grantTmpPath, "../../cmd/grant/main.go") // Adjust the last argument to your package path if necessary err := buildCmd.Run() return grantTmpPath, err } func generateEmptyConfig() (string, error) { emptyConfigCmd := exec.Command("touch", emptyConfigPath) err := emptyConfigCmd.Run() return emptyConfigPath, err } // setup function that you want to run before any tests func setup(m *testing.M) { _, err := buildBinary() if err != nil { log.Fatalf("Failed to build binary: %v", err) } _, err = generateEmptyConfig() if err != nil { log.Fatalf("Failed to generate empty config: %v", err) } } // teardown function to clean up after the tests func teardown() { // Your cleanup code here println("Running teardown after all tests.") } // TestMain is the entry point for testing func TestMain(m *testing.M) { setup(m) // Call setup code := m.Run() // Run the tests and store the result teardown() // Call teardown os.Exit(code) // Exit with the result of the tests } 0707010000007F000081A4000000000000000000000001668D56C3000000E2000000000000000000000000000000000000002300000000grant-0.2.1/test/cli/utils_test.gopackage cli import "os" func fileExists(filename string) bool { info, err := os.Stat(filename) if os.IsNotExist(err) { return false } // We also check if the file might actually be a directory. return !info.IsDir() } 07070100000080000081A4000000000000000000000001668D56C3000004FB000000000000000000000000000000000000002500000000grant-0.2.1/test/cli/version_test.gopackage cli import ( "os/exec" "testing" "github.com/stretchr/testify/assert" ) // Note main_test.go is used to set up and teardown the tests. This is the entry point for testing and // responsible for building the most recent version of the grant binary. func Test_VersionCommand(t *testing.T) { tests := []struct { name string command string expectedInOutput []string }{ { name: "text output", command: "--version", expectedInOutput: []string{"[not provided]"}, }, { name: "long form", command: "version", expectedInOutput: []string{ "Application:", "Version:", "BuildDate:", "GitCommit:", "GitDescription:", "Platform:", "GoVersion:", "Compiler:", }, }, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { // check if the command is available cmd := exec.Command(grantTmpPath, test.command) output, err := cmd.CombinedOutput() if err != nil { t.Fatalf("command failed: %v: cmd output: %s", err, string(output)) } for _, expected := range test.expectedInOutput { assert.Contains(t, string(output), expected, "expected output: %s not found in command output: %s", expected, string(output)) } }) } } 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000B00000000TRAILER!!!1374 blocks
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor