From d0571314b6f2ea2aa8f11078bf41f55fbf65ed9f Mon Sep 17 00:00:00 2001 From: William Poussier Date: Sun, 16 Jan 2022 00:09:09 +0100 Subject: [PATCH] feat: initial commit --- .github/workflows/ci.yaml | 61 + .github/workflows/release.yaml | 23 + .gitignore | 56 + .golangci.yaml | 46 + .goreleaser.yaml | 48 + .krew.yaml | 43 + LICENSE | 21 + Makefile | 55 + README.md | 70 + assets/example1.png | Bin 0 -> 110361 bytes assets/example2.png | Bin 0 -> 162924 bytes cli/command.go | 256 ++++ cli/completion.go | 29 + cli/example.txt | 8 + cli/flags.go | 90 ++ cli/table.go | 303 +++++ cli/table_test.go | 137 ++ client/client.go | 202 +++ client/flags.go | 112 ++ cmd/kubectl-commitment/kubectl-commitment.go | 79 ++ go.mod | 94 ++ go.sum | 1199 ++++++++++++++++++ internal/version/version.go | 55 + vpa/recommendation.go | 28 + vpa/resource.go | 56 + vpa/resource_test.go | 76 ++ vpa/target.go | 149 +++ 27 files changed, 3296 insertions(+) create mode 100644 .github/workflows/ci.yaml create mode 100644 .github/workflows/release.yaml create mode 100644 .gitignore create mode 100644 .golangci.yaml create mode 100644 .goreleaser.yaml create mode 100644 .krew.yaml create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 README.md create mode 100644 assets/example1.png create mode 100644 assets/example2.png create mode 100644 cli/command.go create mode 100644 cli/completion.go create mode 100644 cli/example.txt create mode 100644 cli/flags.go create mode 100644 cli/table.go create mode 100644 cli/table_test.go create mode 100644 client/client.go create mode 100644 client/flags.go create mode 100644 cmd/kubectl-commitment/kubectl-commitment.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 internal/version/version.go create mode 100644 vpa/recommendation.go create mode 100644 vpa/resource.go create mode 100644 vpa/resource_test.go create mode 100644 vpa/target.go diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..4442259 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,61 @@ +name: ci +on: + push: + branches: + - master + paths-ignore: + - '*.md' + pull_request: + branches: + - master + paths-ignore: + - '*.md' +permissions: + contents: read + pull-requests: read +jobs: + lint: + name: Linting + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Run linter + uses: golangci/golangci-lint-action@v2 + with: + version: v1.43.0 + args: -c .golangci.yaml + only-new-issues: true + test: + name: Tests + needs: + - lint + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-latest + - macos-latest + - windows-latest + go: + - "1.17.x" + steps: + - name: Install Go + uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.go }} + - name: Checkout repository + uses: actions/checkout@v2 + - uses: actions/cache@v2 + with: + path: ~/go/pkg/mod + key: ${{ matrix.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ matrix.os }}-go- + - name: Run tests + run: make test + - name: Upload coverage + uses: codecov/codecov-action@v1 + with: + file: coverage.txt \ No newline at end of file diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..0072524 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,23 @@ +name: release +on: + push: + tags: + - 'v*.*.*' +permissions: + contents: write +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.17 + - name: Run GoReleaser + run: make release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..088ad80 --- /dev/null +++ b/.gitignore @@ -0,0 +1,56 @@ +# Linux +*~ +.Trash-* + +# Mac OSX +.DS_Store +.AppleDouble +.LSOverride +._* + +# Folders +_obj +_test + +# Compiled Object files +# Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so +*.dll +*.dylib + +# Executables +*.exe +*.exe~ + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +# Cgo +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +# Go Tools +*.test +*.prof +*.out +_testmain.go + +# Dependency directories +vendor/ +Godeps/ + +# markdown-spellcheck +.spelling + +# Tests +coverage.txt + +# Build +dist/ +kubectl-commitment \ No newline at end of file diff --git a/.golangci.yaml b/.golangci.yaml new file mode 100644 index 0000000..4c99760 --- /dev/null +++ b/.golangci.yaml @@ -0,0 +1,46 @@ +run: + timeout: 10m +linters: + disable-all: true + enable: + - asciicheck + - bodyclose + - deadcode + - depguard + - dogsled + - dupl + - errcheck + - exportloopref + - funlen + - gocognit + - goconst + - gocritic + - gocyclo + - gofmt + - goimports + - goprintffuncname + - gosec + - gosimple + - govet + - ineffassign + - misspell + - nakedret + - nolintlint + - revive + - rowserrcheck + - staticcheck + - structcheck + - stylecheck + - typecheck + - unconvert + - unparam + - unused + - varcheck + - whitespace +linters-settings: + gofmt: + simplify: true + dupl: + threshold: 400 + funlen: + lines: 120 \ No newline at end of file diff --git a/.goreleaser.yaml b/.goreleaser.yaml new file mode 100644 index 0000000..8477eb7 --- /dev/null +++ b/.goreleaser.yaml @@ -0,0 +1,48 @@ +project_name: kubectl-commitment +release: + prerelease: auto + draft: true +before: + hooks: + - go mod tidy + - go mod download +builds: + - binary: kubectl-commitment + main: ./cmd/kubectl-commitment + goos: + - darwin + - linux + - windows + goarch: + - amd64 + - arm64 + ignore: + - goos: windows + goarch: arm64 + mod_timestamp: '{{ .CommitTimestamp }}' + env: + - CGO_ENABLED=0 + - GO111MODULE=on + ldflags: + - -s + - -w + - -X github.com/wI2L/kubectl-commitment/internal/version.buildDate={{ .Date }} + - -X github.com/wI2L/kubectl-commitment/internal/version.gitCommit={{ .FullCommit }} + - -X github.com/wI2L/kubectl-commitment/internal/version.gitVersion={{ .Version }} + - -X github.com/wI2L/kubectl-commitment/internal/version.gitTreeState={{ .Env.GIT_TREE_STATE }} + - -X github.com/wI2L/kubectl-commitment/internal/version.gitVersionMajor={{ .Major }} + - -X github.com/wI2L/kubectl-commitment/internal/version.gitVersionMinor={{ .Minor }} +archives: + - name_template: "{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}" + files: + - README.md + - LICENSE + format_overrides: + - goos: windows + format: zip +checksum: + name_template: "{{ .ProjectName }}_checksums.txt" +snapshot: + name_template: "{{ .Tag }}-snapshot" +changelog: + use: github \ No newline at end of file diff --git a/.krew.yaml b/.krew.yaml new file mode 100644 index 0000000..768ec87 --- /dev/null +++ b/.krew.yaml @@ -0,0 +1,43 @@ +apiVersion: krew.googlecontainertools.github.com/v1alpha2 +kind: Plugin +metadata: + name: commitment +spec: + version: {{ .TagName }} + homepage: https://github.com/wI2L/kubectl-commitment + shortDescription: Compare VerticalPodAutoscaler recommendations to actual resources requests + description: | + This plugin prints a table that show the percentage increase/decrease + of the selected VerticalPodAutoscaler recommendations compared to the + targeted controller's pod resource requests. + platforms: + - selector: + matchLabels: + os: darwin + arch: amd64 + {{addURIAndSha "https://github.com/wI2L/kubectl-commitment/releases/download/{{ .TagName }}/kubectl-commitment_darwin_amd64.tar.gz" .TagName }} + bin: kubectl-commitment + - selector: + matchLabels: + os: darwin + arch: arm64 + {{addURIAndSha "https://github.com/wI2L/kubectl-commitment/releases/download/{{ .TagName }}/kubectl-commitment_darwin_arm64.tar.gz" .TagName }} + bin: kubectl-commitment + - selector: + matchLabels: + os: linux + arch: amd64 + {{addURIAndSha "https://github.com/wI2L/kubectl-commitment/releases/download/{{ .TagName }}/kubectl-commitment_linux_amd64.tar.gz" .TagName }} + bin: kubectl-commitment + - selector: + matchLabels: + os: linux + arch: arm64 + {{addURIAndSha "https://github.com/wI2L/kubectl-commitment/releases/download/{{ .TagName }}/kubectl-commitment_linux_arm64.tar.gz" .TagName }} + bin: kubectl-commitment + - selector: + matchLabels: + os: windows + arch: amd64 + {{addURIAndSha "https://github.com/wI2L/kubectl-commitment/releases/download/{{ .TagName }}/kubectl-commitment_windows_amd64.zip" .TagName }} + bin: kubectl-commitment.exe diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..71052db --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 William Poussier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..7dda150 --- /dev/null +++ b/Makefile @@ -0,0 +1,55 @@ +DISTDIR = dist + +# Utility versions. +GORELEASER_VERSION = "v1.3.1" +GOLANGCI_LINT_VERSION = "v1.43.0" + +# Build variables. +GIT_TREE_STATE=$(if $(shell git status --porcelain),dirty,clean) + +.PHONY: bootstrap +# Download and install all go dependencies and tools. +bootstrap: $(RESULTSDIR) bootstrap-go install-tools + +.PHONY: bootstrap-go +bootstrap-go: + go mod download + +.PHONY: install-tools +install-tools: install-goreleaser install-golangci-lint + +.PHONY: install-goreleaser +install-goreleaser: + go install github.com/goreleaser/goreleaser@$(GORELEASER_VERSION) + +.PHONY: install-golangci-lint +install-golangci-lint: + go install github.com/golangci/golangci-lint/cmd/golangci-lint@$(GOLANGCI_LINT_VERSION) + +.PHONY: test +test: + go test -v -race -coverprofile=coverage.txt -covermode=atomic ./... + +.PHONY: lint +lint: + golangci-lint run --tests=false --timeout 5m --config .golangci.yaml + +.PHONY: build +build: install-goreleaser + GIT_TREE_STATE=$(GIT_TREE_STATE) goreleaser build --rm-dist --single-target + +.PHONY: release +release: install-goreleaser + GIT_TREE_STATE=$(GIT_TREE_STATE) goreleaser release --rm-dist + +.PHONY: release-snapshot +release-snapshot: install-goreleaser + GIT_TREE_STATE=$(GIT_TREE_STATE) goreleaser release --rm-dist --skip-publish --snapshot + +.PHONY: clean-dist +clean-dist: + rm -rf $(DISTDIR) + +.PHONY: clean +clean: clean-dist + rm -f coverage.txt \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..88738a2 --- /dev/null +++ b/README.md @@ -0,0 +1,70 @@ +# kubectl commitment + +

