{
  "@context": "https://spdx.org/rdf/3.0.1/spdx-context.jsonld",
  "@graph": [
    {
      "@id": "_:creationInfo_0",
      "type": "CreationInfo",
      "specVersion": "3.0.1",
      "createdBy": [
        "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/EPOL/main/aarch64-84cbbba3-c3eb-4e9c-9830-26cc65999dea-specv3/SPDXRef-gnrtd0"
      ],
      "createdUsing": [
        "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/EPOL/main/aarch64-84cbbba3-c3eb-4e9c-9830-26cc65999dea-specv3/additionalToolSPDXRef-gnrtd1"
      ],
      "created": "2026-10-02T06:10:53Z"
    },
    {
      "@id": "_:creationInfo_1",
      "type": "CreationInfo",
      "specVersion": "3.0.1",
      "createdBy": [
        "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/EPOL/main/aarch64-84cbbba3-c3eb-4e9c-9830-26cc65999dea-specv3/SPDXRef-gnrtd2"
      ],
      "createdUsing": [
        "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/EPOL/main/aarch64-84cbbba3-c3eb-4e9c-9830-26cc65999dea-specv3/additionalToolSPDXRef-gnrtd3"
      ],
      "created": "2026-10-02T06:10:53Z"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/EPOL/main/aarch64-84cbbba3-c3eb-4e9c-9830-26cc65999dea-specv3/SPDXRef-gnrtd42192",
      "type": "Relationship",
      "relationshipType": "hasConcludedLicense",
      "to": [
        "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/EPOL/main/aarch64-84cbbba3-c3eb-4e9c-9830-26cc65999dea-specv3/SPDXRef-gnrtd42193"
      ],
      "from": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/EPOL/main/aarch64-84cbbba3-c3eb-4e9c-9830-26cc65999dea-specv3/SPDXRef-gnrtd42191",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/EPOL/main/aarch64-84cbbba3-c3eb-4e9c-9830-26cc65999dea-specv3/SPDXRef-gnrtd42195",
      "type": "Relationship",
      "relationshipType": "hasDeclaredLicense",
      "to": [
        "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/EPOL/main/aarch64-84cbbba3-c3eb-4e9c-9830-26cc65999dea-specv3/SPDXRef-gnrtd42196"
      ],
      "from": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/EPOL/main/aarch64-84cbbba3-c3eb-4e9c-9830-26cc65999dea-specv3/SPDXRef-gnrtd42191",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/EPOL/main/aarch64-84cbbba3-c3eb-4e9c-9830-26cc65999dea-specv3/SPDXRef-gnrtd42196",
      "type": "simplelicensing_LicenseExpression",
      "simplelicensing_licenseExpression": "(MIT OR Unlicense)",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/EPOL/main/aarch64-84cbbba3-c3eb-4e9c-9830-26cc65999dea-specv3/SPDXRef-gnrtd42193",
      "type": "simplelicensing_LicenseExpression",
      "simplelicensing_licenseExpression": "(MIT OR Unlicense)",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/EPOL/main/aarch64-84cbbba3-c3eb-4e9c-9830-26cc65999dea-specv3/SPDXRef-gnrtd42194",
      "type": "Organization",
      "name": "http://openeuler.org",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/EPOL/main/aarch64-84cbbba3-c3eb-4e9c-9830-26cc65999dea-specv3/SPDXRef-gnrtd42191",
      "type": "software_Package",
      "software_copyrightText": "",
      "suppliedBy": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/EPOL/main/aarch64-84cbbba3-c3eb-4e9c-9830-26cc65999dea-specv3/SPDXRef-gnrtd42194",
      "software_downloadLocation": "NOASSERTION",
      "summary": "More useful 32-bit modulus e.g. “Euclidean divide”",
      "software_packageVersion": "0:0.94.20220908git8b5f1f3-0.18.oe2609",
      "software_homePage": "https://github.com/nothings/stb",
      "description": "This file provides three different consistent divide/mod pairs\nimplemented on top of arbitrary C/C++ division, including correct\nhandling of overflow of intermediate calculations:\n\n    trunc:   a/b truncates to 0,           a%b has same sign as a\n    floor:   a/b truncates to -inf,        a%b has same sign as b\n    eucl:    a/b truncates to sign(b)*inf, a%b is non-negative",
      "name": "stb_divide-devel",
      "software_sourceInfo": "acquired package info from repodata DB: repodata/0fcb923e8b0ce983cca762c2475c2677e850abc500e11ded759f15f9e00dabcc-primary.sqlite.bz2",
      "software_packageUrl": "pkg:rpm/stb_divide-devel@0.94.20220908git8b5f1f3-0.18.oe2609?arch=aarch64&epoch=0&upstream=stb-0.20220908git8b5f1f3-0.18.oe2609.src.rpm",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/EPOL/main/aarch64-84cbbba3-c3eb-4e9c-9830-26cc65999dea-specv3/additionalToolSPDXRef-gnrtd3",
      "type": "Tool",
      "name": "syft-[not provided]",
      "creationInfo": "_:creationInfo_1"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/EPOL/main/aarch64-84cbbba3-c3eb-4e9c-9830-26cc65999dea-specv3/additionalToolSPDXRef-gnrtd1",
      "type": "Tool",
      "name": "syft-[not provided]",
      "creationInfo": "_:creationInfo_0"
    }
  ]
}