From eda4d7660d8908705bc08a6edc55d8144d02806a Mon Sep 17 00:00:00 2001 From: Ben Foster Date: Wed, 6 Nov 2024 01:31:23 -0500 Subject: [PATCH 01/50] fix: Improve version comparisons when build identifiers are present (#7873) --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index c7bb5f608c47..93acd5cf9334 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/aquasecurity/go-gem-version v0.0.0-20201115065557-8eed6fe000ce github.com/aquasecurity/go-npm-version v0.0.0-20201110091526-0b796d180798 github.com/aquasecurity/go-pep440-version v0.0.0-20210121094942-22b2f8951d46 - github.com/aquasecurity/go-version v0.0.0-20240603093900-cf8a8d29271d + github.com/aquasecurity/go-version v0.0.0-20241105054539-1951e80d786f github.com/aquasecurity/table v1.8.0 github.com/aquasecurity/testdocker v0.0.0-20240730042311-4642e94c7fc8 github.com/aquasecurity/tml v0.6.1 diff --git a/go.sum b/go.sum index 991cad7e2929..f2112b2721ef 100644 --- a/go.sum +++ b/go.sum @@ -341,8 +341,8 @@ github.com/aquasecurity/go-pep440-version v0.0.0-20210121094942-22b2f8951d46 h1: 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-20201107203531-5e48ac5d022a/go.mod h1:9Beu8XsUNNfzml7WBf3QmyPToP1wm1Gj/Vc5UJKqTzU= github.com/aquasecurity/go-version v0.0.0-20210121072130-637058cfe492/go.mod h1:9Beu8XsUNNfzml7WBf3QmyPToP1wm1Gj/Vc5UJKqTzU= -github.com/aquasecurity/go-version v0.0.0-20240603093900-cf8a8d29271d h1:4zour5Sh9chOg+IqIinIcJ3qtr3cIf8FdFY6aArlXBw= -github.com/aquasecurity/go-version v0.0.0-20240603093900-cf8a8d29271d/go.mod h1:1cPOp4BaQZ1G2F5fnw4dFz6pkOyXJI9KTuak8ghIl3U= +github.com/aquasecurity/go-version v0.0.0-20241105054539-1951e80d786f h1:6mwfszC0VohA3NF75EX8pPStmmL0spZnTlkLp83M69c= +github.com/aquasecurity/go-version v0.0.0-20241105054539-1951e80d786f/go.mod h1:1cPOp4BaQZ1G2F5fnw4dFz6pkOyXJI9KTuak8ghIl3U= github.com/aquasecurity/table v1.8.0 h1:9ntpSwrUfjrM6/YviArlx/ZBGd6ix8W+MtojQcM7tv0= github.com/aquasecurity/table v1.8.0/go.mod h1:eqOmvjjB7AhXFgFqpJUEE/ietg7RrMSJZXyTN8E/wZw= github.com/aquasecurity/testdocker v0.0.0-20240730042311-4642e94c7fc8 h1:b43UVqYjz7qDqK+cVOtF2Lk6CxjytYItP6Pgf3wGsNE= From 6e3252b1d314ddcb4904e6f98abb8ac1e3d3cc94 Mon Sep 17 00:00:00 2001 From: Teppei Fukuda Date: Wed, 6 Nov 2024 11:32:43 +0400 Subject: [PATCH 02/50] chore: bump containerd to v2.0.0 (#7875) Signed-off-by: knqyf263 --- go.mod | 78 ++++---- go.sum | 180 ++++++++++-------- pkg/fanal/image/daemon/containerd.go | 56 +++--- pkg/fanal/test/integration/containerd_test.go | 19 +- 4 files changed, 180 insertions(+), 153 deletions(-) diff --git a/go.mod b/go.mod index 93acd5cf9334..566d5069c0b9 100644 --- a/go.mod +++ b/go.mod @@ -41,8 +41,10 @@ require ( github.com/bmatcuk/doublestar/v4 v4.6.1 github.com/cenkalti/backoff/v4 v4.3.0 github.com/cheggaaa/pb/v3 v3.1.5 - github.com/containerd/containerd v1.7.22 + github.com/containerd/containerd/v2 v2.0.0 + github.com/containerd/platforms v1.0.0-rc.0 github.com/csaf-poc/csaf_distribution/v3 v3.0.0 + github.com/distribution/reference v0.6.0 github.com/docker/cli v27.2.1+incompatible github.com/docker/docker v27.3.1+incompatible github.com/docker/go-connections v0.5.0 @@ -119,16 +121,16 @@ require ( github.com/zclconf/go-cty v1.15.0 github.com/zclconf/go-cty-yaml v1.0.3 go.etcd.io/bbolt v1.3.11 - golang.org/x/crypto v0.27.0 - golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect + golang.org/x/crypto v0.28.0 + golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611 // indirect golang.org/x/mod v0.21.0 - golang.org/x/net v0.29.0 + golang.org/x/net v0.30.0 golang.org/x/sync v0.8.0 golang.org/x/term v0.25.0 - golang.org/x/text v0.18.0 + golang.org/x/text v0.19.0 golang.org/x/vuln v1.1.3 golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 - google.golang.org/protobuf v1.34.2 + google.golang.org/protobuf v1.35.1 gopkg.in/yaml.v3 v3.0.1 helm.sh/helm/v3 v3.16.1 k8s.io/api v0.31.2 @@ -139,12 +141,12 @@ require ( require ( cloud.google.com/go v0.112.1 // indirect - cloud.google.com/go/compute/metadata v0.3.0 // indirect + cloud.google.com/go/compute/metadata v0.5.0 // indirect cloud.google.com/go/iam v1.1.6 // indirect cloud.google.com/go/storage v1.39.1 // indirect dario.cat/mergo v1.0.1 // 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/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 // indirect + github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20231105174938-2b5cbb29f3e2 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect @@ -162,7 +164,7 @@ require ( github.com/Masterminds/semver/v3 v3.3.0 // indirect github.com/Masterminds/squirrel v1.5.4 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/Microsoft/hcsshim v0.12.0 // indirect + github.com/Microsoft/hcsshim v0.12.9 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect github.com/ProtonMail/go-crypto v1.1.0-alpha.2 // indirect github.com/VividCortex/ewma v1.2.0 // indirect @@ -191,29 +193,29 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chai2010/gettext-go v1.0.2 // indirect github.com/cloudflare/circl v1.3.8 // indirect - github.com/containerd/cgroups/v3 v3.0.2 // indirect - github.com/containerd/containerd/api v1.7.19 // indirect - github.com/containerd/continuity v0.4.3 // indirect - github.com/containerd/errdefs v0.1.0 // indirect + github.com/containerd/cgroups/v3 v3.0.3 // indirect + github.com/containerd/containerd v1.7.23 // indirect + github.com/containerd/containerd/api v1.8.0 // indirect + github.com/containerd/continuity v0.4.4 // indirect + github.com/containerd/errdefs v1.0.0 // indirect + github.com/containerd/errdefs/pkg v0.3.0 // indirect github.com/containerd/fifo v1.1.0 // indirect github.com/containerd/log v0.1.0 // indirect - github.com/containerd/platforms v0.2.1 // indirect + github.com/containerd/plugin v1.0.0 // indirect github.com/containerd/stargz-snapshotter/estargz v0.15.1 // indirect - github.com/containerd/ttrpc v1.2.5 // indirect - github.com/containerd/typeurl/v2 v2.2.0 // indirect + github.com/containerd/ttrpc v1.2.6 // indirect + github.com/containerd/typeurl/v2 v2.2.2 // indirect github.com/cpuguy83/dockercfg v0.3.1 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect github.com/cyberphone/json-canonicalization v0.0.0-20231011164504-785e29786b46 // indirect github.com/cyphar/filepath-securejoin v0.3.1 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352 // indirect github.com/digitorus/timestamp v0.0.0-20231217203849-220c5c2851b7 // indirect - github.com/distribution/reference v0.6.0 // indirect github.com/dlclark/regexp2 v1.4.0 // indirect github.com/docker/distribution v2.8.3+incompatible // indirect github.com/docker/docker-credential-helpers v0.8.2 // indirect - github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // indirect github.com/docker/go-metrics v0.0.1 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 // indirect @@ -281,7 +283,7 @@ require ( github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect - github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/compress v1.17.11 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect github.com/letsencrypt/boulder v0.0.0-20231026200631-000cd05d5491 // indirect @@ -303,7 +305,7 @@ require ( github.com/moby/patternmatcher v0.6.0 // indirect github.com/moby/spdystream v0.4.0 // indirect github.com/moby/sys/mountinfo v0.7.2 // indirect - github.com/moby/sys/sequential v0.5.0 // indirect + github.com/moby/sys/sequential v0.6.0 // indirect github.com/moby/sys/signal v0.7.1 // indirect github.com/moby/sys/user v0.3.0 // indirect github.com/moby/sys/userns v0.1.0 // indirect @@ -318,16 +320,17 @@ require ( github.com/nozzle/throttler v0.0.0-20180817012639-2ea982251481 // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/opencontainers/runtime-spec v1.2.0 // indirect - github.com/opencontainers/selinux v1.11.0 // indirect + github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626 // indirect + github.com/opencontainers/selinux v1.11.1 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect - github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect - github.com/prometheus/client_golang v1.20.2 // indirect + github.com/prometheus/client_golang v1.20.5 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.55.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect @@ -353,6 +356,7 @@ require ( github.com/spf13/afero v1.11.0 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect + github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/tchap/go-patricia/v2 v2.3.1 // indirect github.com/theupdateframework/go-tuf v0.7.0 // indirect @@ -375,25 +379,25 @@ require ( github.com/yusufpapurcu/wmi v1.2.4 // indirect go.mongodb.org/mongo-driver v1.14.0 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect - go.opentelemetry.io/otel v1.28.0 // indirect - go.opentelemetry.io/otel/metric v1.28.0 // indirect - go.opentelemetry.io/otel/sdk v1.28.0 // indirect - go.opentelemetry.io/otel/trace v1.28.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 // indirect + go.opentelemetry.io/otel v1.31.0 // indirect + go.opentelemetry.io/otel/metric v1.31.0 // indirect + go.opentelemetry.io/otel/sdk v1.31.0 // indirect + go.opentelemetry.io/otel/trace v1.31.0 // indirect go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/oauth2 v0.21.0 // indirect + golang.org/x/oauth2 v0.22.0 // indirect golang.org/x/sys v0.26.0 // indirect golang.org/x/telemetry v0.0.0-20240522233618-39ace7a40ae7 // indirect golang.org/x/time v0.6.0 // indirect golang.org/x/tools v0.24.0 // indirect google.golang.org/api v0.172.0 // indirect google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 // indirect - google.golang.org/grpc v1.66.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 // indirect + google.golang.org/grpc v1.67.1 // indirect gopkg.in/cheggaaa/pb.v1 v1.0.28 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/go-jose/go-jose.v2 v2.6.3 // indirect @@ -403,7 +407,7 @@ require ( gopkg.in/yaml.v2 v2.4.0 // indirect k8s.io/apiextensions-apiserver v0.31.0 // indirect k8s.io/apimachinery v0.31.2 // indirect - k8s.io/apiserver v0.31.0 // indirect + k8s.io/apiserver v0.31.2 // indirect k8s.io/cli-runtime v0.31.2 // indirect k8s.io/client-go v0.31.2 // indirect k8s.io/component-base v0.31.2 // indirect @@ -422,4 +426,6 @@ require ( sigs.k8s.io/kustomize/api v0.17.2 // indirect sigs.k8s.io/kustomize/kyaml v0.17.1 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect + tags.cncf.io/container-device-interface v0.8.0 // indirect + tags.cncf.io/container-device-interface/specs-go v0.8.0 // indirect ) diff --git a/go.sum b/go.sum index f2112b2721ef..7618669c665c 100644 --- a/go.sum +++ b/go.sum @@ -68,8 +68,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= @@ -193,10 +193,10 @@ dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= -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/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= +github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20231105174938-2b5cbb29f3e2 h1:dIScnXFlF784X79oi7MzVT6GWqr/W1uUt0pB5CsDs9M= +github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20231105174938-2b5cbb29f3e2/go.mod h1:gCLVsLfv1egrcZu+GoJATN5ts75F2s62ih/457eWzOw= github.com/AdamKorcz/go-fuzz-headers-1 v0.0.0-20230919221257-8b5d3ce2d11d h1:zjqpY4C7H15HjRPEenkS4SAn3Jy2eRRjkjZbGR30TOg= github.com/AdamKorcz/go-fuzz-headers-1 v0.0.0-20230919221257-8b5d3ce2d11d/go.mod h1:XNqJ7hv2kY++g8XEHREpi+JqZo3+0l+CH2egBVN4yqM= github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/alibabacloudsdkgo/helper v0.2.0 h1:8+4G8JaejP8Xa6W46PzJEwisNgBXMvFcz78N6zG/ARw= @@ -266,8 +266,8 @@ github.com/Masterminds/squirrel v1.5.4/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA4 github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/Microsoft/hcsshim v0.12.0 h1:rbICA+XZFwrBef2Odk++0LjFvClNCJGRK+fsrP254Ts= -github.com/Microsoft/hcsshim v0.12.0/go.mod h1:RZV12pcHCXQ42XnlQ3pz6FZfmrC1C+R4gaOHhRNML1g= +github.com/Microsoft/hcsshim v0.12.9 h1:2zJy5KA+l0loz1HzEGqyNnjd3fyZA31ZBCGKacp6lLg= +github.com/Microsoft/hcsshim v0.12.9/go.mod h1:fJ0gkFAna6ukt0bLdKB8djt4XIJhF/vEPuoIWYVvZ8Y= github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -480,36 +480,43 @@ github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUo github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4= github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be h1:J5BL2kskAlV9ckgEsNQXscjIaLiOYiZ75d4e94E6dcQ= github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w= -github.com/containerd/cgroups/v3 v3.0.2 h1:f5WFqIVSgo5IZmtTT3qVBo6TzI1ON6sycSBKkymb9L0= -github.com/containerd/cgroups/v3 v3.0.2/go.mod h1:JUgITrzdFqp42uI2ryGA+ge0ap/nxzYgkGmIcetmErE= -github.com/containerd/containerd v1.7.22 h1:nZuNnNRA6T6jB975rx2RRNqqH2k6ELYKDZfqTHqwyy0= -github.com/containerd/containerd v1.7.22/go.mod h1:e3Jz1rYRUZ2Lt51YrH9Rz0zPyJBOlSvB3ghr2jbVD8g= -github.com/containerd/containerd/api v1.7.19 h1:VWbJL+8Ap4Ju2mx9c9qS1uFSB1OVYr5JJrW2yT5vFoA= -github.com/containerd/containerd/api v1.7.19/go.mod h1:fwGavl3LNwAV5ilJ0sbrABL44AQxmNjDRcwheXDb6Ig= -github.com/containerd/continuity v0.4.3 h1:6HVkalIp+2u1ZLH1J/pYX2oBVXlJZvh1X1A7bEZ9Su8= -github.com/containerd/continuity v0.4.3/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= -github.com/containerd/errdefs v0.1.0 h1:m0wCRBiu1WJT/Fr+iOoQHMQS/eP5myQ8lCv4Dz5ZURM= -github.com/containerd/errdefs v0.1.0/go.mod h1:YgWiiHtLmSeBrvpw+UfPijzbLaB77mEG1WwJTDETIV0= +github.com/containerd/cgroups/v3 v3.0.3 h1:S5ByHZ/h9PMe5IOQoN7E+nMc2UcLEM/V48DGDJ9kip0= +github.com/containerd/cgroups/v3 v3.0.3/go.mod h1:8HBe7V3aWGLFPd/k03swSIsGjZhHI2WzJmticMgVuz0= +github.com/containerd/containerd v1.7.23 h1:H2CClyUkmpKAGlhQp95g2WXHfLYc7whAuvZGBNYOOwQ= +github.com/containerd/containerd v1.7.23/go.mod h1:7QUzfURqZWCZV7RLNEn1XjUCQLEf0bkaK4GjUaZehxw= +github.com/containerd/containerd/api v1.8.0 h1:hVTNJKR8fMc/2Tiw60ZRijntNMd1U+JVMyTRdsD2bS0= +github.com/containerd/containerd/api v1.8.0/go.mod h1:dFv4lt6S20wTu/hMcP4350RL87qPWLVa/OHOwmmdnYc= +github.com/containerd/containerd/v2 v2.0.0 h1:qLDdFaAykQrIyLiqwQrNLLz95wiC36bAZVwioUwqShM= +github.com/containerd/containerd/v2 v2.0.0/go.mod h1:j25kDy9P48/ngb1sxWIFfK6GsnqOHoSqo1EpAod20VQ= +github.com/containerd/continuity v0.4.4 h1:/fNVfTJ7wIl/YPMHjf+5H32uFhl63JucB34PlCpMKII= +github.com/containerd/continuity v0.4.4/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE= +github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= +github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= +github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= +github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= 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/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= -github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= +github.com/containerd/platforms v1.0.0-rc.0 h1:GuHWSKgVVO3POn6nRBB4sH63uPOLa87yuuhsGLWaXAA= +github.com/containerd/platforms v1.0.0-rc.0/go.mod h1:T1XAzzOdYs3it7l073MNXyxRwQofJfqwi/8cRjufIk4= +github.com/containerd/plugin v1.0.0 h1:c8Kf1TNl6+e2TtMHZt+39yAPDbouRH9WAToRjex483Y= +github.com/containerd/plugin v1.0.0/go.mod h1:hQfJe5nmWfImiqT1q8Si3jLv3ynMUIBB47bQ+KexvO8= github.com/containerd/stargz-snapshotter/estargz v0.15.1 h1:eXJjw9RbkLFgioVaTG+G/ZW/0kEe2oEKCdS/ZxIyoCU= github.com/containerd/stargz-snapshotter/estargz v0.15.1/go.mod h1:gr2RNwukQ/S9Nv33Lt6UC7xEx58C+LHRdoqbEKjz1Kk= -github.com/containerd/ttrpc v1.2.5 h1:IFckT1EFQoFBMG4c3sMdT8EP3/aKfumK1msY+Ze4oLU= -github.com/containerd/ttrpc v1.2.5/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQrAbN1q9o= -github.com/containerd/typeurl/v2 v2.2.0 h1:6NBDbQzr7I5LHgp34xAXYF5DOTQDn05X58lsPEmzLso= -github.com/containerd/typeurl/v2 v2.2.0/go.mod h1:8XOOxnyatxSWuG8OfsZXVnAF4iZfedjS/8UHSPJnX4g= +github.com/containerd/ttrpc v1.2.6 h1:zG+Kn5EZ6MUYCS1t2Hmt2J4tMVaLSFEJVOraDQwNPC4= +github.com/containerd/ttrpc v1.2.6/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQrAbN1q9o= +github.com/containerd/typeurl/v2 v2.2.2 h1:3jN/k2ysKuPCsln5Qv8bzR9cxal8XjkxPogJfSNO31k= +github.com/containerd/typeurl/v2 v2.2.2/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk= github.com/coreos/go-oidc v2.2.1+incompatible h1:mh48q/BqXqgjVHpy2ZY7WnWAbenxRjsz9N1i1YxjHAk= github.com/coreos/go-oidc/v3 v3.10.0 h1:tDnXHnLyiTVyT/2zLDGj09pFPkhND8Gl8lnTRhoEaJU= github.com/coreos/go-oidc/v3 v3.10.0/go.mod h1:5j11xcw0D3+SGxn6Z/WFADsgcWVMyNAlSQupk0KK3ac= github.com/cpuguy83/dockercfg v0.3.1 h1:/FpZ+JaygUR/lZP2NlFI2DVfrOEMAIKP5wWEJdoYe9E= github.com/cpuguy83/dockercfg v0.3.1/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= 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.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= +github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.23 h1:4M6+isWdcStXEf15G/RbrMPOQj1dZ7HPZCGwE4kOeP0= github.com/creack/pty v1.1.23/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE= github.com/csaf-poc/csaf_distribution/v3 v3.0.0 h1:ob9+Fmpff0YWgTP3dYaw7G2hKQ9cegh9l3zksc+q3sM= @@ -638,8 +645,8 @@ github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-jose/go-jose/v3 v3.0.3 h1:fFKWeig/irsp7XD2zBxvnmA/XaRWp5V3CBsZXJF7G7k= github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ= -github.com/go-jose/go-jose/v4 v4.0.1 h1:QVEPDE3OluqXBQZDcnNvQrInro2h0e4eqNbnZSWqS6U= -github.com/go-jose/go-jose/v4 v4.0.1/go.mod h1:WVf9LFMHh/QVrmqrOfqun0C45tMe3RoiKJMPvgWwLfY= +github.com/go-jose/go-jose/v4 v4.0.4 h1:VsjPI33J0SB9vQM6PLmNjoHqMQNGPiZ0rHL7Ni7Q6/E= +github.com/go-jose/go-jose/v4 v4.0.4/go.mod h1:NKb5HO1EZccyMpiZNbdUw/14tiXNyUJh188dfnMCAfc= github.com/go-kit/kit v0.8.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= @@ -716,8 +723,8 @@ github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= -github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= +github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= 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= @@ -866,8 +873,8 @@ github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJr github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= 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.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I= 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= @@ -956,8 +963,8 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI 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.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/knqyf263/go-apk-version v0.0.0-20200609155635-041fdbb8563f h1:GvCU5GXhHq+7LeOzx/haG7HSIZokl3/0GkoUFzsRJjg= github.com/knqyf263/go-apk-version v0.0.0-20200609155635-041fdbb8563f/go.mod h1:q59u9px8b7UTj0nIjEjvmTWekazka6xIt6Uogz5Dm+8= @@ -1064,6 +1071,7 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mndrix/tap-go v0.0.0-20171203230836-629fa407e90b/go.mod h1:pzzDgJWZ34fGzaAZGFW22KVZDfyrYW+QABMrWnJBnSs= github.com/moby/buildkit v0.16.0 h1:wOVBj1o5YNVad/txPQNXUXdelm7Hs/i0PUFjzbK0VKE= github.com/moby/buildkit v0.16.0/go.mod h1:Xqx/5GlrqE1yIRORk0NSCVDFpQAU1WjlT6KHYZdisIQ= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= @@ -1076,8 +1084,8 @@ github.com/moby/spdystream v0.4.0 h1:Vy79D6mHeJJjiPdFEL2yku1kl0chZpJfZcPpb16BRl8 github.com/moby/spdystream v0.4.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/moby/sys/mountinfo v0.7.2 h1:1shs6aH5s4o5H2zQLn796ADW1wMrIwHsyJ2v9KouLrg= github.com/moby/sys/mountinfo v0.7.2/go.mod h1:1YOa8w8Ih7uW0wALDUgT1dTTSBrZ+HiBLGws92L2RU4= -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/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= +github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= github.com/moby/sys/signal v0.7.1 h1:PrQxdvxcGijdo6UXXo/lU/TvHUWyPhj7UOpSo8tuvk0= github.com/moby/sys/signal v0.7.1/go.mod h1:Se1VGehYokAkrSQwL4tDzHvETwUZlnY7S5XtQ50mQp8= github.com/moby/sys/user v0.3.0 h1:9ni5DlcW5an3SvRSx4MouotOygvzaXbaSrc/wGDFWPo= @@ -1099,6 +1107,7 @@ github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mozillazg/docker-credential-acr-helper v0.3.0 h1:DVWFZ3/O8BP6Ue3iS/Olw+G07u1hCq1EOVCDZZjCIBI= github.com/mozillazg/docker-credential-acr-helper v0.3.0/go.mod h1:cZlu3tof523ujmLuiNUb6JsjtHcNA70u1jitrrdnuyA= +github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -1135,10 +1144,14 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= +github.com/opencontainers/runtime-spec v1.0.3-0.20220825212826-86290f6a00fb/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= github.com/opencontainers/runtime-spec v1.2.0/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/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626 h1:DmNGcqH3WDbV5k8OJ+esPWbqUOX5rMLR2PMvziDMJi0= +github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626/go.mod h1:BRHJJd0E+cx42OybVYSgUvZmU0B8P9gZuRXlZUP7TKI= +github.com/opencontainers/selinux v1.9.1/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= +github.com/opencontainers/selinux v1.11.1 h1:nHFvthhM0qY8/m+vfhJylliSshm8G1jJ2jDMcgULaH8= +github.com/opencontainers/selinux v1.11.1/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/openvex/discovery v0.1.1-0.20240802171711-7c54efc57553 h1:c4u0GIH0w2Q57Pm2Oldrq6EiHFnLCCnRs98A+ggj/YQ= @@ -1154,8 +1167,8 @@ github.com/package-url/packageurl-go v0.1.3 h1:4juMED3hHiz0set3Vq3KeQ75KD1avthoX github.com/package-url/packageurl-go v0.1.3/go.mod h1:nKAWB8E6uk1MHqiS/lQb9pYBGH2+mdJ2PJc2s50dQY0= github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw= github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= -github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI= @@ -1178,8 +1191,8 @@ github.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjz 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.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.20.2 h1:5ctymQzZlyOON1666svgwn3s6IKWgfbjsejTMiXIyjg= -github.com/prometheus/client_golang v1.20.2/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= 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= @@ -1269,6 +1282,7 @@ github.com/sigstore/timestamp-authority v1.2.2 h1:X4qyutnCQqJ0apMewFyx+3t7Tws00J github.com/sigstore/timestamp-authority v1.2.2/go.mod h1:nEah4Eq4wpliDjlY342rXclGSO7Kb9hoRrl9tqLW13A= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= 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.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= @@ -1317,6 +1331,8 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes= @@ -1353,6 +1369,7 @@ github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4A github.com/ulikunitz/xz v0.5.10/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.19.1/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinCts= github.com/vbatts/tar-split v0.11.5/go.mod h1:yZbwRsSeGjusneWgA781EKej9HF8vme8okylkAeNKLk= @@ -1422,24 +1439,24 @@ 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/google.golang.org/grpc/otelgrpc v0.53.0 h1:9G6E0TXzGFVfTnawRzrPl83iHOAV7L8NJiR8RSGYV1g= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0/go.mod h1:azvtTADFQJA8mX80jIH/akaE7h+dbm/sVuaHqN13w74= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= -go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= -go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 h1:R3X6ZXmNPRR8ul6i3WgFURCHzaXjHdm0karRG/+dj3s= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0/go.mod h1:QWFXnDavXWwMx2EEcZsf3yxgEKAqsxQ+Syjp+seyInw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0 h1:digkEZCJWobwBqMwC0cwCq8/wkkRy/OowZg5OArWZrM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0/go.mod h1:/OpE/y70qVkndM0TrxT4KBoN3RsFZP0QaofcfYrj76I= -go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= -go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= -go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= -go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= -go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= -go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 h1:yMkBS9yViCc7U7yeLzJPM2XizlfdVvBRSmsQDWu6qc0= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0/go.mod h1:n8MR6/liuGB5EmTETUBeU5ZgqMOlqKRxUaqPQBOANZ8= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 h1:UP6IpuHFkUgOQL9FFQFrZ+5LiwhhYRbi7VZSIx6Nj5s= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0/go.mod h1:qxuZLtbq5QDtdeSHsS7bcf6EH6uO6jUAgk764zd3rhM= +go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY= +go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 h1:K0XaT3DwHAcV4nKLzcQvwAgSyisUghWoY20I7huthMk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0/go.mod h1:B5Ki776z/MBnVha1Nzwp5arlzBbE3+1jk+pGmaP5HME= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0 h1:FFeLy03iVTXP6ffeN2iXrxfGsZGCjVx0/4KlizjyBwU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0/go.mod h1:TMu73/k1CP8nBUpDLc71Wj/Kf7ZS9FK5b53VapRsP9o= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 h1:lUsI2TYsQw2r1IASwoROaCnjdj2cvC2+Jbxvk6nHnWU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0/go.mod h1:2HpZxxQurfGxJlJDblybejHB6RX6pmExPNe517hREw4= +go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE= +go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY= +go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk= +go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0= +go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys= +go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= @@ -1466,8 +1483,8 @@ golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= -golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= -golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= +golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= +golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= 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= @@ -1478,8 +1495,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 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-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= +golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611 h1:qCEDpW1G+vcj3Y7Fy52pEM1AWm3abj8WimGYejI3SC4= +golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= 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= @@ -1569,8 +1586,8 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= -golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= -golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= 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= @@ -1596,8 +1613,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= -golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= +golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 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= @@ -1638,6 +1655,7 @@ golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/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= @@ -1734,8 +1752,8 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= -golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= 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= @@ -1973,10 +1991,10 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 h1:ImUcDPHjTrAqNhlOkSocDLfG9rrNHH7w7uoKWPaWZ8s= google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7/go.mod h1:/3XmxOjePkvmKrHuBy4zNFw7IzxJXtAgdpXi8Ll990U= -google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 h1:0+ozOGcrp+Y8Aq8TLNN2Aliibms5LEzsq99ZZmAGYm0= -google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094/go.mod h1:fJ/e3If/Q67Mj99hin0hMhiNyCRmt6BQ2aWIJshUSJw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 h1:BwIjyKYGsK9dMCBOorzRri8MQwmi7mT9rGHsCEinZkA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 h1:T6rh4haD3GVYsgEfWExoCZA2o2FmbNyKpTuAxbEFPTg= +google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:wp2WsuBYj6j8wUdo3ToZsdxxixbvQNAHqVJrTgi5E5M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 h1:zciRKQ4kBpFgpfC5QQCVtnnNAcLIqweL7plyZRQHVpI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= 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= @@ -2012,8 +2030,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c= -google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= 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= @@ -2030,8 +2048,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= 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= @@ -2085,8 +2103,8 @@ k8s.io/apiextensions-apiserver v0.31.0 h1:fZgCVhGwsclj3qCw1buVXCV6khjRzKC5eCFt24 k8s.io/apiextensions-apiserver v0.31.0/go.mod h1:b9aMDEYaEe5sdK+1T0KU78ApR/5ZVp4i56VacZYEHxk= k8s.io/apimachinery v0.31.2 h1:i4vUt2hPK56W6mlT7Ry+AO8eEsyxMD1U44NR22CLTYw= k8s.io/apimachinery v0.31.2/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= -k8s.io/apiserver v0.31.0 h1:p+2dgJjy+bk+B1Csz+mc2wl5gHwvNkC9QJV+w55LVrY= -k8s.io/apiserver v0.31.0/go.mod h1:KI9ox5Yu902iBnnyMmy7ajonhKnkeZYJhTZ/YI+WEMk= +k8s.io/apiserver v0.31.2 h1:VUzOEUGRCDi6kX1OyQ801m4A7AUPglpsmGvdsekmcI4= +k8s.io/apiserver v0.31.2/go.mod h1:o3nKZR7lPlJqkU5I3Ove+Zx3JuoFjQobGX1Gctw6XuE= k8s.io/cli-runtime v0.31.2 h1:7FQt4C4Xnqx8V1GJqymInK0FFsoC+fAZtbLqgXYVOLQ= k8s.io/cli-runtime v0.31.2/go.mod h1:XROyicf+G7rQ6FQJMbeDV9jqxzkWXTYD6Uxd15noe0Q= k8s.io/client-go v0.31.2 h1:Y2F4dxU5d3AQj+ybwSMqQnpZH9F30//1ObxOKlTI9yc= @@ -2148,3 +2166,7 @@ sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= software.sslmate.com/src/go-pkcs12 v0.4.0 h1:H2g08FrTvSFKUj+D309j1DPfk5APnIdAQAB8aEykJ5k= software.sslmate.com/src/go-pkcs12 v0.4.0/go.mod h1:Qiz0EyvDRJjjxGyUQa2cCNZn/wMyzrRJ/qcDXOQazLI= +tags.cncf.io/container-device-interface v0.8.0 h1:8bCFo/g9WODjWx3m6EYl3GfUG31eKJbaggyBDxEldRc= +tags.cncf.io/container-device-interface v0.8.0/go.mod h1:Apb7N4VdILW0EVdEMRYXIDVRZfNJZ+kmEUss2kRRQ6Y= +tags.cncf.io/container-device-interface/specs-go v0.8.0 h1:QYGFzGxvYK/ZLMrjhvY0RjpUavIn4KcmRmVP/JjdBTA= +tags.cncf.io/container-device-interface/specs-go v0.8.0/go.mod h1:BhJIkjjPh4qpys+qm4DAYtUyryaTDg9zris+AczXyws= diff --git a/pkg/fanal/image/daemon/containerd.go b/pkg/fanal/image/daemon/containerd.go index 109081d5bae5..faa5c8d98c3f 100644 --- a/pkg/fanal/image/daemon/containerd.go +++ b/pkg/fanal/image/daemon/containerd.go @@ -10,12 +10,12 @@ import ( "strings" "time" - "github.com/containerd/containerd" - "github.com/containerd/containerd/content" - "github.com/containerd/containerd/images/archive" - "github.com/containerd/containerd/namespaces" - "github.com/containerd/containerd/platforms" - refdocker "github.com/containerd/containerd/reference/docker" + "github.com/containerd/containerd/v2/client" + "github.com/containerd/containerd/v2/core/content" + "github.com/containerd/containerd/v2/core/images/archive" + "github.com/containerd/containerd/v2/pkg/namespaces" + "github.com/containerd/platforms" + "github.com/distribution/reference" api "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/container" "github.com/docker/go-connections/nat" @@ -52,12 +52,12 @@ func (n familiarNamed) String() string { return string(n) } -func imageWriter(client *containerd.Client, img containerd.Image, platform types.Platform) imageSave { +func imageWriter(c *client.Client, img client.Image, platform types.Platform) imageSave { return func(ctx context.Context, ref []string) (io.ReadCloser, error) { if len(ref) < 1 { return nil, xerrors.New("no image reference") } - imgOpts := archive.WithImage(client.ImageService(), ref[0]) + imgOpts := archive.WithImage(c.ImageService(), ref[0]) manifestOpts := archive.WithManifest(img.Target()) var platformMatchComparer platforms.MatchComparer @@ -69,7 +69,7 @@ func imageWriter(client *containerd.Client, img containerd.Image, platform types platOpts := archive.WithPlatform(platformMatchComparer) pr, pw := io.Pipe() go func() { - pw.CloseWithError(archive.Export(ctx, client.ContentStore(), pw, imgOpts, manifestOpts, platOpts)) + pw.CloseWithError(archive.Export(ctx, c.ContentStore(), pw, imgOpts, manifestOpts, platOpts)) }() return pr, nil } @@ -94,17 +94,17 @@ func ContainerdImage(ctx context.Context, imageName string, opts types.ImageOpti return nil, cleanup, err } - var options []containerd.ClientOpt + var options []client.Opt if opts.RegistryOptions.Platform.Platform != nil { ociPlatform, err := platforms.Parse(opts.RegistryOptions.Platform.String()) if err != nil { return nil, cleanup, err } - options = append(options, containerd.WithDefaultPlatform(platforms.OnlyStrict(ociPlatform))) + options = append(options, client.WithDefaultPlatform(platforms.OnlyStrict(ociPlatform))) } - client, err := containerd.New(addr, options...) + c, err := client.New(addr, options...) if err != nil { return nil, cleanup, xerrors.Errorf("failed to initialize a containerd client: %w", err) } @@ -116,7 +116,7 @@ func ContainerdImage(ctx context.Context, imageName string, opts types.ImageOpti ctx = namespaces.WithNamespace(ctx, namespace) - imgs, err := client.ListImages(ctx, searchFilters...) + imgs, err := c.ListImages(ctx, searchFilters...) if err != nil { return nil, cleanup, xerrors.Errorf("failed to list images from containerd client: %w", err) } @@ -133,7 +133,7 @@ func ContainerdImage(ctx context.Context, imageName string, opts types.ImageOpti } cleanup = func() { - _ = client.Close() + _ = c.Close() _ = f.Close() _ = os.Remove(f.Name()) } @@ -144,21 +144,21 @@ func ContainerdImage(ctx context.Context, imageName string, opts types.ImageOpti } return &image{ - opener: imageOpener(ctx, ref.String(), f, imageWriter(client, img, opts.RegistryOptions.Platform)), + opener: imageOpener(ctx, ref.String(), f, imageWriter(c, img, opts.RegistryOptions.Platform)), inspect: insp, history: history, }, cleanup, nil } -func parseReference(imageName string) (refdocker.Reference, []string, error) { - ref, err := refdocker.ParseAnyReference(imageName) +func parseReference(imageName string) (reference.Reference, []string, error) { + ref, err := reference.ParseAnyReference(imageName) if err != nil { return nil, nil, xerrors.Errorf("parse error: %w", err) } - d, isDigested := ref.(refdocker.Digested) - n, isNamed := ref.(refdocker.Named) - nt, isNamedAndTagged := ref.(refdocker.NamedTagged) + d, isDigested := ref.(reference.Digested) + n, isNamed := ref.(reference.Named) + nt, isNamedAndTagged := ref.(reference.NamedTagged) // a name plus a digest // example: name@sha256:41adb3ef... @@ -168,7 +168,7 @@ func parseReference(imageName string) (refdocker.Reference, []string, error) { // comma-separated filter is logically anded return ref, []string{ fmt.Sprintf(`name~="^%s(:|@).*",target.digest==%q`, n.Name(), dgst), - fmt.Sprintf(`name~="^%s(:|@).*",target.digest==%q`, refdocker.FamiliarName(n), dgst), + fmt.Sprintf(`name~="^%s(:|@).*",target.digest==%q`, reference.FamiliarName(n), dgst), }, nil } @@ -184,7 +184,7 @@ func parseReference(imageName string) (refdocker.Reference, []string, error) { tag := nt.Tag() return familiarNamed(imageName), []string{ fmt.Sprintf(`name=="%s:%s"`, nt.Name(), tag), - fmt.Sprintf(`name=="%s:%s"`, refdocker.FamiliarName(nt), tag), + fmt.Sprintf(`name=="%s:%s"`, reference.FamiliarName(nt), tag), }, nil } @@ -193,7 +193,7 @@ func parseReference(imageName string) (refdocker.Reference, []string, error) { // readImageConfig reads the config spec (`application/vnd.oci.image.config.v1+json`) for img.platform from content store. // ported from https://github.com/containerd/nerdctl/blob/7dfbaa2122628921febeb097e7a8a86074dc931d/pkg/imgutil/imgutil.go#L377-L393 -func readImageConfig(ctx context.Context, img containerd.Image) (ocispec.Image, ocispec.Descriptor, error) { +func readImageConfig(ctx context.Context, img client.Image) (ocispec.Image, ocispec.Descriptor, error) { var config ocispec.Image configDesc, err := img.Config(ctx) // aware of img.platform @@ -211,19 +211,19 @@ func readImageConfig(ctx context.Context, img containerd.Image) (ocispec.Image, } // ported from https://github.com/containerd/nerdctl/blob/d110fea18018f13c3f798fa6565e482f3ff03591/pkg/inspecttypes/dockercompat/dockercompat.go#L279-L321 -func inspect(ctx context.Context, img containerd.Image, ref refdocker.Reference) (api.ImageInspect, []v1.History, refdocker.Reference, error) { - if _, ok := ref.(refdocker.Digested); ok { +func inspect(ctx context.Context, img client.Image, ref reference.Reference) (api.ImageInspect, []v1.History, reference.Reference, error) { + if _, ok := ref.(reference.Digested); ok { ref = familiarNamed(img.Name()) } var tag string - if tagged, ok := ref.(refdocker.Tagged); ok { + if tagged, ok := ref.(reference.Tagged); ok { tag = tagged.Tag() } var repository string - if n, isNamed := ref.(refdocker.Named); isNamed { - repository = refdocker.FamiliarName(n) + if n, isNamed := ref.(reference.Named); isNamed { + repository = reference.FamiliarName(n) } imgConfig, imgConfigDesc, err := readImageConfig(ctx, img) diff --git a/pkg/fanal/test/integration/containerd_test.go b/pkg/fanal/test/integration/containerd_test.go index 420949cd42d3..b635c3913d9c 100644 --- a/pkg/fanal/test/integration/containerd_test.go +++ b/pkg/fanal/test/integration/containerd_test.go @@ -15,13 +15,12 @@ import ( "testing" "time" - "github.com/samber/lo" - - "github.com/containerd/containerd" - "github.com/containerd/containerd/images" - "github.com/containerd/containerd/namespaces" + "github.com/containerd/containerd/v2/client" + "github.com/containerd/containerd/v2/core/images" + "github.com/containerd/containerd/v2/pkg/namespaces" dockercontainer "github.com/docker/docker/api/types/container" v1 "github.com/google/go-containerregistry/pkg/v1" + "github.com/samber/lo" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/testcontainers/testcontainers-go" @@ -37,7 +36,7 @@ import ( "github.com/aquasecurity/trivy/pkg/fanal/types" ) -func setupContainerd(t *testing.T, ctx context.Context, namespace string) *containerd.Client { +func setupContainerd(t *testing.T, ctx context.Context, namespace string) *client.Client { t.Helper() tmpDir := t.TempDir() @@ -54,9 +53,9 @@ func setupContainerd(t *testing.T, ctx context.Context, namespace string) *conta startContainerd(t, ctx, tmpDir) // Retry up to 3 times until containerd is ready - var client *containerd.Client + var c *client.Client iteration, _, err := lo.AttemptWhileWithDelay(3, 1*time.Second, func(int, time.Duration) (error, bool) { - client, err = containerd.New(socketPath) + c, err = client.New(socketPath) if err != nil { if !errors.Is(err, os.ErrPermission) { return err, false // unexpected error @@ -64,13 +63,13 @@ func setupContainerd(t *testing.T, ctx context.Context, namespace string) *conta return err, true } t.Cleanup(func() { - require.NoError(t, client.Close()) + require.NoError(t, c.Close()) }) return nil, false }) require.NoErrorf(t, err, "attempted %d times ", iteration) - return client + return c } func startContainerd(t *testing.T, ctx context.Context, hostPath string) { From 601846134cb820c3e78324a44c7f0332d01b9fc6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 13:25:40 +0400 Subject: [PATCH 03/50] chore(deps): bump the common group across 1 directory with 20 updates (#7876) Signed-off-by: dependabot[bot] Signed-off-by: knqyf263 Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: knqyf263 --- go.mod | 71 ++++---- go.sum | 154 ++++++++++-------- integration/client_server_test.go | 2 +- integration/registry_test.go | 4 +- pkg/fanal/test/integration/containerd_test.go | 5 +- pkg/fanal/test/integration/registry_test.go | 2 +- 6 files changed, 123 insertions(+), 115 deletions(-) diff --git a/go.mod b/go.mod index 566d5069c0b9..c981c884a350 100644 --- a/go.mod +++ b/go.mod @@ -6,8 +6,8 @@ toolchain go1.22.4 require ( github.com/Azure/azure-sdk-for-go v68.0.0+incompatible - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.14.0 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.16.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.0 github.com/BurntSushi/toml v1.4.0 github.com/CycloneDX/cyclonedx-go v0.9.1 github.com/GoogleCloudPlatform/docker-credential-gcr v2.0.5+incompatible @@ -15,7 +15,7 @@ require ( github.com/NYTimes/gziphandler v1.1.1 github.com/alecthomas/chroma v0.10.0 github.com/alicebob/miniredis/v2 v2.33.0 - github.com/antchfx/htmlquery v1.3.2 + github.com/antchfx/htmlquery v1.3.3 github.com/apparentlymart/go-cidr v1.1.0 github.com/aquasecurity/bolt-fixtures v0.0.0-20200903104109-d34e7f983986 github.com/aquasecurity/go-gem-version v0.0.0-20201115065557-8eed6fe000ce @@ -29,26 +29,26 @@ require ( github.com/aquasecurity/trivy-db v0.0.0-20240910133327-7e0f4d2ed4c1 github.com/aquasecurity/trivy-java-db v0.0.0-20240109071736-184bd7481d48 github.com/aquasecurity/trivy-kubernetes v0.6.7-0.20241101182546-89bffc3932bc - github.com/aws/aws-sdk-go-v2 v1.31.0 - github.com/aws/aws-sdk-go-v2/config v1.27.38 - github.com/aws/aws-sdk-go-v2/credentials v1.17.36 - github.com/aws/aws-sdk-go-v2/service/ec2 v1.179.1 - github.com/aws/aws-sdk-go-v2/service/ecr v1.35.2 - github.com/aws/aws-sdk-go-v2/service/s3 v1.63.2 - github.com/aws/aws-sdk-go-v2/service/sts v1.31.2 // indirect - github.com/aws/smithy-go v1.21.0 + github.com/aws/aws-sdk-go-v2 v1.32.3 + github.com/aws/aws-sdk-go-v2/config v1.28.1 + github.com/aws/aws-sdk-go-v2/credentials v1.17.42 + github.com/aws/aws-sdk-go-v2/service/ec2 v1.187.0 + github.com/aws/aws-sdk-go-v2/service/ecr v1.36.3 + github.com/aws/aws-sdk-go-v2/service/s3 v1.66.2 + github.com/aws/aws-sdk-go-v2/service/sts v1.32.3 // indirect + github.com/aws/smithy-go v1.22.0 github.com/bitnami/go-version v0.0.0-20231130084017-bb00604d650c - github.com/bmatcuk/doublestar/v4 v4.6.1 + github.com/bmatcuk/doublestar/v4 v4.7.1 github.com/cenkalti/backoff/v4 v4.3.0 github.com/cheggaaa/pb/v3 v3.1.5 github.com/containerd/containerd/v2 v2.0.0 github.com/containerd/platforms v1.0.0-rc.0 github.com/csaf-poc/csaf_distribution/v3 v3.0.0 github.com/distribution/reference v0.6.0 - github.com/docker/cli v27.2.1+incompatible + github.com/docker/cli v27.3.1+incompatible github.com/docker/docker v27.3.1+incompatible github.com/docker/go-connections v0.5.0 - github.com/fatih/color v1.17.0 + github.com/fatih/color v1.18.0 github.com/go-git/go-git/v5 v5.12.0 github.com/go-openapi/runtime v0.28.0 // indirect github.com/go-openapi/strfmt v0.23.0 // indirect @@ -90,8 +90,8 @@ require ( github.com/mitchellh/go-homedir v1.1.0 github.com/mitchellh/hashstructure/v2 v2.0.2 github.com/mitchellh/mapstructure v1.5.0 - github.com/moby/buildkit v0.16.0 - github.com/open-policy-agent/opa v0.68.1-0.20240903211041-76f7038ea2d1 + github.com/moby/buildkit v0.17.0 + github.com/open-policy-agent/opa v0.70.0 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0 github.com/openvex/discovery v0.1.1-0.20240802171711-7c54efc57553 @@ -112,17 +112,17 @@ require ( github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.9.0 - github.com/testcontainers/testcontainers-go v0.33.0 - github.com/testcontainers/testcontainers-go/modules/localstack v0.33.0 - github.com/tetratelabs/wazero v1.8.0 + github.com/testcontainers/testcontainers-go v0.34.0 + github.com/testcontainers/testcontainers-go/modules/localstack v0.34.0 + github.com/tetratelabs/wazero v1.8.1 github.com/twitchtv/twirp v8.1.3+incompatible github.com/xeipuuv/gojsonschema v1.2.0 github.com/xlab/treeprint v1.2.0 github.com/zclconf/go-cty v1.15.0 - github.com/zclconf/go-cty-yaml v1.0.3 + github.com/zclconf/go-cty-yaml v1.1.0 go.etcd.io/bbolt v1.3.11 golang.org/x/crypto v0.28.0 - golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611 // indirect + golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect golang.org/x/mod v0.21.0 golang.org/x/net v0.30.0 golang.org/x/sync v0.8.0 @@ -132,7 +132,7 @@ require ( golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 google.golang.org/protobuf v1.35.1 gopkg.in/yaml.v3 v3.0.1 - helm.sh/helm/v3 v3.16.1 + helm.sh/helm/v3 v3.16.2 k8s.io/api v0.31.2 k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 modernc.org/sqlite v1.33.1 @@ -169,22 +169,22 @@ require ( github.com/ProtonMail/go-crypto v1.1.0-alpha.2 // indirect github.com/VividCortex/ewma v1.2.0 // indirect github.com/agext/levenshtein v1.2.3 // indirect - github.com/agnivade/levenshtein v1.1.1 // indirect + github.com/agnivade/levenshtein v1.2.0 // indirect github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a // indirect github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 // indirect - github.com/antchfx/xpath v1.3.1 // indirect + github.com/antchfx/xpath v1.3.2 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/aws/aws-sdk-go v1.55.5 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.18 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.22 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.22 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect github.com/aws/aws-sdk-go-v2/service/ebs v1.22.1 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.23.2 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.2 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.3 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.24.3 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.3 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/blang/semver v3.5.1+incompatible // indirect @@ -205,7 +205,7 @@ require ( github.com/containerd/stargz-snapshotter/estargz v0.15.1 // indirect github.com/containerd/ttrpc v1.2.6 // indirect github.com/containerd/typeurl/v2 v2.2.2 // indirect - github.com/cpuguy83/dockercfg v0.3.1 // indirect + github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect github.com/cyberphone/json-canonicalization v0.0.0-20231011164504-785e29786b46 // indirect github.com/cyphar/filepath-securejoin v0.3.1 // indirect @@ -328,6 +328,7 @@ require ( github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pkg/errors v0.9.1 // indirect + github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_golang v1.20.5 // indirect @@ -391,8 +392,8 @@ require ( golang.org/x/oauth2 v0.22.0 // indirect golang.org/x/sys v0.26.0 // indirect golang.org/x/telemetry v0.0.0-20240522233618-39ace7a40ae7 // indirect - golang.org/x/time v0.6.0 // indirect - golang.org/x/tools v0.24.0 // indirect + golang.org/x/time v0.7.0 // indirect + golang.org/x/tools v0.25.0 // indirect google.golang.org/api v0.172.0 // indirect google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 // indirect @@ -405,7 +406,7 @@ require ( gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - k8s.io/apiextensions-apiserver v0.31.0 // indirect + k8s.io/apiextensions-apiserver v0.31.1 // indirect k8s.io/apimachinery v0.31.2 // indirect k8s.io/apiserver v0.31.2 // indirect k8s.io/cli-runtime v0.31.2 // indirect diff --git a/go.sum b/go.sum index 7618669c665c..8df679b57a6b 100644 --- a/go.sum +++ b/go.sum @@ -203,10 +203,12 @@ github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/alibabacloudsdkgo github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/alibabacloudsdkgo/helper v0.2.0/go.mod h1:GgeIE+1be8Ivm7Sh4RgwI42aTtC9qrcj+Y9Y6CjJhJs= github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU= github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.14.0 h1:nyQWyZvwGTvunIMxi1Y9uXkcyr+I7TeNrr/foo4Kpk8= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.14.0/go.mod h1:l38EPgmsp71HHLq9j7De57JcKOWPyhrsW1Awm1JS6K0= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.16.0 h1:JZg6HRh6W6U4OLl6lk7BZ7BLisIzM9dG1R50zUk9C/M= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.16.0/go.mod h1:YL1xnZ6QejvQHWJrX/AvhFl4WW4rqHVoKspWNVwFk0M= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.0 h1:B/dfvscEQtew9dVuoxqxrUKKv8Ih2f55PydknDamU+g= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.0/go.mod h1:fiPSssYvltE08HJchL04dOy+RD4hgrjph0cwGGMntdI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.0 h1:+m0M/LFxN43KvULkDNfdXOgrjtg6UYJPFBJyuEcRCAw= +github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.0/go.mod h1:PwOyop78lveYMRs6oCxjiVyBdyCgIYH6XHIVZO9/SFQ= github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 h1:ywEEhmNahHBihViHepv3xPBn1663uRv2t2q/ESv9seY= github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY= github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.1.0 h1:DRiANoJTiW6obBQe3SqZizkuV1PEgfiiGivmVocDy64= @@ -235,6 +237,8 @@ github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+Z github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= +github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE= github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU= github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -283,8 +287,8 @@ github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1o github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= -github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= +github.com/agnivade/levenshtein v1.2.0 h1:U9L4IOT0Y3i0TIlUIDJ7rVUziKi/zPbrJGaFrtYH3SY= +github.com/agnivade/levenshtein v1.2.0/go.mod h1:QVVI16kDrtSuwcpd0p1+xMC6Z/VfhtCyDIjcwga4/DU= github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek= github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -321,10 +325,10 @@ github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 h1:aM1 github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092/go.mod h1:rYqSE9HbjzpHTI74vwPvae4ZVYZd1lue2ta6xHPdblA= 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/antchfx/htmlquery v1.3.2 h1:85YdttVkR1rAY+Oiv/nKI4FCimID+NXhDn82kz3mEvs= -github.com/antchfx/htmlquery v1.3.2/go.mod h1:1mbkcEgEarAokJiWhTfr4hR06w/q2ZZjnYLrDt6CTUk= -github.com/antchfx/xpath v1.3.1 h1:PNbFuUqHwWl0xRjvUPjJ95Agbmdj2uzzIwmQKgu4oCk= -github.com/antchfx/xpath v1.3.1/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= +github.com/antchfx/htmlquery v1.3.3 h1:x6tVzrRhVNfECDaVxnZi1mEGrQg3mjE/rxbH2Pe6dNE= +github.com/antchfx/htmlquery v1.3.3/go.mod h1:WeU3N7/rL6mb6dCwtE30dURBnBieKDC/fR8t6X+cKjU= +github.com/antchfx/xpath v1.3.2 h1:LNjzlsSjinu3bQpw9hWMY9ocB80oLOWuQqFvO6xt51U= +github.com/antchfx/xpath v1.3.2/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apparentlymart/go-cidr v1.1.0 h1:2mAhrMoF+nhXqxTzSZMUzDHkLjmIHC+Zzn4tdgBZjnU= github.com/apparentlymart/go-cidr v1.1.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= @@ -366,44 +370,44 @@ github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:W github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU= github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= -github.com/aws/aws-sdk-go-v2 v1.31.0 h1:3V05LbxTSItI5kUqNwhJrrrY1BAXxXt0sN0l72QmG5U= -github.com/aws/aws-sdk-go-v2 v1.31.0/go.mod h1:ztolYtaEUtdpf9Wftr31CJfLVjOnD/CVRkKOOYgF8hA= -github.com/aws/aws-sdk-go-v2/config v1.27.38 h1:mMVyJJuSUdbD4zKXoxDgWrgM60QwlFEg+JhihCq6wCw= -github.com/aws/aws-sdk-go-v2/config v1.27.38/go.mod h1:6xOiNEn58bj/64MPKx89r6G/el9JZn8pvVbquSqTKK4= -github.com/aws/aws-sdk-go-v2/credentials v1.17.36 h1:zwI5WrT+oWWfzSKoTNmSyeBKQhsFRJRv+PGW/UZW+Yk= -github.com/aws/aws-sdk-go-v2/credentials v1.17.36/go.mod h1:3AG/sY1rc9NJrNWcN/3KPU4SIDPGTrd/qegKB0TnFdE= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 h1:C/d03NAmh8C4BZXhuRNboF/DqhBkBCeDiJDcaqIT5pA= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14/go.mod h1:7I0Ju7p9mCIdlrfS+JCgqcYD0VXz/N4yozsox+0o078= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 h1:kYQ3H1u0ANr9KEKlGs/jTLrBFPo8P8NaH/w7A01NeeM= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18/go.mod h1:r506HmK5JDUh9+Mw4CfGJGSSoqIiLCndAuqXuhbv67Y= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 h1:Z7IdFUONvTcvS7YuhtVxN99v2cCoHRXOS4mTr0B/pUc= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18/go.mod h1:DkKMmksZVVyat+Y+r1dEOgJEfUeA7UngIHWeKsi0yNc= +github.com/aws/aws-sdk-go-v2 v1.32.3 h1:T0dRlFBKcdaUPGNtkBSwHZxrtis8CQU17UpNBZYd0wk= +github.com/aws/aws-sdk-go-v2 v1.32.3/go.mod h1:2SK5n0a2karNTv5tbP1SjsX0uhttou00v/HpXKM1ZUo= +github.com/aws/aws-sdk-go-v2/config v1.28.1 h1:oxIvOUXy8x0U3fR//0eq+RdCKimWI900+SV+10xsCBw= +github.com/aws/aws-sdk-go-v2/config v1.28.1/go.mod h1:bRQcttQJiARbd5JZxw6wG0yIK3eLeSCPdg6uqmmlIiI= +github.com/aws/aws-sdk-go-v2/credentials v1.17.42 h1:sBP0RPjBU4neGpIYyx8mkU2QqLPl5u9cmdTWVzIpHkM= +github.com/aws/aws-sdk-go-v2/credentials v1.17.42/go.mod h1:FwZBfU530dJ26rv9saAbxa9Ej3eF/AK0OAY86k13n4M= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.18 h1:68jFVtt3NulEzojFesM/WVarlFpCaXLKaBxDpzkQ9OQ= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.18/go.mod h1:Fjnn5jQVIo6VyedMc0/EhPpfNlPl7dHV916O6B+49aE= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.22 h1:Jw50LwEkVjuVzE1NzkhNKkBf9cRN7MtE1F/b2cOKTUM= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.22/go.mod h1:Y/SmAyPcOTmpeVaWSzSKiILfXTVJwrGmYZhcRbhWuEY= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.22 h1:981MHwBaRZM7+9QSR6XamDzF/o7ouUGxFzr+nVSIhrs= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.22/go.mod h1:1RA1+aBEfn+CAB/Mh0MB6LsdCYCnjZm7tKXtnk499ZQ= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= github.com/aws/aws-sdk-go-v2/service/ebs v1.22.1 h1:SeDJWG4pmye+/aO6k+zt9clPTUy1MXqUmkW8rbAddQg= github.com/aws/aws-sdk-go-v2/service/ebs v1.22.1/go.mod h1:wRzaW0v9GGQS0h//wpsVDw3Hah5gs5UP+NxoyGeZIGM= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.179.1 h1:TwFjSwRn1kR1i1qeq5cQBRwRaZ80JQS8BHsJTb6QBk8= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.179.1/go.mod h1:W6sNzs5T4VpZn1Vy+FMKw8s24vt5k6zPJXcNOK0asBo= -github.com/aws/aws-sdk-go-v2/service/ecr v1.35.2 h1:bVNvja4oEB7v+VL1yP46hWthCPp+KYpZBLS2AifM5PY= -github.com/aws/aws-sdk-go-v2/service/ecr v1.35.2/go.mod h1:oRaGEExKI6Pqcow+Tt7wpJf73/Srcj/CUJv5Eb9QFhg= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.187.0 h1:cA4hWo269CN5RY7Arqt8BfzXF0KIN8DSNo/KcqHKkWk= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.187.0/go.mod h1:ossaD9Z1ugYb6sq9QIqQLEOorCGcqUoxlhud9M9yE70= +github.com/aws/aws-sdk-go-v2/service/ecr v1.36.3 h1:bqmoQEKpWFRDRxOv4lC5yZLc+N1cogZHPLeQACfVUJo= +github.com/aws/aws-sdk-go-v2/service/ecr v1.36.3/go.mod h1:KwOqlt4MOBK9EpOGkj8RU9fqfTEae5AOUHi1pDEZ3OQ= github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.18.2 h1:PpbXaecV3sLAS6rjQiaKw4/jyq3Z8gNzmoJupHAoBp0= github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.18.2/go.mod h1:fUHpGXr4DrXkEDpGAjClPsviWf+Bszeb0daKE0blxv8= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 h1:QFASJGfT8wMXtuP3D5CRmMjARHv9ZmzFUMJznHDOY3w= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5/go.mod h1:QdZ3OmoIjSX+8D1OPAzPxDfjXASbBMDsz9qvtyIhtik= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 h1:Xbwbmk44URTiHNx6PNo0ujDE6ERlsCKJD3u1zfnzAPg= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20/go.mod h1:oAfOFzUB14ltPZj1rWwRc3d/6OgD76R8KlvU3EqM9Fg= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 h1:TToQNkvGguu209puTojY/ozlqy2d/SFNcoLIqTFi42g= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0/go.mod h1:0jp+ltwkf+SwG2fm/PKo8t4y8pJSgOCO4D8Lz3k0aHQ= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.3 h1:qcxX0JYlgWH3hpPUnd6U0ikcl6LLA9sLkXE2w1fpMvY= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.3/go.mod h1:cLSNEmI45soc+Ef8K/L+8sEA3A3pYFEYf5B5UI+6bH4= github.com/aws/aws-sdk-go-v2/service/kms v1.30.0 h1:yS0JkEdV6h9JOo8sy2JSpjX+i7vsKifU8SIeHrqiDhU= github.com/aws/aws-sdk-go-v2/service/kms v1.30.0/go.mod h1:+I8VUUSVD4p5ISQtzpgSva4I8cJ4SQ4b1dcBcof7O+g= -github.com/aws/aws-sdk-go-v2/service/s3 v1.63.2 h1:1iXmXy8SJzQVMGvo40TSzBYS9ig6BSyXfRIMzLfmBfE= -github.com/aws/aws-sdk-go-v2/service/s3 v1.63.2/go.mod h1:NLTqRLe3pUNu3nTEHI6XlHLKYmc8fbHUdMxAB6+s41Q= -github.com/aws/aws-sdk-go-v2/service/sso v1.23.2 h1:yzi/y/vKlLyzOfG7pSu5ONNGRxHIgLeDrV4w2AMRCo0= -github.com/aws/aws-sdk-go-v2/service/sso v1.23.2/go.mod h1:XRlMvmad0ZNL+75C5FYdMvbbLkd6qiqz6foR1nA1PXY= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.2 h1:3gb6pYhYLjo8rB1h2Tqs61wpjRd3rQymYcVq/pp0yxI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.2/go.mod h1:FnvDM4sfa+isJ3kDXIzAB9GAwVSzFzSy97uZ3IsHo4E= -github.com/aws/aws-sdk-go-v2/service/sts v1.31.2 h1:O6tyji8mXmBGsHvTCB0VIhrDw19lGTUSbKIyjnw79s8= -github.com/aws/aws-sdk-go-v2/service/sts v1.31.2/go.mod h1:yMWe0F+XG0DkRZK5ODZhG7BEFYhLXi2dqGsv6tX0cgI= -github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA= -github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= +github.com/aws/aws-sdk-go-v2/service/s3 v1.66.2 h1:p9TNFL8bFUMd+38YIpTAXpoxyz0MxC7FlbFEH4P4E1U= +github.com/aws/aws-sdk-go-v2/service/s3 v1.66.2/go.mod h1:fNjyo0Coen9QTwQLWeV6WO2Nytwiu+cCcWaTdKCAqqE= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.3 h1:UTpsIf0loCIWEbrqdLb+0RxnTXfWh2vhw4nQmFi4nPc= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.3/go.mod h1:FZ9j3PFHHAR+w0BSEjK955w5YD2UwB/l/H0yAK3MJvI= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.3 h1:2YCmIXv3tmiItw0LlYf6v7gEHebLY45kBEnPezbUKyU= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.3/go.mod h1:u19stRyNPxGhj6dRm+Cdgu6N75qnbW7+QN0q0dsAk58= +github.com/aws/aws-sdk-go-v2/service/sts v1.32.3 h1:wVnQ6tigGsRqSWDEEyH6lSAJ9OyFUsSnbaUWChuSGzs= +github.com/aws/aws-sdk-go-v2/service/sts v1.32.3/go.mod h1:VZa9yTFyj4o10YGsmDO4gbQJUvvhY72fhumT8W4LqsE= +github.com/aws/smithy-go v1.22.0 h1:uunKnWlcoL3zO7q+gG2Pk53joueEOsnNB28QdMsmiMM= +github.com/aws/smithy-go v1.22.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20231024185945-8841054dbdb8 h1:SoFYaT9UyGkR0+nogNyD/Lj+bsixB+SNuAS4ABlEs6M= github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20231024185945-8841054dbdb8/go.mod h1:2JF49jcDOrLStIXN/j/K1EKRq8a8R2qRnlZA6/o/c7c= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -418,8 +422,8 @@ github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdn github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -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/bmatcuk/doublestar/v4 v4.7.1 h1:fdDeAqgT47acgwd9bd9HxJRDmc9UAmPpc+2m0CXv75Q= +github.com/bmatcuk/doublestar/v4 v4.7.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/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A= @@ -511,8 +515,8 @@ github.com/containerd/typeurl/v2 v2.2.2/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsx github.com/coreos/go-oidc v2.2.1+incompatible h1:mh48q/BqXqgjVHpy2ZY7WnWAbenxRjsz9N1i1YxjHAk= github.com/coreos/go-oidc/v3 v3.10.0 h1:tDnXHnLyiTVyT/2zLDGj09pFPkhND8Gl8lnTRhoEaJU= github.com/coreos/go-oidc/v3 v3.10.0/go.mod h1:5j11xcw0D3+SGxn6Z/WFADsgcWVMyNAlSQupk0KK3ac= -github.com/cpuguy83/dockercfg v0.3.1 h1:/FpZ+JaygUR/lZP2NlFI2DVfrOEMAIKP5wWEJdoYe9E= -github.com/cpuguy83/dockercfg v0.3.1/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= +github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= +github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= 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.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= @@ -537,8 +541,8 @@ github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWa github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48 h1:fRzb/w+pyskVMQ+UbP35JkH8yB7MYb4q/qhBarqZE6g= -github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= +github.com/dgryski/trifles v0.0.0-20230903005119-f50d829f2e54 h1:SG7nF6SRlWhcT7cNTs5R6Hk4V2lcmLz2NsG2VnInyNo= +github.com/dgryski/trifles v0.0.0-20230903005119-f50d829f2e54/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= github.com/digitorus/pkcs7 v0.0.0-20230713084857-e76b763bdc49/go.mod h1:SKVExuS+vpu2l9IoOc0RwqE7NYnb0JlcFHFnEJkVDzc= github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352 h1:ge14PCmCvPjpMQMIAH7uKg0lrtNSOdpYsRXlwk3QbaE= github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352/go.mod h1:SKVExuS+vpu2l9IoOc0RwqE7NYnb0JlcFHFnEJkVDzc= @@ -552,8 +556,8 @@ github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5Qvfr github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E= github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/docker/cli v27.2.1+incompatible h1:U5BPtiD0viUzjGAjV1p0MGB8eVA3L3cbIrnyWmSJI70= -github.com/docker/cli v27.2.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v27.3.1+incompatible h1:qEGdFBF3Xu6SCvCYhc7CzaQTlBmqDuzxPDpigSyeKQQ= +github.com/docker/cli v27.3.1+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 v27.3.1+incompatible h1:KttF0XoteNTicmUtBO0L2tP+J7FGRFTjaEF4k6WdhfI= @@ -600,8 +604,8 @@ github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZM 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.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= -github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= @@ -959,6 +963,8 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= 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/keybase/go-keychain v0.0.0-20231219164618-57a3676c3af6 h1:IsMZxCuZqKuao2vNdfD82fjjgPLfyHLpR41Z88viRWs= +github.com/keybase/go-keychain v0.0.0-20231219164618-57a3676c3af6/go.mod h1:3VeWNIJaW+O5xpRQbPp0Ybqu1vJd/pm7s2F473HRrkw= 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= @@ -1072,8 +1078,8 @@ github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mndrix/tap-go v0.0.0-20171203230836-629fa407e90b/go.mod h1:pzzDgJWZ34fGzaAZGFW22KVZDfyrYW+QABMrWnJBnSs= -github.com/moby/buildkit v0.16.0 h1:wOVBj1o5YNVad/txPQNXUXdelm7Hs/i0PUFjzbK0VKE= -github.com/moby/buildkit v0.16.0/go.mod h1:Xqx/5GlrqE1yIRORk0NSCVDFpQAU1WjlT6KHYZdisIQ= +github.com/moby/buildkit v0.17.0 h1:ZA/4AxwBbve1f3ZaNNJQiCBtTV62R6YweWNwq4A+sTc= +github.com/moby/buildkit v0.17.0/go.mod h1:ru8NFyDHD8HbuKaLXJIjK9nr3x6FZR+IWjtF07S+wdM= 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= @@ -1138,8 +1144,8 @@ github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAl github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= -github.com/open-policy-agent/opa v0.68.1-0.20240903211041-76f7038ea2d1 h1:GQrryTKpunLNDc2NdhNL1FzfrbuNvo45s76anGdqz9k= -github.com/open-policy-agent/opa v0.68.1-0.20240903211041-76f7038ea2d1/go.mod h1:5E5SvaPwTpwt2WM177I9Z3eT7qUpmOGjk1ZdHs+TZ4w= +github.com/open-policy-agent/opa v0.70.0 h1:B3cqCN2iQAyKxK6+GI+N40uqkin+wzIrM7YA60t9x1U= +github.com/open-policy-agent/opa v0.70.0/go.mod h1:Y/nm5NY0BX0BqjBriKUiV81sCl8XOjjvqQG7dXrggtI= 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 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= @@ -1180,6 +1186,8 @@ github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjL github.com/pkg/errors v0.8.0/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/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= 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= @@ -1213,6 +1221,8 @@ github.com/quasilyte/go-ruleguard/dsl v0.3.22 h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe github.com/quasilyte/go-ruleguard/dsl v0.3.22/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/redis/go-redis/v9 v9.6.1 h1:HHDteefn6ZkTtY5fGUE8tj8uy85AHk6zP7CpzIAM0y4= +github.com/redis/go-redis/v9 v9.6.1/go.mod h1:0C0c6ycQsdpVNQpxb1njEQIqkx5UcsM8FJCQLgE9+RA= 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.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= @@ -1339,12 +1349,12 @@ github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BG github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= 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/testcontainers/testcontainers-go v0.33.0 h1:zJS9PfXYT5O0ZFXM2xxXfk4J5UMw/kRiISng037Gxdw= -github.com/testcontainers/testcontainers-go v0.33.0/go.mod h1:W80YpTa8D5C3Yy16icheD01UTDu+LmXIA2Keo+jWtT8= -github.com/testcontainers/testcontainers-go/modules/localstack v0.33.0 h1:AhbUGUjneEnMyTV5aTsPYzDiAWrba1duPtiV+Z9CKdY= -github.com/testcontainers/testcontainers-go/modules/localstack v0.33.0/go.mod h1:J5vMq1fXXiTfwcJplMClHhn+j8+MbIMv7Lic4d9E8qU= -github.com/tetratelabs/wazero v1.8.0 h1:iEKu0d4c2Pd+QSRieYbnQC9yiFlMS9D+Jr0LsRmcF4g= -github.com/tetratelabs/wazero v1.8.0/go.mod h1:yAI0XTsMBhREkM/YDAK/zNou3GoiAce1P6+rp/wQhjs= +github.com/testcontainers/testcontainers-go v0.34.0 h1:5fbgF0vIN5u+nD3IWabQwRybuB4GY8G2HHgCkbMzMHo= +github.com/testcontainers/testcontainers-go v0.34.0/go.mod h1:6P/kMkQe8yqPHfPWNulFGdFHTD8HB2vLq/231xY2iPQ= +github.com/testcontainers/testcontainers-go/modules/localstack v0.34.0 h1:WkjVmea0XQyGTY10Er8fOsVjHQ77iJCmTExnx6fC3Tw= +github.com/testcontainers/testcontainers-go/modules/localstack v0.34.0/go.mod h1:rTo76O/BBeAtfazMQqLvfwBrntBBwDP7/+Z60dm3e9U= +github.com/tetratelabs/wazero v1.8.1 h1:NrcgVbWfkWvVc4UtT4LRLDf91PsOzDzefMdwhLfA550= +github.com/tetratelabs/wazero v1.8.1/go.mod h1:yAI0XTsMBhREkM/YDAK/zNou3GoiAce1P6+rp/wQhjs= github.com/thales-e-security/pool v0.0.2 h1:RAPs4q2EbWsTit6tpzuvTFlgFRJ3S8Evf5gtvVDbmPg= github.com/thales-e-security/pool v0.0.2/go.mod h1:qtpMm2+thHtqhLzTwgDBj/OuNnMpupY8mv0Phz0gjhU= github.com/theupdateframework/go-tuf v0.7.0 h1:CqbQFrWo1ae3/I0UCblSbczevCCbS31Qvs5LdxRWqRI= @@ -1421,8 +1431,8 @@ github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= -github.com/zclconf/go-cty-yaml v1.0.3 h1:og/eOQ7lvA/WWhHGFETVWNduJM7Rjsv2RRpx1sdFMLc= -github.com/zclconf/go-cty-yaml v1.0.3/go.mod h1:9YLUH4g7lOhVWqUbctnVlZ5KLpg7JAprQNgxSZ1Gyxs= +github.com/zclconf/go-cty-yaml v1.1.0 h1:nP+jp0qPHv2IhUVqmQSzjvqAWcObN0KBkUl2rWBdig0= +github.com/zclconf/go-cty-yaml v1.1.0/go.mod h1:9YLUH4g7lOhVWqUbctnVlZ5KLpg7JAprQNgxSZ1Gyxs= github.com/zeebo/errs v1.3.0 h1:hmiaKqgYZzcVgRL1Vkc1Mn2914BbzB0IBxs+ebeutGs= github.com/zeebo/errs v1.3.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= @@ -1495,8 +1505,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 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-20231214170342-aacd6d4b4611 h1:qCEDpW1G+vcj3Y7Fy52pEM1AWm3abj8WimGYejI3SC4= -golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= 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= @@ -1757,8 +1767,8 @@ golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= 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.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= -golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= +golang.org/x/time v0.7.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= @@ -1817,8 +1827,8 @@ 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.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= -golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= -golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= +golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE= +golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg= golang.org/x/vuln v1.1.3 h1:NPGnvPOTgnjBc9HTaUx+nj+EaUYxl5SJOWqaDYGaFYw= golang.org/x/vuln v1.1.3/go.mod h1:7Le6Fadm5FOqE9C926BCD0g12NWyhg7cxV4BwcPFuNY= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2088,8 +2098,8 @@ 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.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= -helm.sh/helm/v3 v3.16.1 h1:cER6tI/8PgUAsaJaQCVBUg3VI9KN4oVaZJgY60RIc0c= -helm.sh/helm/v3 v3.16.1/go.mod h1:r+xBHHP20qJeEqtvBXMf7W35QDJnzY/eiEBzt+TfHps= +helm.sh/helm/v3 v3.16.2 h1:Y9v7ry+ubQmi+cb5zw1Llx8OKHU9Hk9NQ/+P+LGBe2o= +helm.sh/helm/v3 v3.16.2/go.mod h1:SyTXgKBjNqi2NPsHCW5dDAsHqvGIu0kdNYNH9gQaw70= 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= @@ -2099,8 +2109,8 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.31.2 h1:3wLBbL5Uom/8Zy98GRPXpJ254nEFpl+hwndmk9RwmL0= k8s.io/api v0.31.2/go.mod h1:bWmGvrGPssSK1ljmLzd3pwCQ9MgoTsRCuK35u6SygUk= -k8s.io/apiextensions-apiserver v0.31.0 h1:fZgCVhGwsclj3qCw1buVXCV6khjRzKC5eCFt24kyLSk= -k8s.io/apiextensions-apiserver v0.31.0/go.mod h1:b9aMDEYaEe5sdK+1T0KU78ApR/5ZVp4i56VacZYEHxk= +k8s.io/apiextensions-apiserver v0.31.1 h1:L+hwULvXx+nvTYX/MKM3kKMZyei+UiSXQWciX/N6E40= +k8s.io/apiextensions-apiserver v0.31.1/go.mod h1:tWMPR3sgW+jsl2xm9v7lAyRF1rYEK71i9G5dRtkknoQ= k8s.io/apimachinery v0.31.2 h1:i4vUt2hPK56W6mlT7Ry+AO8eEsyxMD1U44NR22CLTYw= k8s.io/apimachinery v0.31.2/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= k8s.io/apiserver v0.31.2 h1:VUzOEUGRCDi6kX1OyQ801m4A7AUPglpsmGvdsekmcI4= diff --git a/integration/client_server_test.go b/integration/client_server_test.go index 4afed3fdc155..0df09c6ae051 100644 --- a/integration/client_server_test.go +++ b/integration/client_server_test.go @@ -559,7 +559,7 @@ func TestClientServerWithRedis(t *testing.T) { }) // Terminate the Redis container - require.NoError(t, redisC.Terminate(ctx)) + require.NoError(t, testcontainers.TerminateContainer(redisC)) t.Run("sad path", func(t *testing.T) { osArgs := setupClient(t, testArgs, addr, cacheDir) diff --git a/integration/registry_test.go b/integration/registry_test.go index 25ddaf5b2814..3f0469e2c396 100644 --- a/integration/registry_test.go +++ b/integration/registry_test.go @@ -132,7 +132,7 @@ func TestRegistry(t *testing.T) { // set up auth server authC, err := setupAuthServer(ctx, baseDir) require.NoError(t, err) - defer authC.Terminate(ctx) + testcontainers.CleanupContainer(t, authC) authURL, err := getURL(ctx, authC, authPort) require.NoError(t, err) @@ -140,7 +140,7 @@ func TestRegistry(t *testing.T) { // set up registry registryC, err := setupRegistry(ctx, baseDir, authURL) require.NoError(t, err) - defer registryC.Terminate(ctx) + testcontainers.CleanupContainer(t, registryC) registryURL, err := getURL(ctx, registryC, registryPort) require.NoError(t, err) diff --git a/pkg/fanal/test/integration/containerd_test.go b/pkg/fanal/test/integration/containerd_test.go index b635c3913d9c..375c5cd77c62 100644 --- a/pkg/fanal/test/integration/containerd_test.go +++ b/pkg/fanal/test/integration/containerd_test.go @@ -101,6 +101,7 @@ func startContainerd(t *testing.T, ctx context.Context, hostPath string) { Started: true, }) require.NoError(t, err) + testcontainers.CleanupContainer(t, containerdC) _, _, err = containerdC.Exec(ctx, []string{ "chmod", @@ -108,10 +109,6 @@ func startContainerd(t *testing.T, ctx context.Context, hostPath string) { "/run/containerd/containerd.sock", }) require.NoError(t, err) - - t.Cleanup(func() { - require.NoError(t, containerdC.Terminate(ctx)) - }) } // Each of these tests imports an image and tags it with the name found in the diff --git a/pkg/fanal/test/integration/registry_test.go b/pkg/fanal/test/integration/registry_test.go index 4bca93f0ccba..35a32536600e 100644 --- a/pkg/fanal/test/integration/registry_test.go +++ b/pkg/fanal/test/integration/registry_test.go @@ -73,7 +73,7 @@ func TestTLSRegistry(t *testing.T) { Started: true, }) require.NoError(t, err) - defer registryC.Terminate(ctx) + testcontainers.CleanupContainer(t, registryC) registryURL, err := getRegistryURL(ctx, registryC, registryPort) require.NoError(t, err) From ab32297e0a8220a427fa330025f8625281e02275 Mon Sep 17 00:00:00 2001 From: Pierre Guilleminot Date: Thu, 7 Nov 2024 11:22:29 +0100 Subject: [PATCH 04/50] fix(fs): add missing defered Cleanup() call to post analyzer fs (#7882) --- pkg/fanal/artifact/local/fs.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/fanal/artifact/local/fs.go b/pkg/fanal/artifact/local/fs.go index 2f5ef7fe4ecd..b6c2d46c839a 100644 --- a/pkg/fanal/artifact/local/fs.go +++ b/pkg/fanal/artifact/local/fs.go @@ -82,6 +82,7 @@ func (a Artifact) Inspect(ctx context.Context) (artifact.Reference, error) { if err != nil { return artifact.Reference{}, xerrors.Errorf("failed to prepare filesystem for post analysis: %w", err) } + defer composite.Cleanup() err = a.walker.Walk(a.rootPath, a.artifactOption.WalkerOption, func(filePath string, info os.FileInfo, opener analyzer.Opener) error { dir := a.rootPath From 99b2db3978562689cef956a71281abb84ff0ce47 Mon Sep 17 00:00:00 2001 From: Nikita Pivkin Date: Fri, 8 Nov 2024 07:21:49 +0600 Subject: [PATCH 05/50] fix(misconf): handle null properties in CloudFormation templates (#7813) Signed-off-by: nikpivkin --- .../cloudformation/parser/file_context.go | 10 ++++ .../scanners/cloudformation/parser/parser.go | 33 +++++++------ .../cloudformation/parser/parser_test.go | 49 +++++++++++++++++++ 3 files changed, 77 insertions(+), 15 deletions(-) diff --git a/pkg/iac/scanners/cloudformation/parser/file_context.go b/pkg/iac/scanners/cloudformation/parser/file_context.go index 949add1ca7c4..e1c8cfa87f40 100644 --- a/pkg/iac/scanners/cloudformation/parser/file_context.go +++ b/pkg/iac/scanners/cloudformation/parser/file_context.go @@ -1,6 +1,8 @@ package parser import ( + "github.com/samber/lo" + "github.com/aquasecurity/trivy/pkg/iac/ignore" iacTypes "github.com/aquasecurity/trivy/pkg/iac/types" ) @@ -71,3 +73,11 @@ func (t *FileContext) missingParameterValues() []string { } return missing } + +func (t *FileContext) stripNullProperties() { + for _, resource := range t.Resources { + resource.Inner.Properties = lo.OmitBy(resource.Inner.Properties, func(k string, v *Property) bool { + return v.IsNil() + }) + } +} diff --git a/pkg/iac/scanners/cloudformation/parser/parser.go b/pkg/iac/scanners/cloudformation/parser/parser.go index 696dfcf16349..24d85ba4bbbb 100644 --- a/pkg/iac/scanners/cloudformation/parser/parser.go +++ b/pkg/iac/scanners/cloudformation/parser/parser.go @@ -6,6 +6,7 @@ import ( "fmt" "io" "io/fs" + "path" "path/filepath" "strings" @@ -83,7 +84,7 @@ func (p *Parser) ParseFS(ctx context.Context, fsys fs.FS, dir string) (FileConte return contexts, nil } -func (p *Parser) ParseFile(ctx context.Context, fsys fs.FS, path string) (fctx *FileContext, err error) { +func (p *Parser) ParseFile(ctx context.Context, fsys fs.FS, filePath string) (fctx *FileContext, err error) { defer func() { if e := recover(); e != nil { err = fmt.Errorf("panic during parse: %s", e) @@ -105,15 +106,15 @@ func (p *Parser) ParseFile(ctx context.Context, fsys fs.FS, path string) (fctx * } sourceFmt := YamlSourceFormat - if strings.HasSuffix(strings.ToLower(path), ".json") { + if path.Ext(filePath) == ".json" { sourceFmt = JsonSourceFormat } - f, err := fsys.Open(filepath.ToSlash(path)) + f, err := fsys.Open(filePath) if err != nil { return nil, err } - defer func() { _ = f.Close() }() + defer f.Close() content, err := io.ReadAll(f) if err != nil { @@ -123,7 +124,7 @@ func (p *Parser) ParseFile(ctx context.Context, fsys fs.FS, path string) (fctx * lines := strings.Split(string(content), "\n") fctx = &FileContext{ - filepath: path, + filepath: filePath, lines: lines, SourceFormat: sourceFmt, } @@ -131,26 +132,28 @@ func (p *Parser) ParseFile(ctx context.Context, fsys fs.FS, path string) (fctx * switch sourceFmt { case YamlSourceFormat: if err := yaml.Unmarshal(content, fctx); err != nil { - return nil, NewErrInvalidContent(path, err) + return nil, NewErrInvalidContent(filePath, err) } - fctx.Ignores = ignore.Parse(string(content), path, "") + fctx.Ignores = ignore.Parse(string(content), filePath, "") case JsonSourceFormat: if err := jfather.Unmarshal(content, fctx); err != nil { - return nil, NewErrInvalidContent(path, err) + return nil, NewErrInvalidContent(filePath, err) } } + fctx.stripNullProperties() + fctx.overrideParameters(p.overridedParameters) if params := fctx.missingParameterValues(); len(params) > 0 { - p.logger.Warn("Missing parameter values", log.FilePath(path), log.String("parameters", strings.Join(params, ", "))) + p.logger.Warn("Missing parameter values", log.FilePath(filePath), log.String("parameters", strings.Join(params, ", "))) } fctx.lines = lines fctx.SourceFormat = sourceFmt - fctx.filepath = path + fctx.filepath = filePath - p.logger.Debug("Context loaded from source", log.FilePath(path)) + p.logger.Debug("Context loaded from source", log.FilePath(filePath)) // the context must be set to conditions before resources for _, c := range fctx.Conditions { @@ -158,7 +161,7 @@ func (p *Parser) ParseFile(ctx context.Context, fsys fs.FS, path string) (fctx * } for name, r := range fctx.Resources { - r.configureResource(name, fsys, path, fctx) + r.configureResource(name, fsys, filePath, fctx) } return fctx, nil @@ -190,10 +193,10 @@ func (p *Parser) parseParams() error { return nil } -func (p *Parser) parseParametersFile(path string) (Parameters, error) { - f, err := p.configsFS.Open(path) +func (p *Parser) parseParametersFile(filePath string) (Parameters, error) { + f, err := p.configsFS.Open(filePath) if err != nil { - return nil, fmt.Errorf("parameters file %q open error: %w", path, err) + return nil, fmt.Errorf("parameters file %q open error: %w", filePath, err) } var parameters Parameters diff --git a/pkg/iac/scanners/cloudformation/parser/parser_test.go b/pkg/iac/scanners/cloudformation/parser/parser_test.go index aa058c4df855..99dd62294eee 100644 --- a/pkg/iac/scanners/cloudformation/parser/parser_test.go +++ b/pkg/iac/scanners/cloudformation/parser/parser_test.go @@ -440,3 +440,52 @@ Conditions: require.NoError(t, err) require.Len(t, files, 1) } + +func Test_TemplateWithNullProperty(t *testing.T) { + src := `AWSTemplateFormatVersion: "2010-09-09" +Resources: + TestBucket: + Type: "AWS::S3::Bucket" + Properties: + BucketName:` + + fsys := testutil.CreateFS(t, map[string]string{ + "main.yaml": src, + }) + + files, err := New().ParseFS(context.TODO(), fsys, ".") + require.NoError(t, err) + require.Len(t, files, 1) + + file := files[0] + + res := file.GetResourceByLogicalID("TestBucket") + + assert.True(t, res.GetProperty("BucketName").IsNil()) +} + +func Test_TemplateWithNullNestedProperty(t *testing.T) { + src := `AWSTemplateFormatVersion: "2010-09-09" +Description: "BAD" +Resources: + TestBucket: + Type: "AWS::S3::Bucket" + Properties: + BucketName: test + PublicAccessBlockConfiguration: + BlockPublicAcls: null` + + fsys := testutil.CreateFS(t, map[string]string{ + "main.yaml": src, + }) + + files, err := New().ParseFS(context.TODO(), fsys, ".") + require.NoError(t, err) + require.Len(t, files, 1) + + file := files[0] + + res := file.GetResourceByLogicalID("TestBucket") + + assert.True(t, res.GetProperty("PublicAccessBlockConfiguration.BlockPublicAcls").IsNil()) +} From 611558e4ce61818330118684274534f26b1fda99 Mon Sep 17 00:00:00 2001 From: Alberto Donato Date: Fri, 8 Nov 2024 08:32:54 +0100 Subject: [PATCH 06/50] fix(terraform): set null value as fallback for missing variables (#7669) --- pkg/iac/scanners/terraform/parser/parser.go | 9 ++++++ .../scanners/terraform/parser/parser_test.go | 30 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/pkg/iac/scanners/terraform/parser/parser.go b/pkg/iac/scanners/terraform/parser/parser.go index 695cbee4fb25..866835d5f8a5 100644 --- a/pkg/iac/scanners/terraform/parser/parser.go +++ b/pkg/iac/scanners/terraform/parser/parser.go @@ -217,6 +217,7 @@ func (p *Parser) Load(ctx context.Context) (*evaluator, error) { "Variable values was not found in the environment or variable files. Evaluating may not work correctly.", log.String("variables", strings.Join(missingVars, ", ")), ) + setNullMissingVariableValues(inputVars, missingVars) } } @@ -268,6 +269,14 @@ func missingVariableValues(blocks terraform.Blocks, inputVars map[string]cty.Val return missing } +// Set null values for missing variables, to allow expressions using them to be +// still be possibly evaluated to a value different than null. +func setNullMissingVariableValues(inputVars map[string]cty.Value, missingVars []string) { + for _, missingVar := range missingVars { + inputVars[missingVar] = cty.NullVal(cty.DynamicPseudoType) + } +} + func (p *Parser) EvaluateAll(ctx context.Context) (terraform.Modules, cty.Value, error) { e, err := p.Load(ctx) diff --git a/pkg/iac/scanners/terraform/parser/parser_test.go b/pkg/iac/scanners/terraform/parser/parser_test.go index 540338afb57f..9c62b958a212 100644 --- a/pkg/iac/scanners/terraform/parser/parser_test.go +++ b/pkg/iac/scanners/terraform/parser/parser_test.go @@ -1801,6 +1801,36 @@ resource "test" "fileset-func" { assert.Equal(t, []string{"a.py", "path/b.py"}, attr.GetRawValue()) } +func TestExprWithMissingVar(t *testing.T) { + files := map[string]string{ + "main.tf": ` +variable "v" { + type = string +} + +resource "test" "values" { + s = "foo-${var.v}" + l1 = ["foo", var.v] + l2 = concat(["foo"], [var.v]) + d1 = {foo = var.v} + d2 = merge({"foo": "bar"}, {"baz": var.v}) +} +`, + } + + resources := parse(t, files).GetResourcesByType("test") + require.Len(t, resources, 1) + + s_attr := resources[0].GetAttribute("s") + require.NotNil(t, s_attr) + assert.Equal(t, "foo-", s_attr.GetRawValue()) + + for _, name := range []string{"l1", "l2", "d1", "d2"} { + attr := resources[0].GetAttribute(name) + require.NotNil(t, attr) + } +} + func TestVarTypeShortcut(t *testing.T) { files := map[string]string{ "main.tf": ` From bdfcc19f86e8b7da0b611fd42633086e4ebc48e4 Mon Sep 17 00:00:00 2001 From: Robiiin Date: Mon, 11 Nov 2024 12:55:55 +0800 Subject: [PATCH 07/50] chore(k8s): enhance k8s scan log (#6997) Co-authored-by: afdesk --- pkg/k8s/commands/run.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/k8s/commands/run.go b/pkg/k8s/commands/run.go index 6a20d04aee10..1650cfa1446f 100644 --- a/pkg/k8s/commands/run.go +++ b/pkg/k8s/commands/run.go @@ -86,6 +86,7 @@ func (r *runner) run(ctx context.Context, artifacts []*k8sArtifacts.Artifact) er r.flagOpts.ScanOptions.Scanners = scanners } var rpt report.Report + log.Info("Scanning K8s...", log.String("K8s", r.cluster)) rpt, err = s.Scan(ctx, artifacts) if err != nil { return xerrors.Errorf("k8s scan error: %w", err) From 19aea4b01f3ce5a3cd05d5a1091da5b0b3ba4af6 Mon Sep 17 00:00:00 2001 From: DmitriyLewen <91113035+DmitriyLewen@users.noreply.github.com> Date: Thu, 14 Nov 2024 23:37:42 +0600 Subject: [PATCH 08/50] fix(report): handle `git@github.com` schema for misconfigs in `sarif` report (#7898) --- pkg/report/sarif.go | 38 ++++++++++++++++++- pkg/report/sarif_private_test.go | 59 +++++++++++++++++++++++++++++ pkg/report/sarif_test.go | 64 ++++++++++++++++++++++++++++++++ 3 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 pkg/report/sarif_private_test.go diff --git a/pkg/report/sarif.go b/pkg/report/sarif.go index 3bc3344611e2..48578c70cea9 100644 --- a/pkg/report/sarif.go +++ b/pkg/report/sarif.go @@ -346,8 +346,44 @@ func ToPathUri(input string, resultClass types.ResultClass) string { return clearURI(input) } +// clearURI clears URI for misconfigs func clearURI(s string) string { - return strings.ReplaceAll(strings.ReplaceAll(s, "\\", "/"), "git::https:/", "") + s = strings.ReplaceAll(s, "\\", "/") + // cf. https://developer.hashicorp.com/terraform/language/modules/sources + switch { + case strings.HasPrefix(s, "git@github.com:"): + // build GitHub url format + // e.g. `git@github.com:terraform-aws-modules/terraform-aws-s3-bucket.git?ref=v4.2.0/main.tf` -> `github.com/terraform-aws-modules/terraform-aws-s3-bucket/tree/v4.2.0/main.tf` + // cf. https://github.com/aquasecurity/trivy/issues/7897 + s = strings.ReplaceAll(s, "git@github.com:", "github.com/") + s = strings.ReplaceAll(s, ".git", "") + s = strings.ReplaceAll(s, "?ref=", "/tree/") + case strings.HasPrefix(s, "git::https:/") && !strings.HasPrefix(s, "git::https://"): + s = strings.TrimPrefix(s, "git::https:/") + s = strings.ReplaceAll(s, ".git", "") + case strings.HasPrefix(s, "git::ssh://"): + // `"`git::ssh://username@example.com/storage.git` -> `example.com/storage.git` + if _, u, ok := strings.Cut(s, "@"); ok { + s = u + } + s = strings.ReplaceAll(s, ".git", "") + case strings.HasPrefix(s, "git::"): + // `git::https://example.com/vpc.git` -> `https://example.com/vpc` + s = strings.TrimPrefix(s, "git::") + s = strings.ReplaceAll(s, ".git", "") + case strings.HasPrefix(s, "hg::"): + // `hg::http://example.com/vpc.hg` -> `http://example.com/vpc` + s = strings.TrimPrefix(s, "hg::") + s = strings.ReplaceAll(s, ".hg", "") + case strings.HasPrefix(s, "s3::"): + // `s3::https://s3-eu-west-1.amazonaws.com/examplecorp-terraform-modules/vpc.zip` -> `https://s3-eu-west-1.amazonaws.com/examplecorp-terraform-modules/vpc.zip` + s = strings.TrimPrefix(s, "s3::") + case strings.HasPrefix(s, "gcs::"): + // `gcs::https://www.googleapis.com/storage/v1/modules/foomodule.zipp` -> `https://www.googleapis.com/storage/v1/modules/foomodule.zip` + s = strings.TrimPrefix(s, "gcs::") + } + + return s } func toUri(str string) *url.URL { diff --git a/pkg/report/sarif_private_test.go b/pkg/report/sarif_private_test.go new file mode 100644 index 000000000000..b9384599f7b0 --- /dev/null +++ b/pkg/report/sarif_private_test.go @@ -0,0 +1,59 @@ +package report + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func Test_clearURI(t *testing.T) { + test := []struct { + name string + uri string + want string + }{ + { + name: "https", + uri: "bitbucket.org/hashicorp/terraform-consul-aws", + want: "bitbucket.org/hashicorp/terraform-consul-aws", + }, + { + name: "github", + uri: "git@github.com:terraform-aws-modules/terraform-aws-s3-bucket.git?ref=v4.2.0/main.tf", + want: "github.com/terraform-aws-modules/terraform-aws-s3-bucket/tree/v4.2.0/main.tf", + }, + { + name: "git", + uri: "git::https://example.com/storage.git?ref=51d462976d84fdea54b47d80dcabbf680badcdb8", + want: "https://example.com/storage?ref=51d462976d84fdea54b47d80dcabbf680badcdb8", + }, + { + name: "git ssh", + uri: "git::ssh://username@example.com/storage.git", + want: "example.com/storage", + }, + { + name: "hg", + uri: "hg::http://example.com/vpc.hg?ref=v1.2.0", + want: "http://example.com/vpc?ref=v1.2.0", + }, + { + name: "s3", + uri: "s3::https://s3-eu-west-1.amazonaws.com/examplecorp-terraform-modules/vpc.zip", + want: "https://s3-eu-west-1.amazonaws.com/examplecorp-terraform-modules/vpc.zip", + }, + { + name: "gcs", + uri: "gcs::https://www.googleapis.com/storage/v1/modules/foomodule.zip", + want: "https://www.googleapis.com/storage/v1/modules/foomodule.zip", + }, + } + + for _, tt := range test { + t.Run(tt.name, func(t *testing.T) { + got := clearURI(tt.uri) + require.Equal(t, tt.want, got) + require.NotNil(t, toUri(got)) + }) + } +} diff --git a/pkg/report/sarif_test.go b/pkg/report/sarif_test.go index ce68fab06a8a..c3eebef5c254 100644 --- a/pkg/report/sarif_test.go +++ b/pkg/report/sarif_test.go @@ -588,6 +588,44 @@ func TestReportWriter_Sarif(t *testing.T) { }, }, }, + { + Target: "git@github.com:terraform-aws-modules/terraform-aws-s3-bucket.git?ref=v4.2.0/main.tf", + Class: types.ClassConfig, + Type: ftypes.Terraform, + Misconfigurations: []types.DetectedMisconfiguration{ + { + Type: "Terraform Security Check", + ID: "AVD-GCP-0007", + AVDID: "AVD-GCP-0007", + Title: "Service accounts should not have roles assigned with excessive privileges", + Description: "Service accounts should have a minimal set of permissions assigned in order to do their job. They should never have excessive access as if compromised, an attacker can escalate privileges and take over the entire account.", + Message: "Service account is granted a privileged role.", + Query: "data..", + Resolution: "Limit service account access to minimal required set", + Severity: "HIGH", + PrimaryURL: "https://avd.aquasec.com/misconfig/avd-gcp-0007", + References: []string{ + "https://cloud.google.com/iam/docs/understanding-roles", + "https://avd.aquasec.com/misconfig/avd-gcp-0007", + }, + Status: "Fail", + CauseMetadata: ftypes.CauseMetadata{ + StartLine: 91, + EndLine: 91, + Occurrences: []ftypes.Occurrence{ + { + Resource: "google_project_iam_member.workload_identity_sa_bindings[\"roles/storage.admin\"]", + Filename: "git@github.com:terraform-aws-modules/terraform-aws-s3-bucket.git?ref=v4.2.0/main.tf", + Location: ftypes.Location{ + StartLine: 87, + EndLine: 93, + }, + }, + }, + }, + }, + }, + }, }, }, want: &sarif.Report{ @@ -655,6 +693,32 @@ func TestReportWriter_Sarif(t *testing.T) { }, }, }, + { + RuleID: lo.ToPtr("AVD-GCP-0007"), + RuleIndex: lo.ToPtr(uint(0)), + Level: lo.ToPtr("error"), + Message: *sarif.NewTextMessage("Artifact: github.com/terraform-aws-modules/terraform-aws-s3-bucket/tree/v4.2.0/main.tf\nType: terraform\nVulnerability AVD-GCP-0007\nSeverity: HIGH\nMessage: Service account is granted a privileged role.\nLink: [AVD-GCP-0007](https://avd.aquasec.com/misconfig/avd-gcp-0007)"), + Locations: []*sarif.Location{ + { + PhysicalLocation: sarif.NewPhysicalLocation(). + WithArtifactLocation( + &sarif.ArtifactLocation{ + URI: lo.ToPtr("github.com/terraform-aws-modules/terraform-aws-s3-bucket/tree/v4.2.0/main.tf"), + URIBaseId: lo.ToPtr("ROOTPATH"), + }, + ). + WithRegion( + &sarif.Region{ + StartLine: lo.ToPtr(91), + StartColumn: lo.ToPtr(1), + EndLine: lo.ToPtr(91), + EndColumn: lo.ToPtr(1), + }, + ), + Message: sarif.NewTextMessage("github.com/terraform-aws-modules/terraform-aws-s3-bucket/tree/v4.2.0/main.tf"), + }, + }, + }, }, ColumnKind: "utf16CodeUnits", OriginalUriBaseIDs: map[string]*sarif.ArtifactLocation{ From c8add84113467d906d3e2fc05e275951ee7f77fb Mon Sep 17 00:00:00 2001 From: Matthijs Galesloot Date: Thu, 14 Nov 2024 20:09:28 +0100 Subject: [PATCH 09/50] docs: add Headlamp to the Trivy Ecosystem page (#7916) --- docs/ecosystem/ide.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/ecosystem/ide.md b/docs/ecosystem/ide.md index e179eb7883cd..fb902b2d0809 100644 --- a/docs/ecosystem/ide.md +++ b/docs/ecosystem/ide.md @@ -1,11 +1,13 @@ # IDE and developer tools Integrations ## VSCode (Official) + [Visual Studio Code](https://code.visualstudio.com/) is an open source versatile code editor and development environment. 👉 Get it at: ## JetBrains (Official) + [JetBrains](https://jetbrains.com) makes IDEs such as Goland, Pycharm, IntelliJ, Webstorm, and more. The Trivy plugin for JetBrains IDEs lets you use Trivy right from your development environment. @@ -13,6 +15,7 @@ The Trivy plugin for JetBrains IDEs lets you use Trivy right from your developme 👉 Get it at: ## Kubernetes Lens (Official) + [Kubernetes Lens](https://k8slens.dev/) is a management application for Kubernetes clusters. Trivy has an extension for Kubernetes Lens that lets you scan Kubernetes workloads and view the results in the Lens UI. @@ -20,6 +23,7 @@ Trivy has an extension for Kubernetes Lens that lets you scan Kubernetes workloa 👉 Get it at: ## Vim (Community) + [Vim](https://www.vim.org/) is a terminal based text editor. Vim plugin for Trivy to install and run Trivy. @@ -27,6 +31,7 @@ Vim plugin for Trivy to install and run Trivy. 👉 Get it at: ## Docker Desktop (Community) + [Docker Desktop](https://www.docker.com/products/docker-desktop/) is an easy way to install [Docker]() container engine on your development machine, and manage it in a GUI . Trivy Docker Desktop extension for scanning container images for vulnerabilities and generating SBOMs @@ -34,11 +39,13 @@ Trivy Docker Desktop extension for scanning container images for vulnerabilities 👉 Get it at: ## Rancher Desktop (Community) + [Rancher Desktop](https://rancherdesktop.io/) is an easy way to use containers and Kubernetes on your development machine, and manage it in a GUI. Trivy is natively integrated with Rancher, no installation is needed. More info in Rancher documentation: ## LazyTrivy (Community) + A terminal native UI for Trivy 👉 Get it at: @@ -64,3 +71,9 @@ A trivy pre-commit hook that runs a `trivy fs` in your git repo before commiting A CDK Construct Library to scan an image with trivy in CDK codes. 👉 Get it at: + +## Headlamp plugin (Community) + +[Headlamp](https://headlamp.dev/) is a user-friendly Kubernetes UI focused on extensibility. The Kubescape plugin extends Headlamp with views on Trivy reports. + +👉 Get it at: From 0d3d934f76e543741b0aeee86cb25d795bbe6eba Mon Sep 17 00:00:00 2001 From: DmitriyLewen <91113035+DmitriyLewen@users.noreply.github.com> Date: Mon, 18 Nov 2024 12:25:58 +0600 Subject: [PATCH 10/50] test: change branch in spdx schema link to check in integration tests (#7935) --- integration/integration_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration/integration_test.go b/integration/integration_test.go index 96c8f54a67e9..21cdfe4facd9 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -41,7 +41,7 @@ import ( var update = flag.Bool("update", false, "update golden files") -const SPDXSchema = "https://raw.githubusercontent.com/spdx/spdx-spec/development/v%s/schemas/spdx-schema.json" +const SPDXSchema = "https://raw.githubusercontent.com/spdx/spdx-spec/support/v%s/schemas/spdx-schema.json" func initDB(t *testing.T) string { fixtureDir := filepath.Join("testdata", "fixtures", "db") From 94791f83431c02a566f73e4e3f00557d3e90aef5 Mon Sep 17 00:00:00 2001 From: Itay Shakury Date: Sun, 17 Nov 2024 23:34:48 -0700 Subject: [PATCH 11/50] docs: combine trivy.dev into trivy docs (#7884) Co-authored-by: simar7 <1254783+simar7@users.noreply.github.com> --- .github/workflows/mkdocs-dev.yaml | 2 +- .github/workflows/mkdocs-latest.yaml | 2 +- docs/assets/css/trivy_v1_homepage.min.css | 1 + docs/assets/css/trivy_v1_homepage.scss | 693 ++++++++++++++++++ docs/assets/images/homepage_hero_orb_03.png | Bin 0 -> 28423 bytes docs/assets/images/homepage_hero_stars_02.svg | 1 + .../images/homepage_hero_terrain_08.svg | 1 + .../images/homepage_v1_hero_person_01.png | Bin 0 -> 56629 bytes .../images/trivy_logo_horizontal_white.svg | 1 + docs/assets/javascripts/trivy_v1_homepage.js | 9 + docs/build/Dockerfile | 8 +- docs/build/requirements.in | 3 + docs/build/requirements.txt | 136 +++- docs/docs/index.md | 5 +- docs/getting-started/index.md | 74 ++ docs/getting-started/installation.md | 116 ++- .../getting-started/signature-verification.md | 143 ++-- docs/index.md | 142 +--- docs/overrides/home.html | 244 ++++++ docs/overrides/main.html | 30 +- magefiles/magefile.go | 48 +- mkdocs.yml | 27 +- 22 files changed, 1356 insertions(+), 330 deletions(-) create mode 100644 docs/assets/css/trivy_v1_homepage.min.css create mode 100644 docs/assets/css/trivy_v1_homepage.scss create mode 100644 docs/assets/images/homepage_hero_orb_03.png create mode 100644 docs/assets/images/homepage_hero_stars_02.svg create mode 100644 docs/assets/images/homepage_hero_terrain_08.svg create mode 100644 docs/assets/images/homepage_v1_hero_person_01.png create mode 100644 docs/assets/images/trivy_logo_horizontal_white.svg create mode 100644 docs/assets/javascripts/trivy_v1_homepage.js create mode 100644 docs/build/requirements.in create mode 100644 docs/getting-started/index.md create mode 100644 docs/overrides/home.html diff --git a/.github/workflows/mkdocs-dev.yaml b/.github/workflows/mkdocs-dev.yaml index f89deb9f5151..68ca817e2259 100644 --- a/.github/workflows/mkdocs-dev.yaml +++ b/.github/workflows/mkdocs-dev.yaml @@ -22,7 +22,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip setuptools wheel - pip install git+https://${GH_TOKEN}@github.com/squidfunk/mkdocs-material-insiders.git + pip install git+https://${GH_TOKEN}@github.com/squidfunk/mkdocs-material-insiders.git@9.5.44-insiders-4.53.14 pip install -r docs/build/requirements.txt env: GH_TOKEN: ${{ secrets.MKDOCS_AQUA_BOT }} diff --git a/.github/workflows/mkdocs-latest.yaml b/.github/workflows/mkdocs-latest.yaml index 0f07db482a05..e709f9d8fa92 100644 --- a/.github/workflows/mkdocs-latest.yaml +++ b/.github/workflows/mkdocs-latest.yaml @@ -24,7 +24,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip setuptools wheel - pip install git+https://${GH_TOKEN}@github.com/squidfunk/mkdocs-material-insiders.git + pip install git+https://${GH_TOKEN}@github.com/squidfunk/mkdocs-material-insiders.git@9.5.44-insiders-4.53.14 pip install -r docs/build/requirements.txt env: GH_TOKEN: ${{ secrets.MKDOCS_AQUA_BOT }} diff --git a/docs/assets/css/trivy_v1_homepage.min.css b/docs/assets/css/trivy_v1_homepage.min.css new file mode 100644 index 000000000000..0b9ef16d1976 --- /dev/null +++ b/docs/assets/css/trivy_v1_homepage.min.css @@ -0,0 +1 @@ +body{font-family:"Inter",sans-serif}.trivy_v1_homepage_wrap{position:relative;z-index:3}.trivy_v1_homepage_wrap *{transition:all .2s ease !important}.trivy_v1_homepage_wrap .container{width:100%;margin:0 auto;max-width:1440px}@media screen and (max-width: 769px),print{.trivy_v1_homepage_wrap .container{padding:0 24px;max-width:769px}}.trivy_v1_homepage_wrap .button{background-color:#ebf3fa;border:1px solid #dbdbdb;border-width:1px;color:#363636;cursor:pointer;justify-content:center;padding-bottom:calc(.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(.5em - 1px);text-align:center;white-space:nowrap;border-radius:4px;transition:all .2s ease;font-size:16px;display:inline-block;font-weight:700}.trivy_v1_homepage_wrap .button.is-seafoam{background-color:#00ffe4;border-color:#00ffe4;color:#07242d}.trivy_v1_homepage_wrap .button.is-seafoam.is-outlined{background-color:rgba(0,0,0,0);border-color:#00ffe4;color:#00ffe4;border-width:2px}.trivy_v1_homepage_wrap .button.is-seafoam.is-outlined:hover{background-color:#00ffe4;color:#07242d}.trivy_v1_homepage_wrap .button.large_btn{font-size:22px;padding:16px 27px;margin-right:12px}@media screen and (max-width: 769px),print{.trivy_v1_homepage_wrap .button.large_btn{font-size:18px}}.trivy_v1_homepage_wrap .button.solidseafoamarrowbutton{background-color:#00ffe4;font-weight:700;border:2px solid #00ffe4;font-size:22px;padding:16px 27px;color:#07242d}.trivy_v1_homepage_wrap .button.solidseafoamarrowbutton:after{content:"";border:solid #07242d;border-width:0 2px 2px 0;display:inline-block;padding:4px;transform:rotate(-45deg);margin-left:30px;vertical-align:middle;transition:all .2s}.trivy_v1_homepage_wrap .margin-bottom-20{margin-bottom:20px}.trivy_v1_homepage_wrap .hero_wrap{background-color:#0a0b23;background-image:radial-gradient(1600px at 70% 120%, #031145 10%, #0a0b23 100%);min-height:1050px;position:relative;z-index:10}.trivy_v1_homepage_wrap .hero_wrap .homepage_background_image_wrap{position:absolute;left:0px;top:0px;width:100%;height:100%;z-index:1;pointer-events:none}.trivy_v1_homepage_wrap .hero_wrap .homepage_background_image_wrap .stars_wrap{position:absolute;left:0px;top:0px;width:100%;height:100%;z-index:1;overflow:hidden}.trivy_v1_homepage_wrap .hero_wrap .homepage_background_image_wrap .stars_wrap .stars_bg{position:absolute;width:400vw;height:400vh;top:50%;left:50%;margin-top:-200vh;margin-left:-200vw;animation:stars_ani 240s linear infinite;background-size:240px;backface-visibility:visible;background-image:url(../images/homepage_hero_stars_02.svg);background-repeat:repeat}@keyframes stars_ani{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.trivy_v1_homepage_wrap .hero_wrap .homepage_background_image_wrap .terrain_wrap{position:absolute;left:0px;bottom:0px;width:100%;height:680px;background-image:url(../images/homepage_hero_terrain_08.svg);background-repeat:no-repeat;background-position:center top;background-size:cover;z-index:2}.trivy_v1_homepage_wrap .hero_wrap .homepage_background_image_wrap .beams_wrap{position:absolute;left:0px;bottom:0px;width:100%;height:100%;z-index:3;overflow:hidden}.trivy_v1_homepage_wrap .hero_wrap .homepage_background_image_wrap .beams_wrap .beam{position:absolute;right:200px;top:270px;width:3px;height:350%;background:rgba(62,171,255,.6);box-shadow:0px 0px 55px 0px #3eabff;transform-origin:0 0;animation:beam_ani 10s infinite}.trivy_v1_homepage_wrap .hero_wrap .homepage_background_image_wrap .beams_wrap .beam.num2{animation:beam_ani 11s infinite}.trivy_v1_homepage_wrap .hero_wrap .homepage_background_image_wrap .beams_wrap .beam.num3{animation:beam_ani 12s infinite}.trivy_v1_homepage_wrap .hero_wrap .homepage_background_image_wrap .beams_wrap .beam.num4{animation:beam_ani 13s infinite}@keyframes beam_ani{0%{transform:rotate(75deg)}50%{transform:rotate(-15deg)}100%{transform:rotate(75deg)}}.trivy_v1_homepage_wrap .hero_wrap .homepage_background_image_wrap .beams_wrap .sphere{z-index:999;position:absolute;top:60px;right:50px;width:280px;height:280px;background-image:url(../images/homepage_hero_orb_03.png);background-position:center center;background-repeat:no-repeat}.trivy_v1_homepage_wrap .hero_wrap .homepage_background_image_wrap .person_wrap{position:absolute;left:0px;bottom:0px;width:100%;height:595px;background-image:url(../images/homepage_v1_hero_person_01.png);background-repeat:no-repeat;background-position:center bottom;z-index:4}.trivy_v1_homepage_wrap .hero .hero-body{padding:80px 0px}.trivy_v1_homepage_wrap .hero .hero-body .header_title_wrap .header_title_content_wrap{width:50%;position:relative;z-index:3}.trivy_v1_homepage_wrap .hero .hero-body .header_title_wrap .header_title_content_wrap .page_title{color:#fff;font-weight:700;font-size:48px;line-height:1.3}.trivy_v1_homepage_wrap .hero .hero-body .header_title_wrap .header_title_content_wrap .page_subtitle{color:#fff;font-weight:400;font-size:24px;line-height:1.3;margin-bottom:30px}@media screen and (max-width: 1216px),print{.trivy_v1_homepage_wrap .hero .hero-body .header_title_wrap .header_title_content_wrap{width:70%}}@media screen and (max-width: 769px),print{.trivy_v1_homepage_wrap .hero .hero-body .header_title_wrap .header_title_content_wrap{width:100%}.trivy_v1_homepage_wrap .hero .hero-body .header_title_wrap .header_title_content_wrap .page_title{font-size:32px}.trivy_v1_homepage_wrap .hero .hero-body .header_title_wrap .header_title_content_wrap .page_subtitle{font-size:18px}}@media screen and (min-width: 769px),print{.trivy_v1_homepage_wrap .hero .hero-body{padding:48px 24px}}.trivy_v1_homepage_wrap .homepage_community_wrap{position:relative;background-color:#0a0b23;color:#fff;z-index:5;padding-top:60px;padding-bottom:20px}.trivy_v1_homepage_wrap .homepage_community_wrap .container.wide_container{max-width:1640px;padding-left:20px;padding-right:20px;display:flex;flex-direction:row;flex-wrap:wrap}.trivy_v1_homepage_wrap .homepage_community_wrap .community_titles_column{width:33.3333%;padding-right:32px}@media screen and (max-width: 1024px),print{.trivy_v1_homepage_wrap .homepage_community_wrap .community_titles_column{width:41.6666666667%}}@media screen and (max-width: 769px),print{.trivy_v1_homepage_wrap .homepage_community_wrap .community_titles_column{width:100%}}.trivy_v1_homepage_wrap .homepage_community_wrap .community_slider_column{width:66.6666%}@media screen and (max-width: 1024px),print{.trivy_v1_homepage_wrap .homepage_community_wrap .community_slider_column{width:58.3333333333%}}@media screen and (max-width: 769px),print{.trivy_v1_homepage_wrap .homepage_community_wrap .community_slider_column{width:100%}}.trivy_v1_homepage_wrap .homepage_community_wrap .community_title{color:#00ffe4;font-size:60px;font-weight:700;margin-bottom:24px;line-height:1.2}.trivy_v1_homepage_wrap .homepage_community_wrap .community_subtitle{color:#fff;font-size:26px;margin-bottom:24px}.trivy_v1_homepage_wrap .homepage_community_wrap .community_cta_wrap .button{font-weight:700;margin-right:10px}.trivy_v1_homepage_wrap .homepage_community_wrap .community_quotes_wrap{position:relative}.trivy_v1_homepage_wrap .homepage_community_wrap .community_quotes_wrap .community_quotes{column-count:3;column-gap:20px}@media screen and (max-width: 1216px),print{.trivy_v1_homepage_wrap .homepage_community_wrap .community_quotes_wrap .community_quotes{column-count:2}}@media screen and (max-width: 769px),print{.trivy_v1_homepage_wrap .homepage_community_wrap .community_quotes_wrap .community_quotes{column-count:1}}.trivy_v1_homepage_wrap .homepage_community_wrap .community_quotes_wrap .community_quotes .quote_item_wrap{display:inline-block;margin:0px 0px 20px 0px;width:100%}.trivy_v1_homepage_wrap .homepage_community_wrap .community_quotes_wrap .community_quotes .quote_item{display:block;position:relative;color:#fff;border:1px solid rgba(0,255,228,.2);background-color:rgba(0,255,228,.05);border-radius:4px;padding:25px}.trivy_v1_homepage_wrap .homepage_community_wrap .community_quotes_wrap .community_quotes .quote_item .quote_name{font-size:16px;font-weight:600}.trivy_v1_homepage_wrap .homepage_community_wrap .community_quotes_wrap .community_quotes .quote_item .quote_twitter_handle{opacity:.6;font-size:13px}.trivy_v1_homepage_wrap .homepage_community_wrap .community_quotes_wrap .community_quotes .quote_item .quote_company{opacity:.6;font-size:13px}.trivy_v1_homepage_wrap .homepage_community_wrap .community_quotes_wrap .community_quotes .quote_item .quote_text{font-size:16px;font-weight:400;line-height:1.3}.trivy_v1_homepage_wrap .homepage_community_wrap .community_quotes_wrap .community_quotes .quote_item .quote_avatar{display:block;position:absolute;top:25px;left:25px;width:40px;height:40px;border-radius:50%;background-repeat:no-repeat;background-position:center center;background-size:cover}.trivy_v1_homepage_wrap .homepage_community_wrap .community_quotes_wrap .community_quotes .quote_item.is_tweet .quote_text{padding-top:10px}.trivy_v1_homepage_wrap .homepage_community_wrap .community_quotes_wrap .community_quotes .quote_item.is_tweet.has_avatar .quote_name,.trivy_v1_homepage_wrap .homepage_community_wrap .community_quotes_wrap .community_quotes .quote_item.is_tweet.has_avatar .quote_twitter_handle{padding-left:50px}.trivy_v1_homepage_wrap .homepage_community_wrap .community_quotes_wrap .community_quotes .quote_item.is_quote .quote_text{position:relative;padding-top:40px;padding-bottom:10px}.trivy_v1_homepage_wrap .homepage_community_wrap .community_quotes_wrap .community_quotes .quote_item.is_quote .quote_text:before{content:"";display:block;position:absolute;top:-10px;left:0px;width:56px;height:42px;background-image:url(../images/community_quote.png);background-position:center center;background-repeat:no-repeat}@media screen and (max-width: 769px),print{.trivy_v1_homepage_wrap .homepage_community_wrap .community_title{font-size:32px}.trivy_v1_homepage_wrap .homepage_community_wrap .community_subtitle{font-size:18px}}.slick-slider{position:relative;display:block;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:rgba(0,0,0,0)}.slick-list{position:relative;display:block;overflow:hidden;margin:0;padding:0}.slick-list:focus{outline:none}.slick-list.dragging{cursor:hand}.slick-slider .slick-track,.slick-slider .slick-list{transform:translate3d(0, 0, 0)}.slick-track{position:relative;top:0;left:0;display:block;margin-left:auto;margin-right:auto}.slick-track:before,.slick-track:after{display:table;content:""}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{display:none;float:left;height:100%;min-height:1px}.slick-slide:focus{outline:none}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid rgba(0,0,0,0)}.slick-arrow.slick-hidden{display:none}.slick-arrow{display:block;background-color:rgba(0,0,0,0);border:none;color:rgba(0,0,0,0);cursor:pointer;position:absolute;top:0px;height:330px;width:80px;z-index:20;outline:none}.slick-arrow:focus,.slick-arrow:active{outline:none}.slick-arrow.slick-prev{left:0px;background-image:linear-gradient(to right, #ebf3fa 0%, rgba(235, 243, 250, 0) 100%)}.slick-arrow.slick-next{right:0px;background-image:linear-gradient(to left, #ebf3fa 0%, rgba(235, 243, 250, 0) 100%)}.slick-arrow:before{content:"";display:block;position:absolute;left:0px;top:0px;width:100%;height:100%;z-index:21;background-repeat:no-repeat}.slick-arrow.slick-prev:before{background-image:url(../images/arrow_left.png);background-position:center left}.slick-arrow.slick-next:before{background-image:url(../images/arrow_right.png);background-position:center right}.slick-dotted.slick-slider{margin-bottom:0px}.slick-dots{position:relative;display:block;width:100%;padding:0;margin:0;list-style:none;text-align:center}.slick-dots li{position:relative;display:inline-block;width:24px;height:24px;margin:0px 4px;padding:0;cursor:pointer}.slick-dots li button{font-size:0;line-height:0;display:block;width:24px;height:24px;padding:0px;cursor:pointer;color:rgba(0,0,0,0);border:0;outline:none;background:rgba(0,0,0,0)}.slick-dots li button:before{position:relative;top:0px;left:0px;width:20px;height:20px;content:"";background-color:rgba(0,0,0,0);border:2px solid #00ffe4;border-radius:50%;display:block;opacity:.7}.slick-dots li button:after{position:absolute;top:7px;left:5px;width:10px;height:10px;content:"";background-color:#00ffe4;border-radius:50%;display:block;opacity:0;transition:.2s ease-out}.slick-dots li button:hover,.slick-dots li button:focus{outline:none}.slick-dots li button:hover:after,.slick-dots li button:focus:after{opacity:1}.slick-dots li.slick-active button:after{opacity:1} diff --git a/docs/assets/css/trivy_v1_homepage.scss b/docs/assets/css/trivy_v1_homepage.scss new file mode 100644 index 000000000000..7dd40ba43a11 --- /dev/null +++ b/docs/assets/css/trivy_v1_homepage.scss @@ -0,0 +1,693 @@ +/* trivy homepage */ + +//aqua brand colors +$aq-royal-blue: #1904da; +$aq-legacy-blue: #08b1d5; +$aq-coral-red: #ff445f; +$aq-starfish-yellow: #ffc900; +$aq-dark-abyss: #07242d; +$aq-deep-sea-blue: #183278; +$aq-ocean-ash: #405a75; +$aq-sea-foam: #00ffe4; + +$aq-neo-background: #ebf3fa; +$aq-neo-background-hover: #f0f8ff; + + +$aq-royal-blue-dark: #1503ba; + +$aq-trivy-dark: #0a0b23; + + +$weight-normal: 400; +$weight-semibold: 600; +$weight-bold: 700; + + + +$gap: 32px; +// 960, 1152, and 1344 have been chosen because they are divisible by both 12 and 16 +$tablet: 769px; + +// 960px container + 4rem +$desktop: 960px + 2 * $gap; + +// 1152px container + 4rem +$widescreen: 1152px + 2 * $gap; +$widescreen-enabled: true; + +// 1344px container + 4rem +$fullhd: 1344px + 2 * $gap; +$fullhd-enabled: true; + + + +body { + + font-family: "Inter", sans-serif; +} + +.trivy_v1_homepage_wrap { + position: relative; + z-index: 3; + + * { + transition: all 0.2s ease !important; + } + + .container { + width: 100%; + margin: 0 auto; + max-width: 1440px; + + @media screen and (max-width: $tablet), print { //769 + padding: 0 24px; + max-width: $tablet; //769 + } //until tablet + } + + .button { + + background-color: #ebf3fa; + border: 1px solid #dbdbdb; + border-width: 1px; + color: #363636; + cursor: pointer; + justify-content: center; + padding-bottom: calc(.5em - 1px); + padding-left: 1em; + padding-right: 1em; + padding-top: calc(.5em - 1px); + text-align: center; + white-space: nowrap; + border-radius: 4px; + transition: all .2s ease; + font-size: 16px; + display: inline-block; + font-weight: 700; + + &.is-seafoam { + background-color: $aq-sea-foam; + border-color: $aq-sea-foam; + color: $aq-dark-abyss; + + + &.is-outlined { + background-color: rgba(0,0,0,0); + border-color: $aq-sea-foam; + color: $aq-sea-foam; + border-width: 2px; + + &:hover { + background-color: $aq-sea-foam; + color: $aq-dark-abyss; + } + } //is-outlines + + } //is-seafoam + + &.large_btn { + font-size: 22px; + padding: 16px 27px; + margin-right: 12px; + + @media screen and (max-width: $tablet), print { + font-size: 18px; + } //until tablet + } + + + + &.solidseafoamarrowbutton { + + background-color: $aq-sea-foam; + font-weight: 700; + border: 2px solid $aq-sea-foam; + font-size: 22px; //1.375rem; //1.125rem; + padding: 16px 27px; + color: $aq-dark-abyss; + + + &:after { + content: ""; + border: solid $aq-dark-abyss; + border-width: 0 2px 2px 0; + display: inline-block; + padding: 4px; + transform: rotate(-45deg); + margin-left: 30px; + vertical-align: middle; + transition: all .2s; + } + } //solidseafoamarrowbutton + + } //button + + .margin-bottom-20 { + margin-bottom: 20px; + } + + .hero_wrap { + background-color: $aq-trivy-dark; + background-image: radial-gradient(1600px at 70% 120%, #031145 10%, $aq-trivy-dark 100%); + min-height: 1050px; + position: relative; + z-index: 10; + + + + + + + .homepage_background_image_wrap { + position: absolute; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 1; + pointer-events: none; + + + .stars_wrap { + position: absolute; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 1; + overflow: hidden; + + .stars_bg { + position: absolute; + width: 400vw; + height: 400vh; + top: 50%; + left: 50%; + margin-top: -200vh; + margin-left: -200vw; + animation: stars_ani 240s linear infinite; + background-size: 240px; + backface-visibility: visible; + background-image:url(../images/homepage_hero_stars_02.svg); + background-repeat: repeat; + + } + + + @keyframes stars_ani { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } + } + + } //stars_wrap + + .terrain_wrap { + position: absolute; + left: 0px; + bottom: 0px; + width: 100%; + height: 680px; + background-image:url(../images/homepage_hero_terrain_08.svg); + background-repeat: no-repeat; + background-position: center top; + background-size: cover; + z-index: 2; + } // terrain_wrap + + + .beams_wrap { + position: absolute; + left: 0px; + bottom: 0px; + width: 100%; + height: 100%; + z-index: 3; + overflow: hidden; + + .beam { + position: absolute; + right: 200px; + top: 270px; + width: 3px; + height: 350%; + background: rgba(#3eabff,0.6); + box-shadow: 0px 0px 55px 0px rgba(#3eabff,1); + transform-origin: 0 0; + animation: beam_ani 10s infinite; + + &.num2 {animation: beam_ani 11s infinite;} + &.num3 {animation: beam_ani 12s infinite;} + &.num4 {animation: beam_ani 13s infinite;} + } //beam + + @keyframes beam_ani { + 0% { transform: rotate(75deg); } + 50% { transform: rotate(-15deg); } + 100% { transform: rotate(75deg); } + } + + .sphere { + z-index:999; + position: absolute; + top: 60px; + right: 50px; + width: 280px; + height: 280px; + background-image:url(../images/homepage_hero_orb_03.png); + background-position: center center; + background-repeat: no-repeat; + } + + } //beams_wrap + + + .person_wrap { + position: absolute; + left: 0px; + bottom: 0px; + width: 100%; + height: 595px; + background-image:url(../images/homepage_v1_hero_person_01.png); + background-repeat: no-repeat; + background-position: center bottom; + z-index: 4; + + } // person_wrap + + + + } //hero_background_image_wrap + } + + + + .hero { + + + .hero-body { + padding: 80px 0px; + // border: 1px solid red; + + .header_title_wrap { + .header_title_content_wrap { + + width: 50%; + position: relative; + z-index: 3; + + .page_title { + color: #ffffff; + font-weight: $weight-bold; + font-size: 48px; //3rem; + line-height: 1.3; + }//page_title + + .page_subtitle { + color: #ffffff; + font-weight: $weight-normal; + font-size: 24px; //1.5rem; + line-height: 1.3; + margin-bottom: 30px; + } //page_subtitle + + + @media screen and (max-width: $widescreen), print { + width: 70%; + } //until widescreen + + @media screen and (max-width: $tablet), print { //769 + + width: 100%; + + .page_title { + font-size: 32px; //2rem; + }//page_title + + .page_subtitle { + font-size: 18px; //1.125rem; + }//page_subtitle + + } //until tablet + + + } //header_title_content_wrap + + } //header_title_wrap + + @media screen and (min-width: $tablet), print { //769 + padding: 48px 24px; //3rem 1.5rem; + } + } + + } //hero + + + + + + // } //page-trivy_homepage + + + + + /* homepage_community */ + .homepage_community_wrap { + position: relative; + background-color: $aq-trivy-dark; + color: #ffffff; + z-index: 5; + padding-top: 60px; + padding-bottom: 20px; + + + .container.wide_container { + max-width: 1640px; + padding-left: 20px; + padding-right: 20px; + display: flex; + flex-direction: row; + flex-wrap: wrap; + } + + + .community_titles_column { + width: 33.3333%; + padding-right: 32px; + + @media screen and (max-width: $desktop), print { + width: 41.6666666667%; + } //until desktop + + @media screen and (max-width: $tablet), print { + width: 100%; + } //until tablet + } + + .community_slider_column { + width: 66.6666%; + + @media screen and (max-width: $desktop), print { + width: 58.3333333333%; + } //until desktop + + @media screen and (max-width: $tablet), print { + width: 100%; + } //until tablet + } + + + .community_title { + color: $aq-sea-foam; + font-size: 60px; //3.75rem; + font-weight: $weight-bold; + margin-bottom: 24px; ////1.5rem; + line-height: 1.2; + + + } + + .community_subtitle { + color: #ffffff; + font-size: 26px; //1.625rem; + margin-bottom: 24px; ////1.5rem; + + + } + + .community_cta_wrap { + + .button { + font-weight: $weight-bold; + margin-right: 10px; + } + + } + + .community_quotes_wrap { + position: relative; + + + .community_quotes { + column-count: 3; + column-gap: 20px; + + @media screen and (max-width: $widescreen), print { //1216 + column-count: 2; + } + + @media screen and (max-width: $tablet), print { //769 + column-count: 1; + } + + .quote_item_wrap { + display: inline-block; + margin: 0px 0px 20px 0px; + width: 100%; + } + + .quote_item { + + display: block; + position: relative; + color: #ffffff; + border: 1px solid rgba($aq-sea-foam,0.2); + background-color: rgba($aq-sea-foam,0.05); + border-radius: 4px; + padding: 25px; + + .quote_name { + font-size: 16px; //1rem; + font-weight: $weight-semibold; + } + + .quote_twitter_handle { + opacity: 0.6; + font-size: 13px; //0.8125rem; + } + + .quote_company { + opacity: 0.6; + font-size: 13px; //0.8125rem; + } + + .quote_text { + font-size: 16px; //1rem; + font-weight: $weight-normal; + line-height: 1.3; + } + + .quote_avatar { + display: block; + position: absolute; + top: 25px; + left: 25px; + width: 40px; + height: 40px; + border-radius: 50%; + background-repeat: no-repeat; + background-position: center center; + background-size: cover; + + } + + &.is_tweet { + + .quote_text { + padding-top: 10px; + } + + + &.has_avatar { + .quote_name, + .quote_twitter_handle { + padding-left: 50px; + } + } //has_avatar + + } //&is_tweet + + &.is_quote { + + .quote_text { + position: relative; + padding-top: 40px; + padding-bottom: 10px; + + &:before { + content: ""; + display: block; + position: absolute; + top: -10px; + left: 0px; + width: 56px; + height: 42px; + background-image: url(../images/community_quote.png); + background-position: center center; + background-repeat: no-repeat; + } + } //quote_text + + } //&is_quote + + } //quote_item + + } + + } //community_quotes_wrap + + @media screen and (max-width: $tablet), print { //tablet + + .community_title { + font-size: 32px; //2rem; + } + .community_subtitle { + font-size: 18px; //1.125rem; + } + + } //until + + + } //homepage_community_wrap + +} //trivy_homepage_wrap + + + + + +/* Slider */ +.slick-slider{position:relative;display:block;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent;} +.slick-list{position:relative;display:block;overflow:hidden;margin:0;padding:0;} +.slick-list:focus{outline:none;} +.slick-list.dragging{cursor:hand;} +.slick-slider .slick-track,.slick-slider .slick-list{transform:translate3d(0,0,0);} +.slick-track{position:relative;top:0;left:0;display:block;margin-left:auto;margin-right:auto;} +.slick-track:before,.slick-track:after{display:table;content:'';} +.slick-track:after{clear:both;} +.slick-loading .slick-track{visibility:hidden;} +.slick-slide{display:none;float:left;height:100%;min-height:1px;} +.slick-slide:focus{outline:none;} +.slick-slide img{display:block;} +.slick-slide.slick-loading img{display:none;} +.slick-slide.dragging img{pointer-events:none;} +.slick-initialized .slick-slide{display:block;} +.slick-loading .slick-slide{visibility:hidden;} +.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent;} +.slick-arrow.slick-hidden{display:none;} + +.slick-arrow {display:block;background-color:transparent;border:none;color:transparent;cursor:pointer;position:absolute;top:0px;height:330px;width:80px;z-index:20;outline:none;} +.slick-arrow:focus, .slick-arrow:active {outline:none;} +.slick-arrow.slick-prev {left:0px;background-image:linear-gradient(to right, rgba($aq-neo-background,1) 0%, rgba($aq-neo-background,0) 100%);} +.slick-arrow.slick-next {right:0px;background-image:linear-gradient(to left, rgba($aq-neo-background,1) 0%, rgba($aq-neo-background,0) 100%);} +.slick-arrow:before {content:"";display:block;position:absolute;left:0px;top:0px;width:100%;height:100%;z-index:21;background-repeat:no-repeat;} +.slick-arrow.slick-prev:before {background-image:url(../images/arrow_left.png);background-position:center left;} +.slick-arrow.slick-next:before {background-image:url(../images/arrow_right.png);background-position:center right;} + + + +/* dots */ +.slick-dotted.slick-slider +{ + margin-bottom: 0px; +} + + +.slick-dots +{ + //position: absolute; + //bottom: -25px; + position: relative; + display: block; + + width: 100%; + padding: 0; + margin: 0; + + list-style: none; + + text-align: center; +} + + +.slick-dots li { + position: relative; + display: inline-block; + width: 24px; + height: 24px; + margin: 0px 4px; + padding: 0; + cursor: pointer; +} + +.slick-dots li button +{ + font-size: 0; + line-height: 0; + + display: block; + + width: 24px; + height: 24px; + padding: 0px; + + cursor: pointer; + + color: transparent; + border: 0; + outline: none; + background: transparent; + + &:before { + + position: relative; + top: 0px; + left: 0px; + width: 20px; + height: 20px; + content: ""; + background-color: transparent; + border: 2px solid $aq-sea-foam; + border-radius: 50%; + display: block; + opacity: 0.7; + } + + &:after { + + position: absolute; + top: 7px; + left: 5px; + width: 10px; + height: 10px; + content: ""; + background-color: $aq-sea-foam; + //border: 1px solid #666; + border-radius: 50%; + //box-shadow: inset 1px 1px 1px #888; + display: block; + opacity: 0; + transition: 0.2s ease-out; + + } + + + + +} +.slick-dots li button:hover, +.slick-dots li button:focus +{ + outline: none; + &:after { + opacity: 1; + } +} + +.slick-dots li.slick-active button:after { + opacity: 1; +} + + + + diff --git a/docs/assets/images/homepage_hero_orb_03.png b/docs/assets/images/homepage_hero_orb_03.png new file mode 100644 index 0000000000000000000000000000000000000000..261f40f49073ff93d592c8f2dd687189e36badcd GIT binary patch literal 28423 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 \ No newline at end of file diff --git a/docs/assets/images/homepage_hero_terrain_08.svg b/docs/assets/images/homepage_hero_terrain_08.svg new file mode 100644 index 000000000000..fe2236c99569 --- /dev/null +++ b/docs/assets/images/homepage_hero_terrain_08.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/assets/images/homepage_v1_hero_person_01.png b/docs/assets/images/homepage_v1_hero_person_01.png new file mode 100644 index 0000000000000000000000000000000000000000..2901ed862e5d1c1010fa6156ef7015cffe830f6e GIT binary patch literal 56629 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

P`o`uZ9ZJV1*U?CfQ}gUzmRV#K2(pY zOFmQW@Q0GNaEGl4=%({}`qtRi!kwXKo*%`Fb#!&XX}QwU(n(4i z8Cx))xdMV69eoi*tHIUGG))UZR@-$}d+`vzLI4{s1rwGECf#yfV`9D&<)r17rt8|hpBJAW@OwS z7)b2eM`i|JUYq*^s@Gxs@{gtR^=f7Sb+o&37)4jXNY$f%O%tTr--AG%odo9@wEpSq z+xRcn!`@zDV=a7BW1W_?QKq@wYUGfa^C@py0<@cKFJqxiJ+RHnm+qmXZs+1f5jK4X zkUr>|94V1c3(hKmC*XYN_VI1EmQ{-EoMa08Nt-a<=K4mJDeKvKbXO$}pF0XjIk^E} zdgnT_2IJeVmi2=cwe2||V$&%6s_|q5eARVorr%LJX?2-^fo&v0H-Bws_}gtT{ZZus z^*N;Ooqi~Y1NBwzymk^Zo2)tA>6U`p9QOgG>G7~6`W0UmWl0damLVx8XSx0UyI)1x z--}%QDpscSd|lRmi(xNR(V}uoXXD7s8faR$&k|4D%uLqdZ6`GMX6K3~fMfUe6j0j< zn=^#_wLI5SyDG;YW|WmpmN)v2cEOXdn^s#`c3tE#dmq(`?SCb&+GlcVN&~(M$6WN8 zCwr>0IkiQHuk%box5Nlf&9@25{2RAGs`oHDyYOX!=b>n7>ST2ndw~1OT6c49oB97A5enCk literal 0 HcmV?d00001 diff --git a/docs/assets/images/trivy_logo_horizontal_white.svg b/docs/assets/images/trivy_logo_horizontal_white.svg new file mode 100644 index 000000000000..287eb199f1e8 --- /dev/null +++ b/docs/assets/images/trivy_logo_horizontal_white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/assets/javascripts/trivy_v1_homepage.js b/docs/assets/javascripts/trivy_v1_homepage.js new file mode 100644 index 000000000000..2fdfba9a8a00 --- /dev/null +++ b/docs/assets/javascripts/trivy_v1_homepage.js @@ -0,0 +1,9 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="

",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0Previous',nextArrow:'',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(e,t){return i('