+ + + + +

+ +A `kubectl` plugin to show the difference between the recommendations of a `VerticalPodAutoscaler` and the actual resources requests of the targeted controller's pod(s). + +The plugin is compatible with Kubernetes servers starting from version 1.16, which have the `autoscaling.k8s.io/v1` API group installed. See the other [pre-requisites](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#prerequisites) for using VPAs on your cluster. + +## Installation + +### Manual download + +Head to the [releases](https://github.com/wI2L/kubectl-commitment/releases) page to download an existing release for your OS/arch, and add the path to the binary to your `$PATH`. + +### Build from source + +:warning: `kubectl-commitment` requires [Go 1.17+](https://golang.org/doc/install) to build. + +To build the plugin yourself from the source, use the following commands: + +```shell +$ git clone git@github.com:wI2L/kubectl-commitment.git +$ cd kubectl-commitment +$ make build +``` + +It creates a single binary file for the host machine platform/architecture in the `dist/` folder. Move it somewhere within your `$PATH`, such as `$GOPATH/bin`. You can then invoke it directly (`kubectl-commitment`), or via `kubectl` (`kubectl commitment`). + +## Usage + +### Demo + +The following examples were produced from a brand-new Kubernetes cluster created with [`k3d`](https://k3d.io/v5.2.2/). The `VerticalPodAutoscaler` resources were automatically created by the [`goldilocks`](https://github.com/FairwindsOps/goldilocks) operator. + +#### Single namespace + +![example1](assets/example1.png) + +#### Wide output (all namespaces) + +![example2](assets/example2.png) + +### Options + +Apart from the flags defined by the [`genericclioptions`](https://k8s.io/cli-runtime/pkg/genericclioptions) package and some [logging flags](https://github.com/kubernetes/enhancements/tree/master/keps/sig-instrumentation/2845-deprecate-klog-specific-flags-in-k8s-components), the following options are available with the plugin: +- `--all-namespaces`, `-A`: List `VerticalPodAutoscaler` resources in all namespaces +- `--namespace`, `-n`: If present, the namespace scope for the request +- `--no-colors`: Do not use colors to highlight increase/decrease percentage values +- `--no-headers`: Do not print table headers +- `--output`, `-o`: Output format. Empty string or `wide` +- `--show-containers`, `-c`: Display containers recommendations for each `VerticalPodAutoscaler` resource +- `--show-kind`, `-k`: Show the resource type for the requested object(s) and their target +- `--show-namespace`: Show namespace as the first column +- `--sort-columns`: Comma-separated List of column names for sorting the table. Default to `namespace,name` +- `--sort-order`: The sort order of the table columns. Either `asc` or `desc`. Default to `asc` + +To view the full list of available options, use the following command: + +```shell +$ kubectl commitment --help +``` + +## License + +This plugin is licensed under the **MIT** license. See the [LICENSE](LICENSE) file. \ No newline at end of file diff --git a/assets/example1.png b/assets/example1.png new file mode 100644 index 0000000000000000000000000000000000000000..e546c3db14a40c437f0a025d8e27069bc959d1e8 GIT binary patch literal 110361 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Μ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 literal 0 HcmV?d00001 diff --git a/assets/example2.png b/assets/example2.png new file mode 100644 index 0000000000000000000000000000000000000000..e1fea517092d194c252f0991e466f5f872932949 GIT binary patch literal 162924 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

XcObg##P!RFr0=78HuJl{E3p&?8PA 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�Xh3n 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 literal 0 HcmV?d00001 diff --git a/cli/command.go b/cli/command.go new file mode 100644 index 0000000..361ff5b --- /dev/null +++ b/cli/command.go @@ -0,0 +1,256 @@ +package cli + +import ( + "context" + // Embed command example. + _ "embed" + "fmt" + "strings" + "time" + + "github.com/spf13/cobra" + vpav1 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1" + "k8s.io/cli-runtime/pkg/genericclioptions" + "k8s.io/klog/v2" + "k8s.io/kubectl/pkg/cmd/get" + cmdutil "k8s.io/kubectl/pkg/cmd/util" + "k8s.io/kubectl/pkg/util" + "k8s.io/kubectl/pkg/util/templates" + "k8s.io/utils/pointer" + + "github.com/wI2L/kubectl-commitment/client" + "github.com/wI2L/kubectl-commitment/internal/version" + "github.com/wI2L/kubectl-commitment/vpa" +) + +const ( + vpaPlural = "verticalpodautoscalers" + cmdShort = "Compare VerticalPodAutoscaler recommendations to actual resources requests" + defaultTimeout = 15 * time.Second +) + +//go:embed example.txt +var cmdExample string + +// CommandOptions represents the options of the command. +type CommandOptions struct { + Flags *Flags + Client client.Interface + ClientFlags *client.Flags + Namespace string + ResourceNames []string + + genericclioptions.IOStreams +} + +// NewCmd returns a new initialized command. +func NewCmd(streams genericclioptions.IOStreams, name string) *cobra.Command { + opts := CommandOptions{ + Flags: DefaultFlags(), + ClientFlags: client.DefaultFlags(), + IOStreams: streams, + } + f := cmdutil.NewFactory(opts.ClientFlags) + + // Register factory for functions called + // to autocomplete the client config flags. + util.SetFactoryForCompletion(f) + + cmd := &cobra.Command{ + Use: fmt.Sprintf("%s [NAME...] [options]", name), + Short: cmdShort, + Long: cmdShort, + Example: fmt.Sprintf(cmdExample, name), + Args: cobra.ArbitraryArgs, + Version: version.Get().Raw(), + SilenceUsage: true, + DisableFlagsInUseLine: true, + DisableSuggestions: true, + DisableAutoGenTag: true, + Run: opts.Run, + ValidArgsFunction: func(cmd *cobra.Command, args []string, tc string) ([]string, cobra.ShellCompDirective) { + comps := get.CompGetResource(f, cmd, vpaPlural, tc) + return comps, cobra.ShellCompDirectiveNoFileComp + }, + } + cmd.SetVersionTemplate("{{printf \"%s\" .Version}}\n") + + // Bind client config and common flags + // to the command's flag set. + opts.ClientFlags.AddFlags(cmd.Flags()) + opts.Flags.AddFlags(cmd.Flags()) + + // Replace the default flags added by cobra. + cmd.Flags().Bool("version", false, "Print the command version and exit") + cmd.Flags().BoolP("help", "h", false, "Print the command help and exit") + + // Register autocompletion functions. + opts.ClientFlags.RegisterCompletionFunc(cmd, f) + _ = cmd.RegisterFlagCompletionFunc(flagSortColumns, getSortColumnsComps) + + return templates.Normalize(cmd) +} + +// Run is the method called by cobra to run the command. +func (co *CommandOptions) Run(c *cobra.Command, args []string) { + cmdutil.CheckErr(co.Complete(c, args)) + cmdutil.CheckErr(co.Validate(c, args)) + cmdutil.CheckErr(co.Execute()) +} + +// Complete finishes the setup of the command options. +func (co *CommandOptions) Complete(_ *cobra.Command, _ []string) error { + rawConfig := co.ClientFlags.ToRawKubeConfigLoader() + + ns, override, err := rawConfig.Namespace() + if err != nil { + return err + } + if override { + klog.V(4).Infof("namespace override: %s", ns) + } + co.Namespace = ns + co.Client, err = co.ClientFlags.NewClient() + if err != nil { + return fmt.Errorf("couldn't create client: %w", err) + } + return nil +} + +// Validate ensure that required options to run the +// command are set and valid. +func (co *CommandOptions) Validate(_ *cobra.Command, args []string) error { + for i, v := range args { + if trimmed := strings.TrimSpace(v); trimmed == "" { + klog.Warningf("arg #%d is empty, skipping", i) + } else { + co.ResourceNames = append(co.ResourceNames, trimmed) + } + } + klog.V(4).Infof("namespace: %s", co.Namespace) + klog.V(4).Infof("all namespaces: %b", co.Flags.AllNamespaces) + klog.V(4).Infof("resource names: %s", strings.Join(co.ResourceNames, ", ")) + + return nil +} + +// Execute runs the command. +func (co *CommandOptions) Execute() error { + ctx := context.Background() + + // Check if the cluster is reachable and + // has the required CustomResourceDefinition. + err := co.Client.IsClusterReachable() + if err != nil { + return err + } + gv := vpav1.SchemeGroupVersion + ok, err := co.Client.HasGroupVersion(gv) + if err != nil { + return err + } + if !ok { + return fmt.Errorf("group %s not available", gv.String()) + } + vpas, err := co.Client.ListVPAResources(ctx, client.ListOptions{ + Namespace: co.Namespace, + AllNamespaces: co.Flags.AllNamespaces, + ResourceNames: co.ResourceNames, + LabelSelector: co.Flags.LabelSelector, + FieldSelector: co.Flags.FieldSelector, + TimeoutSeconds: pointer.Int64(int64(defaultTimeout.Seconds())), + Limit: 250, + }) + if err != nil { + return err + } + if len(vpas) == 0 { + if co.Flags.AllNamespaces { + fmt.Println("No VPA resources found.") + } else { + fmt.Printf("No VPA resources found in %s namespace.\n", co.Namespace) + } + return nil + } + klog.V(4).Infof("fetched %d VPA(s)", len(vpas)) + + table := co.bindRecommendationsAndRequests(vpas) + table.SortBy(co.Flags.SortOrder, co.Flags.SortColumns...) + + return table.Print(co.Out, co.Flags) +} + +// bindRecommendationsAndRequests returns a table that bind the +// recommendations of the VPA in the list to the actual resource +// requests of their target controller's pods. +func (co *CommandOptions) bindRecommendationsAndRequests(list []*vpav1.VerticalPodAutoscaler) table { + var table table + + for _, v := range list { + ref := v.Spec.TargetRef + if ref == nil { + klog.V(4).Infof("vpa %s/%s has no target", v.Namespace, v.Name) + continue + } + tc, err := vpa.NewTargetController(co.Client, v.Spec.TargetRef, v.Namespace) + if err != nil { + klog.V(4).Infof("couldn't get target for vpa %s/%s", v.Namespace, v.Name) + continue + } + row := newTableRow(v, tc, v.Name) + table = append(table, row) + + if v.Status.Recommendation != nil && len(v.Status.Recommendation.ContainerRecommendations) > 1 { + if !co.Flags.ShowContainers { + continue + } + for i, c := range v.Status.Recommendation.ContainerRecommendations { + prefix := treeElemPrefix + + if i == len(v.Status.Recommendation.ContainerRecommendations)-1 { + prefix = treeLastElemPrefix + } + rqs := tc.GetContainerRequests(c.ContainerName) + rcs := vpa.ResourceQuantities{ + CPU: c.Target.Cpu(), + Memory: c.Target.Memory(), + } + childRow := &tableRow{ + Name: fmt.Sprintf("%s %s", prefix, c.ContainerName), + Requests: rqs, + Recommendations: &rcs, + CPUDifference: vpa.DiffQuantitiesAsPercent(rqs.CPU, rcs.CPU), + MemoryDifference: vpa.DiffQuantitiesAsPercent(rqs.Memory, rcs.Memory), + } + row.Children = append(row.Children, childRow) + } + } + } + return table +} + +func newTableRow(v *vpav1.VerticalPodAutoscaler, tc *vpa.TargetController, name string) *tableRow { + rqs := tc.GetRequests() + rcs := vpa.GetTotalRecommendations(v) + + row := &tableRow{ + Name: name, + Namespace: v.Namespace, + GVK: v.GroupVersionKind(), + Mode: updateModeFromSpec(v.Spec.UpdatePolicy), + TargetName: tc.Name, + TargetGVK: tc.GroupVersionKind, + Requests: rqs, + Recommendations: rcs, + CPUDifference: vpa.DiffQuantitiesAsPercent(rqs.CPU, rcs.CPU), + MemoryDifference: vpa.DiffQuantitiesAsPercent(rqs.Memory, rcs.Memory), + } + return row +} + +func updateModeFromSpec(spec *vpav1.PodUpdatePolicy) string { + if spec != nil && spec.UpdateMode != nil { + return string(*spec.UpdateMode) + } + return tableUnsetCell +} diff --git a/cli/completion.go b/cli/completion.go new file mode 100644 index 0000000..14d0b33 --- /dev/null +++ b/cli/completion.go @@ -0,0 +1,29 @@ +package cli + +import ( + "sort" + "strings" + + "github.com/spf13/cobra" + cmdutil "k8s.io/kubectl/pkg/cmd/util" +) + +// getSortColumnsComps returns the completions +// available for the SortColumn flag. +// TODO(will): add description to completions +func getSortColumnsComps(_ *cobra.Command, _ []string, tc string) ([]string, cobra.ShellCompDirective) { + names := make([]string, 0, len(columnLessFunc)) + + for name := range columnLessFunc { + names = append(names, name) + } + sort.Strings(names) + return filterStringSliceFlagComps(names, tc), cobra.ShellCompDirectiveDefault +} + +// filterStringSliceFlagComps filters out the completions +// already present in the original comma-separated string. +func filterStringSliceFlagComps(allComps []string, tc string) []string { + current := strings.Split(tc, ",") + return cmdutil.Difference(allComps, current) +} diff --git a/cli/example.txt b/cli/example.txt new file mode 100644 index 0000000..5101399 --- /dev/null +++ b/cli/example.txt @@ -0,0 +1,8 @@ +# Compare all VPA recommendations in the current namespace, sorted by name +%[1]s --sort-columns=name + +# Compare recommendations for the VPA foo in namespace bar +%[1]s -n bar foo + +# Compare VPA recommendations in all namespaces, while showing the namespace column +%[1]s -A --show-namespace \ No newline at end of file diff --git a/cli/flags.go b/cli/flags.go new file mode 100644 index 0000000..423dbde --- /dev/null +++ b/cli/flags.go @@ -0,0 +1,90 @@ +package cli + +import ( + "github.com/spf13/pflag" +) + +const ( + flagAllNamespaces = "all-namespaces" + flagAllNamespacesShorthand = "A" + flagShowNamespace = "show-namespace" + flagShowKind = "show-kind" + flagShowKindShorthand = "k" + flagShowContainers = "show-containers" + flagShowContainersShorthand = "c" + flagNoColors = "no-colors" + flagNoHeaders = "no-headers" + flagSortOrder = "sort-order" + flagSortColumns = "sort-columns" + flagLabelSelector = "selector" + flagLabelSelectorShorthand = "l" + flagFieldSelector = "field-selector" + flagOutput = "output" + flagOutputShorthand = "o" +) + +var ( + defaultSortOrder = orderAsc + defaultSortColumns = []string{"namespace", "name"} +) + +// Flags represents the common command flags. +type Flags struct { + AllNamespaces bool + ShowNamespace bool + ShowKind bool + ShowContainers bool + NoColors bool + NoHeaders bool + SortOrder sortOrder + SortColumns []string + LabelSelector string + FieldSelector string + Output string +} + +// DefaultFlags returns default command flags. +func DefaultFlags() *Flags { + f := &Flags{ + SortOrder: defaultSortOrder, + SortColumns: defaultSortColumns, + } + return f +} + +// AddFlags binds the command flags to the given pflag.FlagSet. +func (f *Flags) AddFlags(flags *pflag.FlagSet) { + flags.BoolVarP(&f.AllNamespaces, flagAllNamespaces, flagAllNamespacesShorthand, f.AllNamespaces, + "List VPA resources in all namespaces") + + flags.BoolVar(&f.ShowNamespace, flagShowNamespace, f.ShowNamespace, + "Show namespace as the first column") + + flags.BoolVarP(&f.ShowKind, flagShowKind, flagShowKindShorthand, f.ShowKind, + "List the resource type for the requested object(s) and their target") + + flags.BoolVarP(&f.ShowContainers, flagShowContainers, flagShowContainersShorthand, f.ShowContainers, + "Display containers recommendations for each VPA resource") + + flags.BoolVar(&f.NoColors, flagNoColors, f.NoColors, + "Do not use colors to highlight increase/decrease percentage values") + + flags.BoolVar(&f.NoHeaders, flagNoHeaders, f.NoHeaders, + "Do not print table headers") + + flags.Var(&f.SortOrder, flagSortOrder, + "The sort order of the table columns. Either 'asc' or 'desc'") + + flags.StringSliceVar(&f.SortColumns, flagSortColumns, f.SortColumns, + "List of column names for sorting the table") + + flags.StringVarP(&f.LabelSelector, flagLabelSelector, flagLabelSelectorShorthand, f.LabelSelector, + "Selector (label query) to filter on, supports '=', '==', and '!=' (e.g. -l key1=value1,key2=value2)") + + flags.StringVar(&f.FieldSelector, flagFieldSelector, f.FieldSelector, + "Selector (field query) to filter on, supports '=', '==', and '!=' (e.g. --field-selector key1=value1,key2=value2)") + + flags.StringVarP(&f.Output, flagOutput, flagOutputShorthand, f.Output, + "Output format. Empty string or 'wide'", + ) +} diff --git a/cli/table.go b/cli/table.go new file mode 100644 index 0000000..6fa2d59 --- /dev/null +++ b/cli/table.go @@ -0,0 +1,303 @@ +package cli + +import ( + "fmt" + "io" + "math" + "sort" + "strings" + + "github.com/muesli/termenv" + "github.com/olekukonko/tablewriter" + "k8s.io/apimachinery/pkg/api/resource" + "k8s.io/apimachinery/pkg/runtime/schema" + + "github.com/wI2L/kubectl-commitment/vpa" +) + +const ( + treeElemPrefix = `├─` + treeLastElemPrefix = `└─` + tableUnsetCell = `-` + wideOutput = "wide" +) + +type sortOrder string + +const ( + orderAsc sortOrder = "asc" + orderDesc sortOrder = "desc" +) + +// String implements the pflag.Value interface. +func (so sortOrder) String() string { return string(so) } + +// Type implements the pflag.Value interface. +func (so *sortOrder) Type() string { return "string" } + +// Set implements the pflag.Value interface. +func (so *sortOrder) Set(s string) error { + switch sortOrder(s) { + case orderAsc, orderDesc: + *so = sortOrder(s) + return nil + default: + return fmt.Errorf("must be either %q or %q", orderAsc, orderDesc) + } +} + +// tableRow represents a single row of a table. +type tableRow struct { + Name string + Namespace string + GVK schema.GroupVersionKind + Mode string + TargetName string + TargetGVK schema.GroupVersionKind + Requests *vpa.ResourceQuantities + Recommendations *vpa.ResourceQuantities + CPUDifference *float64 + MemoryDifference *float64 + Children []*tableRow +} + +func (tr tableRow) toTableData(flags *Flags, isChild bool) []string { + rowData := make([]string, 0, 9) + + name := tr.Name + targetName := tr.TargetName + + if flags.ShowKind && !isChild { + name = fmt.Sprintf( + "%s/%s", + termenv.String(strings.ToLower(tr.GVK.GroupKind().String())).Faint(), + name, + ) + targetName = fmt.Sprintf( + "%s/%s", + termenv.String(strings.ToLower(tr.TargetGVK.GroupKind().String())).Faint(), + targetName, + ) + } + if flags.ShowNamespace { + rowData = append(rowData, tr.Namespace) + } + rowData = append(rowData, + name, + tr.Mode, + targetName, + ) + if flags.Output == wideOutput { + rowData = append(rowData, + formatQuantity(tr.Requests.CPU), + formatQuantity(tr.Recommendations.CPU), + ) + } + rowData = append(rowData, formatPercentage(tr.CPUDifference, flags.NoColors)) + if flags.Output == wideOutput { + rowData = append(rowData, + formatQuantity(tr.Requests.Memory), + formatQuantity(tr.Recommendations.Memory), + ) + } + rowData = append(rowData, formatPercentage(tr.MemoryDifference, flags.NoColors)) + return rowData +} + +type ( + table []*tableRow + lessFunc func(r1, r2 *tableRow) int +) + +// Len implements the sort.Len interface. +func (t table) Len() int { return len(t) } + +// Swap implements the sort.Len interface. +func (t table) Swap(i, j int) { t[i], t[j] = t[j], t[i] } + +// SortBy sorts the table by one or more columns. +func (t table) SortBy(order sortOrder, cols ...string) { + mts := multiTableSorter{ + less: make([]lessFunc, 0, len(cols)), + order: order, + table: t, + } + for _, c := range cols { + if fn, ok := columnLessFunc[c]; ok { + mts.less = append(mts.less, fn) + } + } + sort.Stable(mts) +} + +const ( + hdrNamespace = "Namespace" // The namespace of the VPA resource + hdrName = "Name" // the [type].name of the VPA resource + hdrMode = "Mode" // the mode of the VPA resource + hdrTarget = "Target" // the [type].name of the target controller + hdrCPURequest = "CPU Request" // the CPU request of the pod + hdrCPUTarget = "CPU Target" // the CPU recommendation target + hdrCPUDifference = "% CPU Diff" // the % difference between CPU request/recommendation + hdrMemRequest = "Memory Request" // the Memory request of the pod + hdrMemTarget = "Memory Target" // the Memory recommendation target + hdrMemDifference = "% Memory Diff" // the % difference between memory request/recommendation +) + +// Print writes the table to w. +func (t table) Print(w io.Writer, flags *Flags) error { + tw := tablewriter.NewWriter(w) + setKubectlTableFormat(tw) + + if !flags.NoHeaders { + var headers []string + if flags.ShowNamespace { + headers = append(headers, hdrNamespace) + } + headers = append(headers, hdrName, hdrMode, hdrTarget) + if flags.Output == wideOutput { + headers = append(headers, hdrCPURequest, hdrCPUTarget) + } + headers = append(headers, hdrCPUDifference) + if flags.Output == wideOutput { + headers = append(headers, hdrMemRequest, hdrMemTarget) + } + headers = append(headers, hdrMemDifference) + tw.SetHeader(headers) + } + for _, row := range t { + tw.Append(row.toTableData(flags, false)) + for _, childRow := range row.Children { + tw.Append(childRow.toTableData(flags, true)) + } + } + tw.Render() + + return nil +} + +// setKubectlTableFormat configures the given writer +// to print according to the Kubectl output format. +func setKubectlTableFormat(t *tablewriter.Table) { + t.SetAutoWrapText(false) + t.SetAutoFormatHeaders(true) + t.SetNoWhiteSpace(true) + t.SetHeaderLine(false) + t.SetHeaderAlignment(tablewriter.ALIGN_LEFT) + t.SetAlignment(tablewriter.ALIGN_LEFT) + t.SetCenterSeparator("") + t.SetColumnSeparator("") + t.SetRowSeparator("") + t.SetTablePadding(" ") + t.SetBorder(false) +} + +// multiTableSorter implements the sort.Sort interface +// for a table. It can sort using different sets of +// multiple fields in the comparison. +type multiTableSorter struct { + table + less []lessFunc + order sortOrder +} + +// Less implements the sort.Interface for multiTableSorter. +func (mts multiTableSorter) Less(i, j int) bool { + r1, r2 := mts.table[i], mts.table[j] + + for _, lessFn := range mts.less { + switch x := lessFn(r1, r2); x { + case -1: // r1 placed before + return withOrder(true, mts.order) + case 1: // r2 placed before + return withOrder(false, mts.order) + default: + continue + } + } + // At this point, all comparisons returned 0 + // to indicate equality, so just return false. + return false +} + +var columnLessFunc = map[string]lessFunc{ + "name": func(r1, r2 *tableRow) int { return strings.Compare(r1.Name, r2.Name) }, + "namespace": func(r1, r2 *tableRow) int { return strings.Compare(r1.Namespace, r2.Namespace) }, + "target": func(r1, r2 *tableRow) int { return strings.Compare(r1.TargetName, r2.TargetName) }, + "cpu-diff": func(r1, r2 *tableRow) int { return compareFloat64(r1.CPUDifference, r2.CPUDifference) }, + "mem-diff": func(r1, r2 *tableRow) int { return compareFloat64(r1.MemoryDifference, r2.MemoryDifference) }, + "cpu-req": func(r1, r2 *tableRow) int { return compareQuantities(r1.Requests.CPU, r2.Requests.CPU) }, + "mem-req": func(r1, r2 *tableRow) int { return compareQuantities(r1.Requests.Memory, r2.Requests.Memory) }, + "cpu-rec": func(r1, r2 *tableRow) int { return compareQuantities(r1.Recommendations.CPU, r2.Recommendations.CPU) }, + "mem-rec": func(r1, r2 *tableRow) int { + return compareQuantities(r1.Recommendations.Memory, r2.Recommendations.Memory) + }, +} + +func formatPercentage(f *float64, noColors bool) string { + if f == nil { + return tableUnsetCell + } + n := fmt.Sprintf("%+.2f", *f) + + if termenv.EnvNoColor() || noColors { + return n + } + p := termenv.ColorProfile() + s := termenv.String(n) + + switch { + case *f >= -10 && *f <= 20: + s = s.Foreground(p.Color("#A8CC8C")) + case (*f > 20 && *f < 50) || (*f < -10 && *f > -50): + s = s.Foreground(p.Color("#DBAB79")) + default: + s = s.Foreground(p.Color("#E88388")) + } + return s.Bold().String() +} + +func formatQuantity(q *resource.Quantity) string { + if q == nil || q.IsZero() { + return tableUnsetCell + } + return q.String() +} + +func compareFloat64(f1, f2 *float64) int { + switch { + case f1 == nil && f2 == nil: + return 0 + case f1 == nil: + return 1 + case f2 == nil: + return -1 + case *f1 == *f2: + return 0 + case *f1 < *f2 || (math.IsNaN(*f1) && !math.IsNaN(*f2)): + return -1 + } + return 1 +} + +func compareQuantities(q1, q2 *resource.Quantity) int { + switch { + case q1 == nil && q2 == nil: + return 0 + case q1 == nil: + return 1 + case q2 == nil: + return -1 + } + return q1.Cmp(*q2) +} + +func withOrder(b bool, order sortOrder) bool { + switch order { + case orderAsc: + return b + case orderDesc: + return !b + default: + return b + } +} diff --git a/cli/table_test.go b/cli/table_test.go new file mode 100644 index 0000000..e3300c3 --- /dev/null +++ b/cli/table_test.go @@ -0,0 +1,137 @@ +package cli + +import ( + "bytes" + "fmt" + "testing" + "text/tabwriter" + + "k8s.io/utils/pointer" +) + +func TestSortTable(t *testing.T) { + table := table{ + { + Name: "zeus", + Namespace: "athens", + CPUDifference: pointer.Float64(3.14), + MemoryDifference: pointer.Float64(12.34), + }, + { + Name: "hera", + Namespace: "sparta", + CPUDifference: pointer.Float64(1.43), + MemoryDifference: pointer.Float64(-6.72), + }, + { + Name: "poseidon", + Namespace: "corinth", + CPUDifference: pointer.Float64(-2.50), + MemoryDifference: pointer.Float64(8.9), + }, + { + Name: "demeter", + Namespace: "pergamon", + CPUDifference: nil, + MemoryDifference: pointer.Float64(0.45), + }, + { + Name: "athena", + Namespace: "athens", + CPUDifference: nil, + MemoryDifference: nil, + }, + { + Name: "apollo", + Namespace: "olympia", + CPUDifference: pointer.Float64(10.21), + MemoryDifference: pointer.Float64(13.37), + }, + { + Name: "artemis", + Namespace: "thebes", + CPUDifference: pointer.Float64(-0.01), + MemoryDifference: pointer.Float64(7.43), + }, + { + Name: "hermes", + Namespace: "sparta", + CPUDifference: pointer.Float64(-100.43), + MemoryDifference: nil, + }, + { + Name: "dionysus", + Namespace: "corinth", + CPUDifference: pointer.Float64(-250.00), + MemoryDifference: pointer.Float64(666.66), + }, + } + table.SortBy(orderAsc, "namespace", "name") + + orderedRows := []struct{ name, namespace string }{ + { + "athens", + "athena", + }, + { + "athens", + "zeus", + }, + { + "corinth", + "dionysus", + }, + { + "corinth", + "poseidon", + }, + { + "olympia", + "apollo", + }, + { + "pergamon", + "demeter", + }, + { + "sparta", + "hera", + }, + { + "sparta", + "hermes", + }, + { + "thebes", + "artemis", + }, + } + for i, v := range orderedRows { + if v.name != table[i].Namespace { + t.Errorf("expected name %s, got %s", v.name, table[i].Name) + } + if v.name != table[i].Namespace { + t.Errorf("expected namespace %s, got %s", v.name, table[i].Name) + } + } + var buf bytes.Buffer + w := tabwriter.NewWriter(&buf, 1, 0, 2, ' ', 0) + + for _, row := range table { + _, err := fmt.Fprintf(w, "%s\t%s\t%s\t%s\n", row.Namespace, row.Name, fts(row.CPUDifference), fts(row.MemoryDifference)) + if err != nil { + t.Error(err) + } + } + if err := w.Flush(); err != nil { + t.Error(err) + } + t.Logf("\n%s", buf.String()) +} + +func fts(f *float64) string { + if f == nil { + return "-" + } + return fmt.Sprintf("%+.2f", *f) +} diff --git a/client/client.go b/client/client.go new file mode 100644 index 0000000..be895eb --- /dev/null +++ b/client/client.go @@ -0,0 +1,202 @@ +package client + +import ( + "context" + "fmt" + "sync" + + autoscalingv1 "k8s.io/api/autoscaling/v1" + apierrors "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + unstructuredv1 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + vpav1 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1" + "k8s.io/cli-runtime/pkg/resource" + "k8s.io/client-go/discovery" + "k8s.io/client-go/dynamic" +) + +const vpaKind = "VerticalPodAutoscaler" + +// ListOptions represents the options for listing resources. +type ListOptions struct { + Namespace string + AllNamespaces bool + ResourceNames []string + FieldSelector string + LabelSelector string + TimeoutSeconds *int64 + Limit int64 +} + +// Interface captures the methods of a client used to +// interact with a Kubernetes cluster. +type Interface interface { + GetRESTMapper() (meta.RESTMapper, error) + IsClusterReachable() error + HasGroupVersion(version schema.GroupVersion) (bool, error) + ListVPAResources(context.Context, ListOptions) ([]*vpav1.VerticalPodAutoscaler, error) + GetVPATarget(context.Context, *autoscalingv1.CrossVersionObjectReference, string) (*unstructuredv1.Unstructured, error) +} + +var _ Interface = (*client)(nil) + +// client is a concrete implementation of a Kubernetes +// client configured from the common command-line flags. +type client struct { + flags *Flags + dynamicClient dynamic.Interface + discoveryClient discovery.DiscoveryInterface + mapper meta.RESTMapper + + // lock during lazy init of the client + sync.Mutex +} + +// GetRESTMapper returns a new REST mapper to map the +// types defined in a runtime.Scheme to REST endpoints. +func (c *client) GetRESTMapper() (meta.RESTMapper, error) { + c.Lock() + defer c.Unlock() + if c.mapper != nil { + return c.mapper, nil + } + mapper, err := c.flags.ToRESTMapper() + if err != nil { + return nil, fmt.Errorf("cannot create REST mapper: %w", err) + } + return mapper, err +} + +// IsClusterReachable tests the connectivity to the remote +// Kubernetes cluster used by the current client. +func (c *client) IsClusterReachable() error { + _, err := c.discoveryClient.ServerVersion() + if err != nil { + reason := apierrors.ReasonForError(err) + return fmt.Errorf("cluster unavailable (%s): %w", reason, err) + } + return nil +} + +// HasGroupVersion returns whether the remote Kubernetes +// cluster has the CustomResourceDefinitions of the given +// GroupVersion API. +func (c *client) HasGroupVersion(gv schema.GroupVersion) (bool, error) { + apiGroups, err := c.discoveryClient.ServerGroups() + if err != nil { + return false, fmt.Errorf("couldn't get available api groups/versions from server: %w", err) + } + for _, g := range apiGroups.Groups { + // The group is the same for all known versions: v1, v1beta1, v1beta2 + // so we can use the variable from any package. + if g.Name == gv.Group { + return hasMatchingGroupVersions(g.Versions, gv.Version), nil + } + } + return false, nil +} + +// ListVPAResources returns the list of VerticalPodAutoscaler +// resources that match the listing options parameters. +func (c *client) ListVPAResources(_ context.Context, opts ListOptions) ([]*vpav1.VerticalPodAutoscaler, error) { + b := resource.NewBuilder(c.flags) + r := b.Unstructured(). + NamespaceParam(opts.Namespace). + AllNamespaces(opts.AllNamespaces). + LabelSelectorParam(opts.LabelSelector). + FieldSelectorParam(opts.FieldSelector). + RequestChunksOf(opts.Limit). + ResourceTypeOrNameArgs(true, append([]string{vpaKind}, opts.ResourceNames...)...). + SingleResourceType(). + RequireObject(true). + ContinueOnError(). + Flatten(). + Latest(). + Do() + + if err := r.Err(); err != nil { + return nil, err + } + infos, err := r.Infos() + if err != nil || infos == nil { + return nil, err + } + conv := runtime.DefaultUnstructuredConverter + vpas := make([]*vpav1.VerticalPodAutoscaler, len(infos)) + + for i, v := range infos { + // v.Object cannot be nil when the builder was + // created with the RequireObject(true) method. + u, ok := v.Object.(*unstructuredv1.Unstructured) + if !ok { + return nil, fmt.Errorf("unexpected result type: %T", v) + } + vpas[i] = &vpav1.VerticalPodAutoscaler{} + if err := conv.FromUnstructured(u.Object, vpas[i]); err != nil { + return nil, err + } + } + return vpas, nil +} + +// GetVPATarget fetches the controller targeted by the given VPA reference +// and return a generic unstructured object. +func (c *client) GetVPATarget(ctx context.Context, ref *autoscalingv1.CrossVersionObjectReference, namespace string) (*unstructuredv1.Unstructured, error) { + gv, err := schema.ParseGroupVersion(ref.APIVersion) + if err != nil { + return nil, fmt.Errorf("cannot parse %q into GroupVersion: %w", ref.APIVersion, err) + } + gk := schema.GroupKind{ + Group: gv.Group, + Kind: ref.Kind, + } + m, err := c.mapper.RESTMapping(gk, gv.Version) + if err != nil { + return nil, fmt.Errorf("couldn't find mapping for %s: %w", gk.WithVersion(gv.Version), err) + } + var ri dynamic.ResourceInterface + + nri := c.dynamicClient.Resource(m.Resource) + + // The target reference of a VPA spec has no namespace field. + // We assume that the reference is for a resource in the same + // namespace as the VPA if the scope resource is namespace. + if m.Scope.Name() == meta.RESTScopeNameNamespace { + ri = nri.Namespace(namespace) + } else { + ri = nri + } + obj, err := ri.Get(ctx, ref.Name, metav1.GetOptions{}) + if err != nil { + switch { + case apierrors.IsForbidden(err): + return nil, fmt.Errorf("no access to get resource %s in namespace %s", m.Resource.String(), namespace) + case apierrors.IsNotFound(err): + return nil, fmt.Errorf("resource not found: %s/%s", namespace, ref.Name) + default: + return nil, fmt.Errorf("couldn't get resource %s in namespace %s: %w", m.Resource.String(), namespace, err) + } + } + return obj, nil +} + +// hasMatchingGroupVersions returns whether the group versions lists match. +func hasMatchingGroupVersions(groupVersions []metav1.GroupVersionForDiscovery, wantVersions ...string) bool { + b := false +L: + for _, v := range wantVersions { + for _, gv := range groupVersions { + if gv.Version == v { + b = true + continue L + } + } + // If we reach this point, we could not match the + // wanted version with one of the group versions. + b = false + } + return b +} diff --git a/client/flags.go b/client/flags.go new file mode 100644 index 0000000..6836aa6 --- /dev/null +++ b/client/flags.go @@ -0,0 +1,112 @@ +package client + +import ( + "strings" + + "github.com/spf13/cobra" + "github.com/spf13/pflag" + "k8s.io/cli-runtime/pkg/genericclioptions" + "k8s.io/client-go/dynamic" + "k8s.io/kubectl/pkg/cmd/get" + cmdutil "k8s.io/kubectl/pkg/cmd/util" + "k8s.io/kubectl/pkg/util" +) + +const ( + clientQPS = 50 + clientBurst = 100 + discoveryBurst = 300 + discoveryQPS = 50.0 +) + +// Flags represents the common configuration flags to +// create a client that interact with a Kubernetes cluster. +type Flags struct { + *genericclioptions.ConfigFlags +} + +// DefaultFlags returns a new set client configuration +// flags with default values. +func DefaultFlags() *Flags { + return &Flags{ + ConfigFlags: genericclioptions.NewConfigFlags(true), + } +} + +// AddFlags binds the client configuration flags +// to the given flag set. +func (f *Flags) AddFlags(flags *pflag.FlagSet) { + fs := pflag.NewFlagSet("", pflag.ContinueOnError) + f.ConfigFlags.AddFlags(fs) + + // Normalize client flags by removing any dot + // character at the end of the usage string. + fs.VisitAll(func(f *pflag.Flag) { + f.Usage = strings.TrimSuffix(f.Usage, ".") + }) + flags.AddFlagSet(fs) +} + +// RegisterCompletionFunc registers the completion functions +// related to client configuration flags. +// Copied from the official `kubectl` command source: +// https://github.com/kubernetes/kubectl/blob/v0.23.1/pkg/cmd/cmd.go#L471-L492 +func (*Flags) RegisterCompletionFunc(cmd *cobra.Command, f cmdutil.Factory) { + directive := cobra.ShellCompDirectiveNoFileComp + + cmdutil.CheckErr(cmd.RegisterFlagCompletionFunc( + "namespace", + func(_ *cobra.Command, _ []string, tc string) ([]string, cobra.ShellCompDirective) { + return get.CompGetResource(f, cmd, "namespace", tc), directive + })) + cmdutil.CheckErr(cmd.RegisterFlagCompletionFunc( + "context", + func(_ *cobra.Command, _ []string, tc string) ([]string, cobra.ShellCompDirective) { + return util.ListContextsInConfig(tc), directive + })) + cmdutil.CheckErr(cmd.RegisterFlagCompletionFunc( + "cluster", + func(_ *cobra.Command, _ []string, tc string) ([]string, cobra.ShellCompDirective) { + return util.ListClustersInConfig(tc), directive + })) + cmdutil.CheckErr(cmd.RegisterFlagCompletionFunc( + "user", + func(_ *cobra.Command, _ []string, tc string) ([]string, cobra.ShellCompDirective) { + return util.ListUsersInConfig(tc), directive + })) +} + +// NewClient returns a new clients based on the flags' configuration. +func (f *Flags) NewClient() (Interface, error) { + f.ConfigFlags = f. + WithDiscoveryQPS(discoveryQPS). + WithDiscoveryBurst(discoveryBurst). + WithDeprecatedPasswordFlag() + + config, err := f.ToRESTConfig() + if err != nil { + return nil, err + } + config.QPS = clientQPS + config.Burst = clientBurst + + dyn, err := dynamic.NewForConfig(config) + if err != nil { + return nil, err + } + dis, err := f.ToDiscoveryClient() + if err != nil { + return nil, err + } + m, err := f.ToRESTMapper() + if err != nil { + return nil, err + } + c := &client{ + flags: f, + dynamicClient: dyn, + discoveryClient: dis, + mapper: m, + } + return c, nil +} diff --git a/cmd/kubectl-commitment/kubectl-commitment.go b/cmd/kubectl-commitment/kubectl-commitment.go new file mode 100644 index 0000000..08efa30 --- /dev/null +++ b/cmd/kubectl-commitment/kubectl-commitment.go @@ -0,0 +1,79 @@ +package main + +import ( + _ "embed" + "os" + "path/filepath" + "strings" + "unicode" + + "github.com/spf13/pflag" + "k8s.io/cli-runtime/pkg/genericclioptions" + kcli "k8s.io/component-base/cli" + "k8s.io/component-base/logs" + + // Initialize client auth plugins. + _ "k8s.io/client-go/plugin/pkg/client/auth" + + "github.com/wI2L/kubectl-commitment/cli" +) + +const pluginName = "kubectl-commitment" + +func main() { + cmdName := pluginName + + // If the command is executed as a `kubectl` plugin, + // use a nicer format for the root command name in + // help outputs generated by cobra. + if strings.HasPrefix(filepath.Base(os.Args[0]), "kubectl-") { + cmdName = strings.ReplaceAll(cmdName, "-", "") + } + streams := genericclioptions.IOStreams{ + In: os.Stdin, + Out: os.Stdout, + ErrOut: os.Stderr, + } + cmd := cli.NewCmd(streams, cmdName) + + // Add hidden logging flags. + // This prevents a "messy" help message. + logs.AddFlags(cmd.PersistentFlags()) + normalizeFlags(cmd.PersistentFlags()) + + code := kcli.Run(cmd) + os.Exit(code) +} + +func normalizeFlags(flags *pflag.FlagSet) { + // Logs are written to standard error instead of to files. + _ = flags.Set("logtostderr", "true") + + // Hide logging related flags to have a nicer usage. + // https://github.com/kubernetes/enhancements/tree/master/keps/sig-instrumentation/2845-deprecate-klog-specific-flags-in-k8s-components + _ = flags.MarkHidden("add_dir_header") + _ = flags.MarkHidden("alsologtostderr") + _ = flags.MarkHidden("log_backtrace_at") + _ = flags.MarkHidden("log_dir") + _ = flags.MarkHidden("log_file") + _ = flags.MarkHidden("log_file_max_size") + _ = flags.MarkHidden("log-flush-frequency") + _ = flags.MarkHidden("logtostderr") + _ = flags.MarkHidden("one_output") + _ = flags.MarkHidden("skip_headers") + _ = flags.MarkHidden("skip_log_headers") + _ = flags.MarkHidden("stderrthreshold") + + if f := flags.Lookup("v"); f != nil { + f.Usage = capitalizeSentence(f.Usage) + } + if f := flags.Lookup("vmodule"); f != nil { + f.Usage = capitalizeSentence(f.Usage) + } +} + +func capitalizeSentence(s string) string { + a := []rune(s) + a[0] = unicode.ToUpper(a[0]) + return string(a) +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..be06f8a --- /dev/null +++ b/go.mod @@ -0,0 +1,94 @@ +module github.com/wI2L/kubectl-commitment + +go 1.17 + +require ( + github.com/muesli/termenv v0.9.0 + github.com/olekukonko/tablewriter v0.0.4 + github.com/spf13/cobra v1.3.0 + github.com/spf13/pflag v1.0.5 + gopkg.in/inf.v0 v0.9.1 + k8s.io/api v0.23.1 + k8s.io/apimachinery v0.23.1 + k8s.io/autoscaler/vertical-pod-autoscaler v0.9.2 + k8s.io/cli-runtime v0.23.1 + k8s.io/client-go v0.23.1 + k8s.io/component-base v0.23.1 + k8s.io/klog/v2 v2.30.0 + k8s.io/kubectl v0.23.1 + k8s.io/utils v0.0.0-20211208161948-7d6a63dca704 +) + +require ( + cloud.google.com/go v0.99.0 // indirect + github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect + github.com/Azure/go-autorest v14.2.0+incompatible // indirect + github.com/Azure/go-autorest/autorest v0.11.18 // indirect + github.com/Azure/go-autorest/autorest/adal v0.9.13 // indirect + github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect + github.com/Azure/go-autorest/logger v0.2.1 // indirect + github.com/Azure/go-autorest/tracing v0.6.0 // indirect + github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd // indirect + github.com/PuerkitoBio/purell v1.1.1 // indirect + github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect + github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/evanphx/json-patch v4.12.0+incompatible // indirect + github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect + github.com/form3tech-oss/jwt-go v3.2.3+incompatible // indirect + github.com/fvbommel/sortorder v1.0.1 // indirect + github.com/go-errors/errors v1.0.1 // indirect + github.com/go-logr/logr v1.2.0 // indirect + github.com/go-openapi/jsonpointer v0.19.5 // indirect + github.com/go-openapi/jsonreference v0.19.5 // indirect + github.com/go-openapi/swag v0.19.14 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/google/btree v1.0.1 // indirect + github.com/google/go-cmp v0.5.6 // indirect + github.com/google/gofuzz v1.1.0 // indirect + github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect + github.com/google/uuid v1.1.2 // indirect + github.com/googleapis/gnostic v0.5.5 // indirect + github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect + github.com/imdario/mergo v0.3.5 // indirect + github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect + github.com/lucasb-eyer/go-colorful v1.2.0 // indirect + github.com/mailru/easyjson v0.7.6 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect + github.com/mattn/go-runewidth v0.0.13 // indirect + github.com/mitchellh/go-wordwrap v1.0.0 // indirect + github.com/moby/spdystream v0.2.0 // indirect + github.com/moby/term v0.0.0-20210610120745-9d4ed1856297 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect + github.com/peterbourgon/diskv v2.0.1+incompatible // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/rivo/uniseg v0.2.0 // indirect + github.com/russross/blackfriday v1.5.2 // indirect + github.com/stretchr/testify v1.7.0 // indirect + github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca // indirect + go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 // indirect + golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 // indirect + golang.org/x/net v0.0.0-20211209124913-491a49abca63 // indirect + golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect + golang.org/x/sys v0.0.0-20211205182925-97ca703d548d // indirect + golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect + golang.org/x/text v0.3.7 // indirect + golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/protobuf v1.27.1 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect + k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 // indirect + sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect + sigs.k8s.io/kustomize/api v0.10.1 // indirect + sigs.k8s.io/kustomize/kyaml v0.13.0 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.1.2 // indirect + sigs.k8s.io/yaml v1.2.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..4f629b3 --- /dev/null +++ b/go.sum @@ -0,0 +1,1199 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM= +cloud.google.com/go v0.99.0 h1:y/cM2iqGgGi5D5DQZl6D9STN/3dR/Vx5Mp8s752oJTY= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= +github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest v0.11.18 h1:90Y4srNYrwOtAgVo3ndrQkTYn6kf1Eg/AjTFJ8Is2aM= +github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.9.13 h1:Mp5hbtOePIzM8pJVRa3YLrWWmZtoxRXqUEzCfJt3+/Q= +github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= +github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= +github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= +github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +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/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd h1:sjQovDkwrZp8u+gxLtPgKGjk5hCxuy2hrRejBTA9xFU= +github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= +github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5 h1:7aWHqerlJ41y6FOsEUvknqgXnGmJyJSbjhAWq5pO4F8= +github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= +github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= +github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= +github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM= +github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= +github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/form3tech-oss/jwt-go v3.2.3+incompatible h1:7ZaBxOI7TMoYBfyA3cQHErNNyAWIKUMIwqxEtgHOs5c= +github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= +github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= +github.com/fvbommel/sortorder v1.0.1 h1:dSnXLt4mJYH25uDDGa3biZNQsozaUWDSWeKJ0qqFfzE= +github.com/fvbommel/sortorder v1.0.1/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= +github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= +github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v1.2.0 h1:QK40JKJyMdUDz+h+xvCsru/bJhvG0UxvePV0ufL/AcE= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= +github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/jsonreference v0.19.5 h1:1WJP/wi4OjB4iV8KVbH73rQaoialJrqv8gitZLxGLtM= +github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= +github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng= +github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= +github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw= +github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= +github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= +github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= +github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= +github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.5 h1:JboBksRwiiAJWvIYJVo46AfV+IAIKZpfrSzVKj42R4Q= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +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/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= +github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= +github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= +github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= +github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= +github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= +github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= +github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= +github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/moby/term v0.0.0-20210610120745-9d4ed1856297 h1:yH0SvLzcbZxcJXho2yh7CqdENGMQe73Cw3woZBpPli0= +github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0= +github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= +github.com/muesli/termenv v0.9.0 h1:wnbOaGz+LUR3jNT0zOzinPnyDaCZUQRZj9GxK8eRVl8= +github.com/muesli/termenv v0.9.0/go.mod h1:R/LzAKf+suGs4IsO95y7+7DpFHO0KABgnZqtlyx2mBw= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.4 h1:vHD/YYe1Wolo78koG299f7V/VAS08c6IpCLn+Ejf/w8= +github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= +github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +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/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= +github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= +github.com/spf13/cobra v1.3.0 h1:R7cSvGu+Vv+qX0gW5R/85dx2kmmJT5z5NM8ifdYjdn0= +github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca h1:1CFlNzQhALwjS9mBAUkycX616GzgsuYUOCHA5+HSlXI= +github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= +go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= +go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= +go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= +go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= +go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= +go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= +go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= +go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 h1:+FNtrFTmVw0YZGpBGX56XDee331t6JAXeK2bcyhLOOc= +go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ= +golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211209124913-491a49abca63 h1:iocB37TsdFuN6IBRZ+ry36wrkoV51/tl5vOWqkcPGvY= +golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 h1:RerP+noqYHUQ8CMRcPlC2nvTa4dcBIjegkuWdcUDuqg= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/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= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211205182925-97ca703d548d h1:FjkYO/PPp4Wi0EAUOVLxePm7qVW4r4ctbWpURyuOD0E= +golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +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.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs= +golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff/go.mod h1:YD9qOF0M9xpSpdWTBbzEl5e/RnCefISl8E5Noe10jFM= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/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.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= +gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= +gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +k8s.io/api v0.18.3/go.mod h1:UOaMwERbqJMfeeeHc8XJKawj4P9TgDRnViIqqBeH2QA= +k8s.io/api v0.23.1 h1:ncu/qfBfUoClqwkTGbeRqqOqBCRoUAflMuOaOD7J0c8= +k8s.io/api v0.23.1/go.mod h1:WfXnOnwSqNtG62Y1CdjoMxh7r7u9QXGCkA1u0na2jgo= +k8s.io/apimachinery v0.18.3/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= +k8s.io/apimachinery v0.23.1 h1:sfBjlDFwj2onG0Ijx5C+SrAoeUscPrmghm7wHP+uXlo= +k8s.io/apimachinery v0.23.1/go.mod h1:SADt2Kl8/sttJ62RRsi9MIV4o8f5S3coArm0Iu3fBno= +k8s.io/autoscaler/vertical-pod-autoscaler v0.9.2 h1:fMFkbjo6ElaL3POE3ctxLuX3aR+bEzpo2q1R5Aq2JhE= +k8s.io/autoscaler/vertical-pod-autoscaler v0.9.2/go.mod h1:PwWTGRRCxefhAezrDbG/tRYSAW7etHjjMPAr8fXKVAA= +k8s.io/cli-runtime v0.23.1 h1:vHUZrq1Oejs0WaJnxs09mLHKScvIIl2hMSthhS8o8Yo= +k8s.io/cli-runtime v0.23.1/go.mod h1:r9r8H/qfXo9w+69vwUL7LokKlLRKW5D6A8vUKCx+YL0= +k8s.io/client-go v0.18.3/go.mod h1:4a/dpQEvzAhT1BbuWW09qvIaGw6Gbu1gZYiQZIi1DMw= +k8s.io/client-go v0.23.1 h1:Ma4Fhf/p07Nmj9yAB1H7UwbFHEBrSPg8lviR24U2GiQ= +k8s.io/client-go v0.23.1/go.mod h1:6QSI8fEuqD4zgFK0xbdwfB/PthBsIxCJMa3s17WlcO0= +k8s.io/code-generator v0.18.3/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= +k8s.io/code-generator v0.23.1/go.mod h1:V7yn6VNTCWW8GqodYCESVo95fuiEg713S8B7WacWZDA= +k8s.io/component-base v0.18.3/go.mod h1:bp5GzGR0aGkYEfTj+eTY0AN/vXTgkJdQXjNTTVUaa3k= +k8s.io/component-base v0.23.1 h1:j/BqdZUWeWKCy2v/jcgnOJAzpRYWSbGcjGVYICko8Uc= +k8s.io/component-base v0.23.1/go.mod h1:6llmap8QtJIXGDd4uIWJhAq0Op8AtQo6bDW2RrNMTeo= +k8s.io/component-helpers v0.23.1/go.mod h1:ZK24U+2oXnBPcas2KolLigVVN9g5zOzaHLkHiQMFGr0= +k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.30.0 h1:bUO6drIvCIsvZ/XFgfxoGFQU/a4Qkh0iAlvUR7vlHJw= +k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= +k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 h1:E3J9oCLlaobFUqsjG9DfKbP2BmgwBL2p7pn0A3dG9W4= +k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= +k8s.io/kubectl v0.23.1 h1:gmscOiV4Y4XIRIn14gQBBADoyyVrDZPbxRCTDga4RSA= +k8s.io/kubectl v0.23.1/go.mod h1:Ui7dJKdUludF8yWAOSN7JZEkOuYixX5yF6E6NjoukKE= +k8s.io/metrics v0.18.3/go.mod h1:TkuJE3ezDZ1ym8pYkZoEzJB7HDiFE7qxl+EmExEBoPA= +k8s.io/metrics v0.23.1/go.mod h1:qXvsM1KANrc+ZZeFwj6Phvf0NLiC+d3RwcsLcdGc+xs= +k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20211208161948-7d6a63dca704 h1:ZKMMxTvduyf5WUtREOqg5LiXaN1KO/+0oOQPRFrClpo= +k8s.io/utils v0.0.0-20211208161948-7d6a63dca704/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 h1:fD1pz4yfdADVNfFmcP2aBEtudwUQ1AlLnRBALr33v3s= +sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= +sigs.k8s.io/kustomize/api v0.10.1 h1:KgU7hfYoscuqag84kxtzKdEC3mKMb99DPI3a0eaV1d0= +sigs.k8s.io/kustomize/api v0.10.1/go.mod h1:2FigT1QN6xKdcnGS2Ppp1uIWrtWN28Ms8A3OZUZhwr8= +sigs.k8s.io/kustomize/cmd/config v0.10.2/go.mod h1:K2aW7nXJ0AaT+VA/eO0/dzFLxmpFcTzudmAgDwPY1HQ= +sigs.k8s.io/kustomize/kustomize/v4 v4.4.1/go.mod h1:qOKJMMz2mBP+vcS7vK+mNz4HBLjaQSWRY22EF6Tb7Io= +sigs.k8s.io/kustomize/kyaml v0.13.0 h1:9c+ETyNfSrVhxvphs+K2dzT3dh5oVPPEqPOE/cUpScY= +sigs.k8s.io/kustomize/kyaml v0.13.0/go.mod h1:FTJxEZ86ScK184NpGSAQcfEqee0nul8oLCK30D47m4E= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.1.2 h1:Hr/htKFmJEbtMgS/UD0N+gtgctAqz81t3nu+sPzynno= +sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/internal/version/version.go b/internal/version/version.go new file mode 100644 index 0000000..ef5febc --- /dev/null +++ b/internal/version/version.go @@ -0,0 +1,55 @@ +package version + +import ( + "fmt" + "runtime" +) + +var ( + gitVersion string // semantic version, derived by build scripts + gitVersionMajor string // major version, always numeric + gitVersionMinor string // minor version, always numeric + gitCommit string // sha1 from git, output of $(git rev-parse HEAD) + gitTreeState string // state of git tree, either "clean" or "dirty" + buildDate string // build date in rfc3339 format, output of $(date -u +'%Y-%m-%dT%H:%M:%SZ') +) + +// Info represents the version information. +type Info struct { + Major string `json:"major,omitempty"` + Minor string `json:"minor,omitempty"` + GitVersion string `json:"gitVersion,omitempty"` + GitCommit string `json:"gitCommit,omitempty"` + GitTreeState string `json:"gitTreeState,omitempty"` + BuildDate string `json:"buildDate,omitempty"` + GoVersion string `json:"goVersion,omitempty"` + Compiler string `json:"compiler,omitempty"` + Platform string `json:"platform,omitempty"` +} + +// Get returns metadata and information about the version. +func Get() Info { + return Info{ + Major: gitVersionMajor, + Minor: gitVersionMinor, + GitVersion: gitVersion, + GitCommit: gitCommit, + GitTreeState: gitTreeState, + BuildDate: buildDate, + GoVersion: runtime.Version(), + Compiler: runtime.Compiler, + Platform: fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH), + } +} + +// String implements the fmt.Stringer interface. +// It returns the version as a human-friendly string. +func (info Info) String() string { + return info.GitVersion +} + +// Raw returns the raw representation of the version information. +// Used for debugging purpose or as the output of the version command. +func (info Info) Raw() string { + return fmt.Sprintf("%#v", info) +} diff --git a/vpa/recommendation.go b/vpa/recommendation.go new file mode 100644 index 0000000..572c30e --- /dev/null +++ b/vpa/recommendation.go @@ -0,0 +1,28 @@ +package vpa + +import ( + "k8s.io/apimachinery/pkg/api/resource" + vpav1 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1" +) + +// GetTotalRecommendations returns the total resource recommendations +// of the given VPA as the sum of all resource quantities recommended +// for each container. +func GetTotalRecommendations(vpa *vpav1.VerticalPodAutoscaler) *ResourceQuantities { + if vpa == nil || vpa.Status.Recommendation == nil { + return nil + } + var cpu, mem resource.Quantity + for _, cr := range vpa.Status.Recommendation.ContainerRecommendations { + if c := cr.Target.Cpu(); c != nil { + cpu.Add(*c) + } + if m := cr.Target.Memory(); m != nil { + mem.Add(*m) + } + } + return &ResourceQuantities{ + CPU: &cpu, + Memory: &mem, + } +} diff --git a/vpa/resource.go b/vpa/resource.go new file mode 100644 index 0000000..868a947 --- /dev/null +++ b/vpa/resource.go @@ -0,0 +1,56 @@ +package vpa + +import ( + "math" + "strconv" + + "gopkg.in/inf.v0" + "k8s.io/apimachinery/pkg/api/resource" +) + +const precision = 2 + +// ResourceQuantities is a pair of resource quantities +// that can represent the recommendations of a VerticalPodAutoscaler +// of the requests of a pod's container. +type ResourceQuantities struct { + CPU *resource.Quantity + Memory *resource.Quantity +} + +// DiffQuantitiesAsPercent return the difference between +// two quantities expressed as a percentage of each other, +// where x is the request and y the recommendation. +func DiffQuantitiesAsPercent(x, y *resource.Quantity) *float64 { + if x.IsZero() || y.IsZero() { + return nil + } + ai, oka := x.AsInt64() + bi, okb := y.AsInt64() + + if oka && okb { + f := (float64(ai) - float64(bi)) / float64(ai) * 100 + exp := powFloat64(10, precision) + // Round down to 'precision' decimal places. + f = math.Floor(f*exp) / exp + return &f + } + ad := x.AsDec() + bd := y.AsDec() + + p := &inf.Dec{} + p.Sub(ad, bd) + p.QuoRound(p, ad, precision+precision, inf.RoundDown) + p.Mul(p, inf.NewDec(100, 0)) + p.Round(p, precision, inf.RoundDown) + + f, err := strconv.ParseFloat(p.String(), 64) + if err != nil { + return nil + } + return &f +} + +func powFloat64(x, y int) float64 { + return math.Pow(float64(x), float64(y)) +} diff --git a/vpa/resource_test.go b/vpa/resource_test.go new file mode 100644 index 0000000..9106c9e --- /dev/null +++ b/vpa/resource_test.go @@ -0,0 +1,76 @@ +package vpa + +import ( + "testing" + + "k8s.io/apimachinery/pkg/api/resource" + "k8s.io/utils/pointer" +) + +func TestDiffQuantitiesAsPercent(t *testing.T) { + testCases := []struct { + X *resource.Quantity + Y *resource.Quantity + P *float64 + }{ + { + X: resource.NewQuantity(0, resource.DecimalSI), + Y: resource.NewQuantity(25, resource.DecimalSI), + P: nil, + }, + { + X: resource.NewQuantity(25, resource.DecimalSI), + Y: resource.NewQuantity(0, resource.DecimalSI), + P: nil, + }, + { + X: resource.NewQuantity(100, resource.DecimalSI), + Y: resource.NewQuantity(25, resource.DecimalSI), + P: pointer.Float64(75.00), + }, + { + X: resource.NewQuantity(444, resource.BinarySI), + Y: resource.NewQuantity(1000, resource.BinarySI), + P: pointer.Float64(-125.23), + }, + { + X: resource.NewQuantity(1000, resource.BinarySI), + Y: resource.NewQuantity(444, resource.BinarySI), + P: pointer.Float64(55.60), + }, + { + X: resource.NewScaledQuantity(8, resource.Peta), + Y: resource.NewScaledQuantity(24, resource.Peta), + P: pointer.Float64(-200.00), + }, + { + X: resource.NewScaledQuantity(128, resource.Exa), + Y: resource.NewScaledQuantity(512, resource.Exa), + P: pointer.Float64(-300.00), + }, + { + X: resource.NewScaledQuantity(666, resource.Giga), + Y: resource.NewScaledQuantity(32, resource.Exa), + P: pointer.Float64(-4804804704.80), + }, + { + X: resource.NewScaledQuantity(32, resource.Exa), + Y: resource.NewScaledQuantity(666, resource.Giga), + P: pointer.Float64(99.99), + }, + } + for _, tc := range testCases { + t.Logf("X: %s, Y: %s", tc.X, tc.Y) + + p := DiffQuantitiesAsPercent(tc.X, tc.Y) + if p == nil { + if tc.P != nil { + t.Errorf("got nil result, want %.2f", *tc.P) + } + } else { + if *tc.P != *p { + t.Errorf("got %f, want %f", *p, *tc.P) + } + } + } +} diff --git a/vpa/target.go b/vpa/target.go new file mode 100644 index 0000000..52b52d7 --- /dev/null +++ b/vpa/target.go @@ -0,0 +1,149 @@ +package vpa + +import ( + "context" + "fmt" + "strings" + + autoscalingv1 "k8s.io/api/autoscaling/v1" + corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" + unstructuredv1 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + + "github.com/wI2L/kubectl-commitment/client" +) + +// wellKnownControllerKind represents the Kind of common controllers. +type wellKnownControllerKind string + +const ( + cj wellKnownControllerKind = "CronJob" + ds wellKnownControllerKind = "DaemonSet" + deploy wellKnownControllerKind = "Deployment" + node wellKnownControllerKind = "Node" + job wellKnownControllerKind = "Job" + rs wellKnownControllerKind = "ReplicaSet" + rc wellKnownControllerKind = "ReplicationController" + sts wellKnownControllerKind = "StatefulSet" +) + +// TargetController abstract a scalable controller +// resource targeted by a VerticalPodAutoscaler. +type TargetController struct { + Name string + Namespace string + GroupVersionKind schema.GroupVersionKind + controllerKind wellKnownControllerKind + controllerObj *unstructuredv1.Unstructured + podSpec *corev1.PodSpec +} + +// NewTargetController resolves the target of a VPA resource. +func NewTargetController(client client.Interface, ref *autoscalingv1.CrossVersionObjectReference, namespace string) (*TargetController, error) { + ctx := context.Background() + + obj, err := client.GetVPATarget(ctx, ref, namespace) + if err != nil { + return nil, fmt.Errorf("cannot fetch VPa target: %w", err) + } + kind := obj.GetKind() + + switch wellKnownControllerKind(kind) { + case cj, ds, deploy, job, rs, rc, sts: + case node: + // Some pods specify nodes as their owners, + // but they aren't valid controllers that + // the VPA supports, so we just skip them. + return nil, fmt.Errorf("node is not a valid target") + default: + return nil, fmt.Errorf("unsupported target kind: %s", kind) + } + tc := &TargetController{ + Name: obj.GetName(), + Namespace: obj.GetNamespace(), + GroupVersionKind: obj.GetObjectKind().GroupVersionKind(), + controllerKind: wellKnownControllerKind(kind), + controllerObj: obj, + } + tc.podSpec, err = resolvePodSpec(obj) + if err != nil { + return nil, err + } + return tc, nil +} + +// GetRequests returns the resource requests defined by the +// pod spec of the controller, which is the sum of all resource +// quantities for each container declared by the spec. +func (tc *TargetController) GetRequests() *ResourceQuantities { + var cpu, mem resource.Quantity + + for _, ctr := range tc.podSpec.Containers { + requests := ctr.Resources.Requests + if c := requests.Cpu(); c != nil { + cpu.Add(*c) + } + if m := requests.Memory(); m != nil { + mem.Add(*m) + } + } + return &ResourceQuantities{ + CPU: &cpu, + Memory: &mem, + } +} + +// GetContainerRequests returns the resource requests of a container. +func (tc *TargetController) GetContainerRequests(name string) *ResourceQuantities { + for _, c := range tc.podSpec.Containers { + if c.Name == name { + return &ResourceQuantities{ + CPU: c.Resources.Requests.Cpu(), + Memory: c.Resources.Requests.Memory(), + } + } + } + return nil +} + +// resolvePodSpec returns the corev1.PodSpec field of a +// controller. The method cache the result during its first +// call and return the same value for subsequent calls. +func resolvePodSpec(obj *unstructuredv1.Unstructured) (*corev1.PodSpec, error) { + kind := obj.GetKind() + + fields := []string{ + "spec", + "template", // PodTemplateSpec + "spec", // PodSpec + } + switch wellKnownControllerKind(kind) { + case ds, deploy, job, rs, rc, sts: + // Same default fields. + case cj: + prefix := []string{ + "spec", // CronJobSpec + "jobTemplate", // JobTemplateSpec + } + fields = append(prefix, fields...) + default: + return nil, fmt.Errorf("unknown kind: %s", kind) + } + nmap, ok, err := unstructuredv1.NestedMap(obj.Object, fields...) + if err != nil { + return nil, fmt.Errorf("nested field has invalid type") + } + if !ok { + return nil, fmt.Errorf("nested field with path %s not found", strings.Join(fields, ".")) + } + conv := runtime.DefaultUnstructuredConverter + spec := &corev1.PodSpec{} + + err = conv.FromUnstructured(nmap, spec) + if err != nil { + return nil, err + } + return spec, nil +}