mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	dependencies: zapr v1.3.0, zap v1.26.0
The new zapr adds support for slog. The new zap has various improvements. It no longer depends on go.uber.org/atomic which enables dropping it from the Kubernetes dependencies. github.com/pkg/errors is also no longer needed.
This commit is contained in:
		
							
								
								
									
										23
									
								
								LICENSES/vendor/go.uber.org/atomic/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								LICENSES/vendor/go.uber.org/atomic/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,23 +0,0 @@
 | 
				
			|||||||
= vendor/go.uber.org/atomic licensed under: =
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Copyright (c) 2016 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
= vendor/go.uber.org/atomic/LICENSE.txt 1caee86519456feda989f8a838102b50
 | 
					 | 
				
			||||||
							
								
								
									
										5
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								go.mod
									
									
									
									
									
								
							@@ -77,7 +77,7 @@ require (
 | 
				
			|||||||
	go.opentelemetry.io/otel/trace v1.19.0
 | 
						go.opentelemetry.io/otel/trace v1.19.0
 | 
				
			||||||
	go.opentelemetry.io/proto/otlp v1.0.0
 | 
						go.opentelemetry.io/proto/otlp v1.0.0
 | 
				
			||||||
	go.uber.org/goleak v1.2.1
 | 
						go.uber.org/goleak v1.2.1
 | 
				
			||||||
	go.uber.org/zap v1.19.0
 | 
						go.uber.org/zap v1.26.0
 | 
				
			||||||
	golang.org/x/crypto v0.14.0
 | 
						golang.org/x/crypto v0.14.0
 | 
				
			||||||
	golang.org/x/net v0.17.0
 | 
						golang.org/x/net v0.17.0
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0
 | 
						golang.org/x/oauth2 v0.10.0
 | 
				
			||||||
@@ -166,7 +166,7 @@ require (
 | 
				
			|||||||
	github.com/fvbommel/sortorder v1.1.0 // indirect
 | 
						github.com/fvbommel/sortorder v1.1.0 // indirect
 | 
				
			||||||
	github.com/go-errors/errors v1.4.2 // indirect
 | 
						github.com/go-errors/errors v1.4.2 // indirect
 | 
				
			||||||
	github.com/go-logr/stdr v1.2.2 // indirect
 | 
						github.com/go-logr/stdr v1.2.2 // indirect
 | 
				
			||||||
	github.com/go-logr/zapr v1.2.3 // indirect
 | 
						github.com/go-logr/zapr v1.3.0 // indirect
 | 
				
			||||||
	github.com/go-openapi/jsonpointer v0.19.6 // indirect
 | 
						github.com/go-openapi/jsonpointer v0.19.6 // indirect
 | 
				
			||||||
	github.com/go-openapi/jsonreference v0.20.2 // indirect
 | 
						github.com/go-openapi/jsonreference v0.20.2 // indirect
 | 
				
			||||||
	github.com/go-openapi/swag v0.22.3 // indirect
 | 
						github.com/go-openapi/swag v0.22.3 // indirect
 | 
				
			||||||
@@ -230,7 +230,6 @@ require (
 | 
				
			|||||||
	go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect
 | 
						go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect
 | 
				
			||||||
	go.opentelemetry.io/otel/metric v1.19.0 // indirect
 | 
						go.opentelemetry.io/otel/metric v1.19.0 // indirect
 | 
				
			||||||
	go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect
 | 
						go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect
 | 
				
			||||||
	go.uber.org/atomic v1.10.0 // indirect
 | 
					 | 
				
			||||||
	go.uber.org/multierr v1.11.0 // indirect
 | 
						go.uber.org/multierr v1.11.0 // indirect
 | 
				
			||||||
	golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
						golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
				
			||||||
	golang.org/x/mod v0.12.0 // indirect
 | 
						golang.org/x/mod v0.12.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										16
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								go.sum
									
									
									
									
									
								
							@@ -224,8 +224,6 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkY
 | 
				
			|||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=
 | 
					github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=
 | 
				
			||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
					github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
				
			||||||
github.com/aws/aws-sdk-go v1.35.24/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k=
 | 
					github.com/aws/aws-sdk-go v1.35.24/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k=
 | 
				
			||||||
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
 | 
					 | 
				
			||||||
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 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.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
 | 
				
			||||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
					github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
				
			||||||
@@ -386,8 +384,8 @@ github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
				
			|||||||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
					github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
					github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
					github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A=
 | 
					github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4=
 | 
					github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
					github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
					github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
				
			||||||
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
					github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
				
			||||||
@@ -847,18 +845,14 @@ go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93V
 | 
				
			|||||||
go.starlark.net v0.0.0-20230525235612-a134d8f9ddca/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds=
 | 
					go.starlark.net v0.0.0-20230525235612-a134d8f9ddca/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds=
 | 
				
			||||||
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
 | 
					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/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 | 
				
			||||||
go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ=
 | 
					 | 
				
			||||||
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
 | 
					 | 
				
			||||||
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
 | 
					 | 
				
			||||||
go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 | 
					go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 | 
				
			||||||
go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
 | 
					go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
 | 
				
			||||||
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
 | 
					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/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 | 
					go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 | 
				
			||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
					go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
				
			||||||
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
 | 
					go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
 | 
				
			||||||
go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE=
 | 
					go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
 | 
				
			||||||
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
 | 
					go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 | 
					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-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
@@ -1097,7 +1091,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw
 | 
				
			|||||||
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
					golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/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-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
					golang.org/x/tools v0.0.0-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-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-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-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
				
			||||||
@@ -1323,7 +1316,6 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
				
			|||||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 | 
					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.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-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
					gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8=
 | 
					gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -178,10 +178,8 @@
 | 
				
			|||||||
        "github.com/containerd/fifo",
 | 
					        "github.com/containerd/fifo",
 | 
				
			||||||
        "github.com/containerd/go-runc",
 | 
					        "github.com/containerd/go-runc",
 | 
				
			||||||
        "github.com/containerd/typeurl",
 | 
					        "github.com/containerd/typeurl",
 | 
				
			||||||
        "github.com/go-logr/zapr",
 | 
					 | 
				
			||||||
        "github.com/google/cadvisor",
 | 
					        "github.com/google/cadvisor",
 | 
				
			||||||
        "github.com/grpc-ecosystem/go-grpc-middleware",
 | 
					        "github.com/grpc-ecosystem/go-grpc-middleware",
 | 
				
			||||||
        "go.uber.org/zap",
 | 
					 | 
				
			||||||
        "gotest.tools/v3",
 | 
					        "gotest.tools/v3",
 | 
				
			||||||
        "k8s.io/kubectl",
 | 
					        "k8s.io/kubectl",
 | 
				
			||||||
        "k8s.io/kubernetes",
 | 
					        "k8s.io/kubernetes",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -102,9 +102,8 @@ require (
 | 
				
			|||||||
	go.opentelemetry.io/otel/metric v1.19.0 // indirect
 | 
						go.opentelemetry.io/otel/metric v1.19.0 // indirect
 | 
				
			||||||
	go.opentelemetry.io/otel/sdk v1.19.0 // indirect
 | 
						go.opentelemetry.io/otel/sdk v1.19.0 // indirect
 | 
				
			||||||
	go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 | 
						go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 | 
				
			||||||
	go.uber.org/atomic v1.10.0 // indirect
 | 
					 | 
				
			||||||
	go.uber.org/multierr v1.11.0 // indirect
 | 
						go.uber.org/multierr v1.11.0 // indirect
 | 
				
			||||||
	go.uber.org/zap v1.19.0 // indirect
 | 
						go.uber.org/zap v1.26.0 // indirect
 | 
				
			||||||
	golang.org/x/crypto v0.14.0 // indirect
 | 
						golang.org/x/crypto v0.14.0 // indirect
 | 
				
			||||||
	golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
						golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
				
			||||||
	golang.org/x/mod v0.12.0 // indirect
 | 
						golang.org/x/mod v0.12.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										19
									
								
								staging/src/k8s.io/apiextensions-apiserver/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										19
									
								
								staging/src/k8s.io/apiextensions-apiserver/go.sum
									
									
									
										generated
									
									
									
								
							@@ -133,8 +133,6 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd
 | 
				
			|||||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
					github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
				
			||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=
 | 
					github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=
 | 
				
			||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
					github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
				
			||||||
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
 | 
					 | 
				
			||||||
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
 | 
					 | 
				
			||||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
					github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
				
			||||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 | 
					github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 | 
				
			||||||
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 | 
					github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 | 
				
			||||||
@@ -191,8 +189,8 @@ github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
				
			|||||||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
					github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
					github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
					github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A=
 | 
					github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4=
 | 
					github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
					github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
					github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
				
			||||||
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
					github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
				
			||||||
@@ -269,7 +267,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI
 | 
				
			|||||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 | 
					github.com/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.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 | 
				
			||||||
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
 | 
					github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
 | 
				
			||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 | 
					 | 
				
			||||||
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
					github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
				
			||||||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
					github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
				
			||||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
					github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
				
			||||||
@@ -391,18 +388,14 @@ go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lI
 | 
				
			|||||||
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
				
			||||||
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
 | 
					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/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 | 
				
			||||||
go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ=
 | 
					 | 
				
			||||||
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
 | 
					 | 
				
			||||||
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
 | 
					 | 
				
			||||||
go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 | 
					go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 | 
				
			||||||
go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
 | 
					go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
 | 
				
			||||||
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
 | 
					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/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 | 
					go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 | 
				
			||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
					go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
				
			||||||
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
 | 
					go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
 | 
				
			||||||
go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE=
 | 
					go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
 | 
				
			||||||
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
 | 
					go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
					golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
@@ -414,7 +407,6 @@ golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2F
 | 
				
			|||||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
 | 
					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-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
 | 
				
			||||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
 | 
					golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
 | 
				
			||||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
 | 
					 | 
				
			||||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
					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.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
				
			||||||
golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
 | 
					golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
 | 
				
			||||||
@@ -475,7 +467,6 @@ golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGm
 | 
				
			|||||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
 | 
					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-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
 | 
					golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/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-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/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-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 | 
					golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 | 
				
			||||||
@@ -514,7 +505,6 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
 | 
				
			|||||||
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
 | 
					google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
 | 
				
			||||||
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
					google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
				
			||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
					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-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
				
			||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 | 
					gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 | 
				
			||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 | 
					gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 | 
				
			||||||
@@ -529,7 +519,6 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
				
			|||||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 | 
					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.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-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
					gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 | 
					honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,7 +31,7 @@ require (
 | 
				
			|||||||
	go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0
 | 
						go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0
 | 
				
			||||||
	go.opentelemetry.io/otel/sdk v1.19.0
 | 
						go.opentelemetry.io/otel/sdk v1.19.0
 | 
				
			||||||
	go.opentelemetry.io/otel/trace v1.19.0
 | 
						go.opentelemetry.io/otel/trace v1.19.0
 | 
				
			||||||
	go.uber.org/zap v1.19.0
 | 
						go.uber.org/zap v1.26.0
 | 
				
			||||||
	golang.org/x/crypto v0.14.0
 | 
						golang.org/x/crypto v0.14.0
 | 
				
			||||||
	golang.org/x/net v0.17.0
 | 
						golang.org/x/net v0.17.0
 | 
				
			||||||
	golang.org/x/sync v0.3.0
 | 
						golang.org/x/sync v0.3.0
 | 
				
			||||||
@@ -111,7 +111,6 @@ require (
 | 
				
			|||||||
	go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect
 | 
						go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect
 | 
				
			||||||
	go.opentelemetry.io/otel/metric v1.19.0 // indirect
 | 
						go.opentelemetry.io/otel/metric v1.19.0 // indirect
 | 
				
			||||||
	go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 | 
						go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 | 
				
			||||||
	go.uber.org/atomic v1.10.0 // indirect
 | 
					 | 
				
			||||||
	go.uber.org/multierr v1.11.0 // indirect
 | 
						go.uber.org/multierr v1.11.0 // indirect
 | 
				
			||||||
	golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
						golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.10.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										19
									
								
								staging/src/k8s.io/apiserver/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										19
									
								
								staging/src/k8s.io/apiserver/go.sum
									
									
									
										generated
									
									
									
								
							@@ -133,8 +133,6 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd
 | 
				
			|||||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
					github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
				
			||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=
 | 
					github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=
 | 
				
			||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
					github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
				
			||||||
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
 | 
					 | 
				
			||||||
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
 | 
					 | 
				
			||||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
					github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
				
			||||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 | 
					github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 | 
				
			||||||
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 | 
					github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 | 
				
			||||||
@@ -191,8 +189,8 @@ github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
				
			|||||||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
					github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
					github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
					github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A=
 | 
					github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4=
 | 
					github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
					github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
					github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
				
			||||||
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
					github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
				
			||||||
@@ -268,7 +266,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI
 | 
				
			|||||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 | 
					github.com/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.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 | 
				
			||||||
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
 | 
					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.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
					github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
				
			||||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
					github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
				
			||||||
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
 | 
					github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
 | 
				
			||||||
@@ -390,18 +387,14 @@ go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lI
 | 
				
			|||||||
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
				
			||||||
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
 | 
					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/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 | 
				
			||||||
go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ=
 | 
					 | 
				
			||||||
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
 | 
					 | 
				
			||||||
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
 | 
					 | 
				
			||||||
go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 | 
					go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 | 
				
			||||||
go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
 | 
					go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
 | 
				
			||||||
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
 | 
					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/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 | 
					go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 | 
				
			||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
					go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
				
			||||||
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
 | 
					go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
 | 
				
			||||||
go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE=
 | 
					go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
 | 
				
			||||||
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
 | 
					go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
					golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
@@ -413,7 +406,6 @@ golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2F
 | 
				
			|||||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
 | 
					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-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
 | 
				
			||||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
 | 
					golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
 | 
				
			||||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
 | 
					 | 
				
			||||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
					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.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
				
			||||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 | 
					golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 | 
				
			||||||
@@ -473,7 +465,6 @@ golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGm
 | 
				
			|||||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
 | 
					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-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
 | 
					golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/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-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/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-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 | 
					golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 | 
				
			||||||
@@ -511,7 +502,6 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
 | 
				
			|||||||
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
 | 
					google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
 | 
				
			||||||
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
					google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
				
			||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
					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-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 | 
					gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 | 
				
			||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 | 
					gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 | 
				
			||||||
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
 | 
					gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
 | 
				
			||||||
@@ -526,7 +516,6 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
				
			|||||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 | 
					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.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-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
					gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 | 
					honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -38,7 +38,7 @@ require (
 | 
				
			|||||||
	github.com/fsnotify/fsnotify v1.7.0 // indirect
 | 
						github.com/fsnotify/fsnotify v1.7.0 // indirect
 | 
				
			||||||
	github.com/go-logr/logr v1.3.0 // indirect
 | 
						github.com/go-logr/logr v1.3.0 // indirect
 | 
				
			||||||
	github.com/go-logr/stdr v1.2.2 // indirect
 | 
						github.com/go-logr/stdr v1.2.2 // indirect
 | 
				
			||||||
	github.com/go-logr/zapr v1.2.3 // indirect
 | 
						github.com/go-logr/zapr v1.3.0 // indirect
 | 
				
			||||||
	github.com/go-openapi/jsonpointer v0.19.6 // indirect
 | 
						github.com/go-openapi/jsonpointer v0.19.6 // indirect
 | 
				
			||||||
	github.com/go-openapi/jsonreference v0.20.2 // indirect
 | 
						github.com/go-openapi/jsonreference v0.20.2 // indirect
 | 
				
			||||||
	github.com/go-openapi/swag v0.22.3 // indirect
 | 
						github.com/go-openapi/swag v0.22.3 // indirect
 | 
				
			||||||
@@ -80,9 +80,8 @@ require (
 | 
				
			|||||||
	go.opentelemetry.io/otel/sdk v1.19.0 // indirect
 | 
						go.opentelemetry.io/otel/sdk v1.19.0 // indirect
 | 
				
			||||||
	go.opentelemetry.io/otel/trace v1.19.0 // indirect
 | 
						go.opentelemetry.io/otel/trace v1.19.0 // indirect
 | 
				
			||||||
	go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 | 
						go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 | 
				
			||||||
	go.uber.org/atomic v1.10.0 // indirect
 | 
					 | 
				
			||||||
	go.uber.org/multierr v1.11.0 // indirect
 | 
						go.uber.org/multierr v1.11.0 // indirect
 | 
				
			||||||
	go.uber.org/zap v1.19.0 // indirect
 | 
						go.uber.org/zap v1.26.0 // indirect
 | 
				
			||||||
	golang.org/x/crypto v0.14.0 // indirect
 | 
						golang.org/x/crypto v0.14.0 // indirect
 | 
				
			||||||
	golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
						golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
				
			||||||
	golang.org/x/net v0.17.0 // indirect
 | 
						golang.org/x/net v0.17.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										24
									
								
								staging/src/k8s.io/cloud-provider/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										24
									
								
								staging/src/k8s.io/cloud-provider/go.sum
									
									
									
										generated
									
									
									
								
							@@ -130,8 +130,6 @@ github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/g
 | 
				
			|||||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
					github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
				
			||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=
 | 
					github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=
 | 
				
			||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
					github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
				
			||||||
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
 | 
					 | 
				
			||||||
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
 | 
					 | 
				
			||||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
					github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
				
			||||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 | 
					github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 | 
				
			||||||
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 | 
					github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 | 
				
			||||||
@@ -176,8 +174,8 @@ github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
				
			|||||||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
					github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
					github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
					github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A=
 | 
					github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4=
 | 
					github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
					github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
					github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
				
			||||||
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
					github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
				
			||||||
@@ -242,7 +240,6 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm
 | 
				
			|||||||
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
 | 
					github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
 | 
				
			||||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 | 
					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/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 | 
				
			||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 | 
					 | 
				
			||||||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
					github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
				
			||||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
					github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
				
			||||||
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
 | 
					github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
 | 
				
			||||||
@@ -271,7 +268,6 @@ github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xl
 | 
				
			|||||||
github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg=
 | 
					github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg=
 | 
				
			||||||
github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
 | 
					github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
 | 
				
			||||||
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 | 
					github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 | 
				
			||||||
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 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 | 
				
			||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
					github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
@@ -303,9 +299,7 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
 | 
				
			|||||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 | 
					github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 | 
				
			||||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 | 
					github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 | 
				
			||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 | 
					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.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
 | 
				
			||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
					 | 
				
			||||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
					github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
				
			||||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 | 
					github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 | 
				
			||||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 | 
					github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 | 
				
			||||||
@@ -353,16 +347,12 @@ go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmY
 | 
				
			|||||||
go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
 | 
				
			||||||
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
				
			||||||
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 | 
					go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 | 
				
			||||||
go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ=
 | 
					 | 
				
			||||||
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
 | 
					 | 
				
			||||||
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
 | 
					 | 
				
			||||||
go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 | 
					go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 | 
				
			||||||
go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
 | 
					go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
 | 
				
			||||||
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
 | 
					 | 
				
			||||||
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 | 
					go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 | 
				
			||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
					go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
				
			||||||
go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE=
 | 
					go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
 | 
				
			||||||
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
 | 
					go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
					golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
@@ -370,11 +360,9 @@ golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc=
 | 
				
			|||||||
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
 | 
					golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
 | 
				
			||||||
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
 | 
					golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
 | 
				
			||||||
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
 | 
					golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
 | 
				
			||||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
 | 
					 | 
				
			||||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
					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.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
				
			||||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 | 
					golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 | 
				
			||||||
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-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
 | 
					golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
					golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
@@ -406,8 +394,6 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
 | 
				
			|||||||
golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
 | 
					golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
 | 
				
			||||||
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 | 
					golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 | 
					 | 
				
			||||||
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/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-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/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-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 | 
					golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 | 
				
			||||||
@@ -433,7 +419,6 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
 | 
				
			|||||||
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
 | 
					google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
 | 
				
			||||||
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
					google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
				
			||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
					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-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 | 
					gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 | 
				
			||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 | 
					gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 | 
				
			||||||
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
 | 
					gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
 | 
				
			||||||
@@ -446,7 +431,6 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
				
			|||||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 | 
					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.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-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
					gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
 | 
					k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@ go 1.21.3
 | 
				
			|||||||
require (
 | 
					require (
 | 
				
			||||||
	github.com/blang/semver/v4 v4.0.0
 | 
						github.com/blang/semver/v4 v4.0.0
 | 
				
			||||||
	github.com/go-logr/logr v1.3.0
 | 
						github.com/go-logr/logr v1.3.0
 | 
				
			||||||
	github.com/go-logr/zapr v1.2.3
 | 
						github.com/go-logr/zapr v1.3.0
 | 
				
			||||||
	github.com/google/go-cmp v0.6.0
 | 
						github.com/google/go-cmp v0.6.0
 | 
				
			||||||
	github.com/moby/term v0.0.0-20221205130635-1aeaba878587
 | 
						github.com/moby/term v0.0.0-20221205130635-1aeaba878587
 | 
				
			||||||
	github.com/prometheus/client_golang v1.16.0
 | 
						github.com/prometheus/client_golang v1.16.0
 | 
				
			||||||
@@ -22,7 +22,7 @@ require (
 | 
				
			|||||||
	go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0
 | 
						go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0
 | 
				
			||||||
	go.opentelemetry.io/otel/sdk v1.19.0
 | 
						go.opentelemetry.io/otel/sdk v1.19.0
 | 
				
			||||||
	go.opentelemetry.io/otel/trace v1.19.0
 | 
						go.opentelemetry.io/otel/trace v1.19.0
 | 
				
			||||||
	go.uber.org/zap v1.19.0
 | 
						go.uber.org/zap v1.26.0
 | 
				
			||||||
	golang.org/x/sys v0.13.0
 | 
						golang.org/x/sys v0.13.0
 | 
				
			||||||
	gopkg.in/yaml.v2 v2.4.0
 | 
						gopkg.in/yaml.v2 v2.4.0
 | 
				
			||||||
	k8s.io/apimachinery v0.0.0
 | 
						k8s.io/apimachinery v0.0.0
 | 
				
			||||||
@@ -62,7 +62,6 @@ require (
 | 
				
			|||||||
	go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect
 | 
						go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect
 | 
				
			||||||
	go.opentelemetry.io/otel/metric v1.19.0 // indirect
 | 
						go.opentelemetry.io/otel/metric v1.19.0 // indirect
 | 
				
			||||||
	go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 | 
						go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 | 
				
			||||||
	go.uber.org/atomic v1.10.0 // indirect
 | 
					 | 
				
			||||||
	go.uber.org/multierr v1.11.0 // indirect
 | 
						go.uber.org/multierr v1.11.0 // indirect
 | 
				
			||||||
	golang.org/x/net v0.17.0 // indirect
 | 
						golang.org/x/net v0.17.0 // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.10.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										26
									
								
								staging/src/k8s.io/component-base/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										26
									
								
								staging/src/k8s.io/component-base/go.sum
									
									
									
										generated
									
									
									
								
							@@ -8,8 +8,6 @@ github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8V
 | 
				
			|||||||
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
					github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
				
			||||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
					github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
				
			||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
					github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
				
			||||||
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
 | 
					 | 
				
			||||||
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
 | 
					 | 
				
			||||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
					github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
				
			||||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 | 
					github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 | 
				
			||||||
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 | 
					github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 | 
				
			||||||
@@ -43,8 +41,8 @@ github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
				
			|||||||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
					github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
					github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
					github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A=
 | 
					github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4=
 | 
					github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
					github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
					github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
				
			||||||
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
					github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
				
			||||||
@@ -93,7 +91,6 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm
 | 
				
			|||||||
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
 | 
					github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
 | 
				
			||||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 | 
					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/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 | 
				
			||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 | 
					 | 
				
			||||||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
					github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
				
			||||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
					github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
				
			||||||
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
 | 
					github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
 | 
				
			||||||
@@ -122,7 +119,6 @@ github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xl
 | 
				
			|||||||
github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg=
 | 
					github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg=
 | 
				
			||||||
github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
 | 
					github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
 | 
				
			||||||
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 | 
					github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 | 
				
			||||||
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 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 | 
				
			||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
					github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
@@ -147,8 +143,6 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
 | 
				
			|||||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 | 
					github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 | 
				
			||||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 | 
					github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 | 
				
			||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 | 
					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.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
					 | 
				
			||||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
					github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
				
			||||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 | 
					github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 | 
				
			||||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 | 
					github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 | 
				
			||||||
@@ -173,26 +167,19 @@ go.opentelemetry.io/otel/trace v1.19.0 h1:DFVQmlVbfVeOuBRrwdtaehRrWiL1JoVs9CPIQ1
 | 
				
			|||||||
go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo=
 | 
					go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo=
 | 
				
			||||||
go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
 | 
				
			||||||
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
				
			||||||
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 | 
					 | 
				
			||||||
go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ=
 | 
					 | 
				
			||||||
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
 | 
					 | 
				
			||||||
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
 | 
					 | 
				
			||||||
go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 | 
					go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 | 
				
			||||||
go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
 | 
					go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
 | 
				
			||||||
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
 | 
					 | 
				
			||||||
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 | 
					go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 | 
				
			||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
					go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
				
			||||||
go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE=
 | 
					go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
 | 
				
			||||||
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
 | 
					go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
					golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
 | 
					golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
 | 
				
			||||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
 | 
					 | 
				
			||||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
					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.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
				
			||||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 | 
					golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 | 
				
			||||||
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-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
 | 
					golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
					golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
@@ -223,8 +210,6 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
 | 
				
			|||||||
golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
 | 
					golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
 | 
				
			||||||
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 | 
					golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 | 
					 | 
				
			||||||
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/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-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/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-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 | 
					golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 | 
				
			||||||
@@ -250,17 +235,14 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
 | 
				
			|||||||
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
 | 
					google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
 | 
				
			||||||
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
					google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
				
			||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
					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-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 | 
					gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 | 
				
			||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 | 
					gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 | 
				
			||||||
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
 | 
					gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
 | 
				
			||||||
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
 | 
					gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
 | 
				
			||||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
					 | 
				
			||||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
					gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
				
			||||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 | 
					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.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-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
					gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
 | 
					k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -76,9 +76,8 @@ require (
 | 
				
			|||||||
	go.opentelemetry.io/otel/sdk v1.19.0 // indirect
 | 
						go.opentelemetry.io/otel/sdk v1.19.0 // indirect
 | 
				
			||||||
	go.opentelemetry.io/otel/trace v1.19.0 // indirect
 | 
						go.opentelemetry.io/otel/trace v1.19.0 // indirect
 | 
				
			||||||
	go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 | 
						go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 | 
				
			||||||
	go.uber.org/atomic v1.10.0 // indirect
 | 
					 | 
				
			||||||
	go.uber.org/multierr v1.11.0 // indirect
 | 
						go.uber.org/multierr v1.11.0 // indirect
 | 
				
			||||||
	go.uber.org/zap v1.19.0 // indirect
 | 
						go.uber.org/zap v1.26.0 // indirect
 | 
				
			||||||
	golang.org/x/crypto v0.14.0 // indirect
 | 
						golang.org/x/crypto v0.14.0 // indirect
 | 
				
			||||||
	golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
						golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
				
			||||||
	golang.org/x/net v0.17.0 // indirect
 | 
						golang.org/x/net v0.17.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										24
									
								
								staging/src/k8s.io/controller-manager/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										24
									
								
								staging/src/k8s.io/controller-manager/go.sum
									
									
									
										generated
									
									
									
								
							@@ -129,8 +129,6 @@ github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/g
 | 
				
			|||||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
					github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
				
			||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=
 | 
					github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=
 | 
				
			||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
					github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
				
			||||||
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
 | 
					 | 
				
			||||||
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
 | 
					 | 
				
			||||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
					github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
				
			||||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 | 
					github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 | 
				
			||||||
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 | 
					github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 | 
				
			||||||
@@ -173,8 +171,8 @@ github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
				
			|||||||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
					github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
					github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
					github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A=
 | 
					github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4=
 | 
					github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
					github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
					github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
				
			||||||
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
					github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
				
			||||||
@@ -239,7 +237,6 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm
 | 
				
			|||||||
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
 | 
					github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
 | 
				
			||||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 | 
					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/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 | 
				
			||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 | 
					 | 
				
			||||||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
					github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
				
			||||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
					github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
				
			||||||
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
 | 
					github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
 | 
				
			||||||
@@ -267,7 +264,6 @@ github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xl
 | 
				
			|||||||
github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg=
 | 
					github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg=
 | 
				
			||||||
github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
 | 
					github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
 | 
				
			||||||
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 | 
					github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 | 
				
			||||||
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 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 | 
				
			||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
					github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
@@ -299,9 +295,7 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
 | 
				
			|||||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 | 
					github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 | 
				
			||||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 | 
					github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 | 
				
			||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 | 
					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.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
 | 
				
			||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
					 | 
				
			||||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
					github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
				
			||||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 | 
					github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 | 
				
			||||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 | 
					github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 | 
				
			||||||
@@ -349,16 +343,12 @@ go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmY
 | 
				
			|||||||
go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
 | 
				
			||||||
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
				
			||||||
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 | 
					go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 | 
				
			||||||
go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ=
 | 
					 | 
				
			||||||
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
 | 
					 | 
				
			||||||
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
 | 
					 | 
				
			||||||
go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 | 
					go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 | 
				
			||||||
go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
 | 
					go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
 | 
				
			||||||
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
 | 
					 | 
				
			||||||
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 | 
					go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 | 
				
			||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
					go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
				
			||||||
go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE=
 | 
					go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
 | 
				
			||||||
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
 | 
					go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
					golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
@@ -366,11 +356,9 @@ golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc=
 | 
				
			|||||||
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
 | 
					golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
 | 
				
			||||||
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
 | 
					golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
 | 
				
			||||||
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
 | 
					golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
 | 
				
			||||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
 | 
					 | 
				
			||||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
					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.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
				
			||||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 | 
					golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 | 
				
			||||||
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-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
 | 
					golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
					golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
@@ -401,8 +389,6 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
 | 
				
			|||||||
golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
 | 
					golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
 | 
				
			||||||
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 | 
					golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 | 
					 | 
				
			||||||
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/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-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/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-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 | 
					golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 | 
				
			||||||
@@ -428,7 +414,6 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
 | 
				
			|||||||
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
 | 
					google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
 | 
				
			||||||
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
					google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
				
			||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
					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-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 | 
					gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 | 
				
			||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 | 
					gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 | 
				
			||||||
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
 | 
					gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
 | 
				
			||||||
@@ -441,7 +426,6 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
				
			|||||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 | 
					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.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-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
					gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
 | 
					k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								staging/src/k8s.io/endpointslice/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										5
									
								
								staging/src/k8s.io/endpointslice/go.sum
									
									
									
										generated
									
									
									
								
							@@ -27,7 +27,7 @@ github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KE
 | 
				
			|||||||
github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
					github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
				
			||||||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
					github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
					github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4=
 | 
					github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
					github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
					github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
				
			||||||
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
					github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
				
			||||||
@@ -136,9 +136,8 @@ go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319
 | 
				
			|||||||
go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A=
 | 
					go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A=
 | 
				
			||||||
go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo=
 | 
					go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo=
 | 
				
			||||||
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
				
			||||||
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
 | 
					 | 
				
			||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
					go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
				
			||||||
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
 | 
					go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
					golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -82,9 +82,8 @@ require (
 | 
				
			|||||||
	go.opentelemetry.io/otel/sdk v1.19.0 // indirect
 | 
						go.opentelemetry.io/otel/sdk v1.19.0 // indirect
 | 
				
			||||||
	go.opentelemetry.io/otel/trace v1.19.0 // indirect
 | 
						go.opentelemetry.io/otel/trace v1.19.0 // indirect
 | 
				
			||||||
	go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 | 
						go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 | 
				
			||||||
	go.uber.org/atomic v1.10.0 // indirect
 | 
					 | 
				
			||||||
	go.uber.org/multierr v1.11.0 // indirect
 | 
						go.uber.org/multierr v1.11.0 // indirect
 | 
				
			||||||
	go.uber.org/zap v1.19.0 // indirect
 | 
						go.uber.org/zap v1.26.0 // indirect
 | 
				
			||||||
	golang.org/x/crypto v0.14.0 // indirect
 | 
						golang.org/x/crypto v0.14.0 // indirect
 | 
				
			||||||
	golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
						golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
				
			||||||
	golang.org/x/mod v0.12.0 // indirect
 | 
						golang.org/x/mod v0.12.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										24
									
								
								staging/src/k8s.io/kube-aggregator/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										24
									
								
								staging/src/k8s.io/kube-aggregator/go.sum
									
									
									
										generated
									
									
									
								
							@@ -130,8 +130,6 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd
 | 
				
			|||||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
					github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
				
			||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=
 | 
					github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=
 | 
				
			||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
					github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
				
			||||||
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
 | 
					 | 
				
			||||||
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
 | 
					 | 
				
			||||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
					github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
				
			||||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 | 
					github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 | 
				
			||||||
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 | 
					github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 | 
				
			||||||
@@ -175,8 +173,8 @@ github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
				
			|||||||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
					github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
					github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
					github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A=
 | 
					github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4=
 | 
					github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
					github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
					github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
				
			||||||
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
					github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
				
			||||||
@@ -244,7 +242,6 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm
 | 
				
			|||||||
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
 | 
					github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
 | 
				
			||||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 | 
					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/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 | 
				
			||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 | 
					 | 
				
			||||||
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
					github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
				
			||||||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
					github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
				
			||||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
					github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
				
			||||||
@@ -275,7 +272,6 @@ github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xl
 | 
				
			|||||||
github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg=
 | 
					github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg=
 | 
				
			||||||
github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
 | 
					github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
 | 
				
			||||||
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 | 
					github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 | 
				
			||||||
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 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 | 
				
			||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
					github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
@@ -307,9 +303,7 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
 | 
				
			|||||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 | 
					github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 | 
				
			||||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 | 
					github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 | 
				
			||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 | 
					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.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
 | 
				
			||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
					 | 
				
			||||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
					github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
				
			||||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 | 
					github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 | 
				
			||||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 | 
					github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 | 
				
			||||||
@@ -358,16 +352,12 @@ go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmY
 | 
				
			|||||||
go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
 | 
				
			||||||
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
				
			||||||
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 | 
					go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 | 
				
			||||||
go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ=
 | 
					 | 
				
			||||||
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
 | 
					 | 
				
			||||||
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
 | 
					 | 
				
			||||||
go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 | 
					go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 | 
				
			||||||
go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
 | 
					go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
 | 
				
			||||||
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
 | 
					 | 
				
			||||||
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 | 
					go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 | 
				
			||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
					go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
				
			||||||
go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE=
 | 
					go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
 | 
				
			||||||
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
 | 
					go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
					golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
@@ -375,12 +365,10 @@ golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc=
 | 
				
			|||||||
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
 | 
					golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
 | 
				
			||||||
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
 | 
					golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
 | 
				
			||||||
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
 | 
					golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
 | 
				
			||||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
 | 
					 | 
				
			||||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
					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.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
				
			||||||
golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
 | 
					golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
 | 
				
			||||||
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 | 
					golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 | 
				
			||||||
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-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
 | 
					golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
					golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
@@ -411,8 +399,6 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
 | 
				
			|||||||
golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
 | 
					golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
 | 
				
			||||||
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 | 
					golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 | 
					 | 
				
			||||||
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/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-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/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-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 | 
					golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 | 
				
			||||||
@@ -439,7 +425,6 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
 | 
				
			|||||||
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
 | 
					google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
 | 
				
			||||||
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
					google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
				
			||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
					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-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
				
			||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 | 
					gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 | 
				
			||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 | 
					gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 | 
				
			||||||
@@ -453,7 +438,6 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
				
			|||||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 | 
					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.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-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
					gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 h1:pWEwq4Asjm4vjW7vcsmijwBhOr1/shsbSYiWXmNGlks=
 | 
					k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 h1:pWEwq4Asjm4vjW7vcsmijwBhOr1/shsbSYiWXmNGlks=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@ github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyT
 | 
				
			|||||||
github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
					github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
				
			||||||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
					github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
					github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4=
 | 
					github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
					github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
				
			||||||
github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
 | 
					github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
 | 
				
			||||||
github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
 | 
					github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
 | 
				
			||||||
@@ -99,9 +99,8 @@ go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319
 | 
				
			|||||||
go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A=
 | 
					go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A=
 | 
				
			||||||
go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo=
 | 
					go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo=
 | 
				
			||||||
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
				
			||||||
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
 | 
					 | 
				
			||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
					go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
				
			||||||
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
 | 
					go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
					golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								staging/src/k8s.io/kube-proxy/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										5
									
								
								staging/src/k8s.io/kube-proxy/go.sum
									
									
									
										generated
									
									
									
								
							@@ -22,7 +22,7 @@ github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KE
 | 
				
			|||||||
github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
					github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
				
			||||||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
					github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
					github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4=
 | 
					github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
					github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
				
			||||||
github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
 | 
					github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
 | 
				
			||||||
github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
 | 
					github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
 | 
				
			||||||
@@ -105,9 +105,8 @@ go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319
 | 
				
			|||||||
go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A=
 | 
					go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A=
 | 
				
			||||||
go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo=
 | 
					go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo=
 | 
				
			||||||
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
				
			||||||
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
 | 
					 | 
				
			||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
					go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
				
			||||||
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
 | 
					go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
					golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								staging/src/k8s.io/kube-scheduler/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										5
									
								
								staging/src/k8s.io/kube-scheduler/go.sum
									
									
									
										generated
									
									
									
								
							@@ -13,7 +13,7 @@ github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw
 | 
				
			|||||||
github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
					github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
				
			||||||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
					github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
					github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4=
 | 
					github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
					github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
				
			||||||
github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
 | 
					github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
 | 
				
			||||||
github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
 | 
					github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
 | 
				
			||||||
@@ -80,9 +80,8 @@ go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319
 | 
				
			|||||||
go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A=
 | 
					go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A=
 | 
				
			||||||
go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo=
 | 
					go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo=
 | 
				
			||||||
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
				
			||||||
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
 | 
					 | 
				
			||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
					go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
				
			||||||
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
 | 
					go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
					golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								staging/src/k8s.io/kubectl/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										5
									
								
								staging/src/k8s.io/kubectl/go.sum
									
									
									
										generated
									
									
									
								
							@@ -50,7 +50,7 @@ github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3Bop
 | 
				
			|||||||
github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
					github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
				
			||||||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
					github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
					github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4=
 | 
					github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
					github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
					github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
				
			||||||
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
					github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
				
			||||||
@@ -208,9 +208,8 @@ go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmY
 | 
				
			|||||||
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
				
			||||||
go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93VanwNIi5bIKnDrJdEY=
 | 
					go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93VanwNIi5bIKnDrJdEY=
 | 
				
			||||||
go.starlark.net v0.0.0-20230525235612-a134d8f9ddca/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds=
 | 
					go.starlark.net v0.0.0-20230525235612-a134d8f9ddca/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds=
 | 
				
			||||||
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
 | 
					 | 
				
			||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
					go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
				
			||||||
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
 | 
					go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
					golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								staging/src/k8s.io/kubelet/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										5
									
								
								staging/src/k8s.io/kubelet/go.sum
									
									
									
										generated
									
									
									
								
							@@ -38,7 +38,7 @@ github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KE
 | 
				
			|||||||
github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
					github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
				
			||||||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
					github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
					github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4=
 | 
					github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
					github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
					github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
				
			||||||
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
					github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
				
			||||||
@@ -166,9 +166,8 @@ go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319
 | 
				
			|||||||
go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A=
 | 
					go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A=
 | 
				
			||||||
go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo=
 | 
					go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo=
 | 
				
			||||||
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
				
			||||||
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
 | 
					 | 
				
			||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
					go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
				
			||||||
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
 | 
					go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
					golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								staging/src/k8s.io/legacy-cloud-providers/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										5
									
								
								staging/src/k8s.io/legacy-cloud-providers/go.sum
									
									
									
										generated
									
									
									
								
							@@ -139,7 +139,7 @@ github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7
 | 
				
			|||||||
github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
					github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
				
			||||||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
					github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
					github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4=
 | 
					github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
					github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
					github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
				
			||||||
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
					github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
				
			||||||
@@ -369,9 +369,8 @@ go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+Gf
 | 
				
			|||||||
go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo=
 | 
					go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo=
 | 
				
			||||||
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
 | 
					go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
 | 
				
			||||||
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
				
			||||||
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
 | 
					 | 
				
			||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
					go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
				
			||||||
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
 | 
					go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					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-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-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,7 +36,7 @@ require (
 | 
				
			|||||||
	github.com/fsnotify/fsnotify v1.7.0 // indirect
 | 
						github.com/fsnotify/fsnotify v1.7.0 // indirect
 | 
				
			||||||
	github.com/go-logr/logr v1.3.0 // indirect
 | 
						github.com/go-logr/logr v1.3.0 // indirect
 | 
				
			||||||
	github.com/go-logr/stdr v1.2.2 // indirect
 | 
						github.com/go-logr/stdr v1.2.2 // indirect
 | 
				
			||||||
	github.com/go-logr/zapr v1.2.3 // indirect
 | 
						github.com/go-logr/zapr v1.3.0 // indirect
 | 
				
			||||||
	github.com/go-openapi/jsonpointer v0.19.6 // indirect
 | 
						github.com/go-openapi/jsonpointer v0.19.6 // indirect
 | 
				
			||||||
	github.com/go-openapi/jsonreference v0.20.2 // indirect
 | 
						github.com/go-openapi/jsonreference v0.20.2 // indirect
 | 
				
			||||||
	github.com/go-openapi/swag v0.22.3 // indirect
 | 
						github.com/go-openapi/swag v0.22.3 // indirect
 | 
				
			||||||
@@ -77,9 +77,8 @@ require (
 | 
				
			|||||||
	go.opentelemetry.io/otel/sdk v1.19.0 // indirect
 | 
						go.opentelemetry.io/otel/sdk v1.19.0 // indirect
 | 
				
			||||||
	go.opentelemetry.io/otel/trace v1.19.0 // indirect
 | 
						go.opentelemetry.io/otel/trace v1.19.0 // indirect
 | 
				
			||||||
	go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 | 
						go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 | 
				
			||||||
	go.uber.org/atomic v1.10.0 // indirect
 | 
					 | 
				
			||||||
	go.uber.org/multierr v1.11.0 // indirect
 | 
						go.uber.org/multierr v1.11.0 // indirect
 | 
				
			||||||
	go.uber.org/zap v1.19.0 // indirect
 | 
						go.uber.org/zap v1.26.0 // indirect
 | 
				
			||||||
	golang.org/x/crypto v0.14.0 // indirect
 | 
						golang.org/x/crypto v0.14.0 // indirect
 | 
				
			||||||
	golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
						golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
				
			||||||
	golang.org/x/net v0.17.0 // indirect
 | 
						golang.org/x/net v0.17.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										24
									
								
								staging/src/k8s.io/pod-security-admission/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										24
									
								
								staging/src/k8s.io/pod-security-admission/go.sum
									
									
									
										generated
									
									
									
								
							@@ -129,8 +129,6 @@ github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/g
 | 
				
			|||||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
					github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
				
			||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=
 | 
					github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=
 | 
				
			||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
					github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
				
			||||||
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
 | 
					 | 
				
			||||||
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
 | 
					 | 
				
			||||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
					github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
				
			||||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 | 
					github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 | 
				
			||||||
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 | 
					github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 | 
				
			||||||
@@ -173,8 +171,8 @@ github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
				
			|||||||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
					github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
					github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
					github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A=
 | 
					github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4=
 | 
					github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
					github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
					github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
				
			||||||
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
					github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
				
			||||||
@@ -239,7 +237,6 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm
 | 
				
			|||||||
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
 | 
					github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
 | 
				
			||||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 | 
					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/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 | 
				
			||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 | 
					 | 
				
			||||||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
					github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
				
			||||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
					github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
				
			||||||
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
 | 
					github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
 | 
				
			||||||
@@ -267,7 +264,6 @@ github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xl
 | 
				
			|||||||
github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg=
 | 
					github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg=
 | 
				
			||||||
github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
 | 
					github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
 | 
				
			||||||
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 | 
					github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 | 
				
			||||||
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 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 | 
				
			||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
					github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
@@ -299,9 +295,7 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
 | 
				
			|||||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 | 
					github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 | 
				
			||||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 | 
					github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 | 
				
			||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 | 
					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.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
 | 
				
			||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
					 | 
				
			||||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
					github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
				
			||||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 | 
					github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 | 
				
			||||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 | 
					github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 | 
				
			||||||
@@ -349,16 +343,12 @@ go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmY
 | 
				
			|||||||
go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
 | 
				
			||||||
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
				
			||||||
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 | 
					go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 | 
				
			||||||
go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ=
 | 
					 | 
				
			||||||
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
 | 
					 | 
				
			||||||
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
 | 
					 | 
				
			||||||
go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 | 
					go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 | 
				
			||||||
go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
 | 
					go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
 | 
				
			||||||
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
 | 
					 | 
				
			||||||
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 | 
					go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 | 
				
			||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
					go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
				
			||||||
go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE=
 | 
					go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
 | 
				
			||||||
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
 | 
					go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
					golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
@@ -366,11 +356,9 @@ golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc=
 | 
				
			|||||||
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
 | 
					golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
 | 
				
			||||||
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
 | 
					golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
 | 
				
			||||||
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
 | 
					golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
 | 
				
			||||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
 | 
					 | 
				
			||||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
					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.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
				
			||||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 | 
					golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 | 
				
			||||||
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-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
 | 
					golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
					golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
@@ -401,8 +389,6 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
 | 
				
			|||||||
golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
 | 
					golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
 | 
				
			||||||
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 | 
					golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 | 
					 | 
				
			||||||
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/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-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/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-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 | 
					golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 | 
				
			||||||
@@ -428,7 +414,6 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
 | 
				
			|||||||
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
 | 
					google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
 | 
				
			||||||
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
					google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
				
			||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
					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-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 | 
					gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 | 
				
			||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 | 
					gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 | 
				
			||||||
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
 | 
					gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
 | 
				
			||||||
@@ -441,7 +426,6 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
				
			|||||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 | 
					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.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-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
					gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
 | 
					k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -74,9 +74,8 @@ require (
 | 
				
			|||||||
	go.opentelemetry.io/otel/sdk v1.19.0 // indirect
 | 
						go.opentelemetry.io/otel/sdk v1.19.0 // indirect
 | 
				
			||||||
	go.opentelemetry.io/otel/trace v1.19.0 // indirect
 | 
						go.opentelemetry.io/otel/trace v1.19.0 // indirect
 | 
				
			||||||
	go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 | 
						go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 | 
				
			||||||
	go.uber.org/atomic v1.10.0 // indirect
 | 
					 | 
				
			||||||
	go.uber.org/multierr v1.11.0 // indirect
 | 
						go.uber.org/multierr v1.11.0 // indirect
 | 
				
			||||||
	go.uber.org/zap v1.19.0 // indirect
 | 
						go.uber.org/zap v1.26.0 // indirect
 | 
				
			||||||
	golang.org/x/crypto v0.14.0 // indirect
 | 
						golang.org/x/crypto v0.14.0 // indirect
 | 
				
			||||||
	golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
						golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
				
			||||||
	golang.org/x/mod v0.12.0 // indirect
 | 
						golang.org/x/mod v0.12.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										24
									
								
								staging/src/k8s.io/sample-apiserver/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										24
									
								
								staging/src/k8s.io/sample-apiserver/go.sum
									
									
									
										generated
									
									
									
								
							@@ -129,8 +129,6 @@ github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/g
 | 
				
			|||||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
					github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
				
			||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=
 | 
					github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=
 | 
				
			||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
					github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
				
			||||||
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
 | 
					 | 
				
			||||||
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
 | 
					 | 
				
			||||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
					github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
				
			||||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 | 
					github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 | 
				
			||||||
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 | 
					github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 | 
				
			||||||
@@ -174,8 +172,8 @@ github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
 | 
				
			|||||||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
					github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
					github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
				
			||||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
					github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A=
 | 
					github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
 | 
				
			||||||
github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4=
 | 
					github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
					github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 | 
				
			||||||
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
					github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 | 
				
			||||||
github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
					github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
 | 
				
			||||||
@@ -242,7 +240,6 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm
 | 
				
			|||||||
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
 | 
					github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
 | 
				
			||||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 | 
					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/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 | 
				
			||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 | 
					 | 
				
			||||||
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
					github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
				
			||||||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
					github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
				
			||||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
					github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
				
			||||||
@@ -271,7 +268,6 @@ github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xl
 | 
				
			|||||||
github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg=
 | 
					github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg=
 | 
				
			||||||
github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
 | 
					github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
 | 
				
			||||||
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 | 
					github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 | 
				
			||||||
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 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 | 
				
			||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
					github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
@@ -303,9 +299,7 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
 | 
				
			|||||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 | 
					github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 | 
				
			||||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 | 
					github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 | 
				
			||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 | 
					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.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
 | 
				
			||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
					 | 
				
			||||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
					github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
				
			||||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 | 
					github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 | 
				
			||||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 | 
					github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 | 
				
			||||||
@@ -354,16 +348,12 @@ go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmY
 | 
				
			|||||||
go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
 | 
				
			||||||
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
					go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
 | 
				
			||||||
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 | 
					go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 | 
				
			||||||
go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ=
 | 
					 | 
				
			||||||
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
 | 
					 | 
				
			||||||
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
 | 
					 | 
				
			||||||
go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 | 
					go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 | 
				
			||||||
go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
 | 
					go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
 | 
				
			||||||
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
 | 
					 | 
				
			||||||
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 | 
					go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 | 
				
			||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
					go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 | 
				
			||||||
go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE=
 | 
					go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
 | 
				
			||||||
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
 | 
					go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
					golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
@@ -371,12 +361,10 @@ golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc=
 | 
				
			|||||||
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
 | 
					golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
 | 
				
			||||||
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
 | 
					golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
 | 
				
			||||||
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
 | 
					golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
 | 
				
			||||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
 | 
					 | 
				
			||||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
					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.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
				
			||||||
golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
 | 
					golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
 | 
				
			||||||
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 | 
					golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 | 
				
			||||||
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-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
 | 
					golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
					golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
@@ -407,8 +395,6 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
 | 
				
			|||||||
golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
 | 
					golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
 | 
				
			||||||
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 | 
					golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 | 
					 | 
				
			||||||
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/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-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/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-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 | 
					golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 | 
				
			||||||
@@ -435,7 +421,6 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
 | 
				
			|||||||
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
 | 
					google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
 | 
				
			||||||
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
					google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
				
			||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
					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-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
				
			||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 | 
					gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 | 
				
			||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 | 
					gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 | 
				
			||||||
@@ -449,7 +434,6 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
				
			|||||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 | 
					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.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-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
					gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 h1:pWEwq4Asjm4vjW7vcsmijwBhOr1/shsbSYiWXmNGlks=
 | 
					k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 h1:pWEwq4Asjm4vjW7vcsmijwBhOr1/shsbSYiWXmNGlks=
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										20
									
								
								vendor/github.com/go-logr/zapr/.golangci.yaml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								vendor/github.com/go-logr/zapr/.golangci.yaml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					issues:
 | 
				
			||||||
 | 
					  exclude-use-default: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					linters:
 | 
				
			||||||
 | 
					  disable-all: true
 | 
				
			||||||
 | 
					  enable:
 | 
				
			||||||
 | 
					  - asciicheck
 | 
				
			||||||
 | 
					  - errcheck
 | 
				
			||||||
 | 
					  - forcetypeassert
 | 
				
			||||||
 | 
					  - gocritic
 | 
				
			||||||
 | 
					  - gofmt
 | 
				
			||||||
 | 
					  - goimports
 | 
				
			||||||
 | 
					  - gosimple
 | 
				
			||||||
 | 
					  - govet
 | 
				
			||||||
 | 
					  - ineffassign
 | 
				
			||||||
 | 
					  - misspell
 | 
				
			||||||
 | 
					  - revive
 | 
				
			||||||
 | 
					  - staticcheck
 | 
				
			||||||
 | 
					  - typecheck
 | 
				
			||||||
 | 
					  - unused
 | 
				
			||||||
							
								
								
									
										39
									
								
								vendor/github.com/go-logr/zapr/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										39
									
								
								vendor/github.com/go-logr/zapr/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,12 +2,17 @@ Zapr :zap:
 | 
				
			|||||||
==========
 | 
					==========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
A [logr](https://github.com/go-logr/logr) implementation using
 | 
					A [logr](https://github.com/go-logr/logr) implementation using
 | 
				
			||||||
[Zap](https://github.com/uber-go/zap).
 | 
					[Zap](https://github.com/uber-go/zap). Can also be used as
 | 
				
			||||||
 | 
					[slog](https://pkg.go.dev/log/slog) handler.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Usage
 | 
					Usage
 | 
				
			||||||
-----
 | 
					-----
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Via logr:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```go
 | 
					```go
 | 
				
			||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
    "fmt"
 | 
					    "fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -29,6 +34,33 @@ func main() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Via slog:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"log/slog"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/go-logr/logr/slogr"
 | 
				
			||||||
 | 
						"github.com/go-logr/zapr"
 | 
				
			||||||
 | 
						"go.uber.org/zap"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						var log *slog.Logger
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zapLog, err := zap.NewDevelopment()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							panic(fmt.Sprintf("who watches the watchmen (%v)?", err))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						log = slog.New(slogr.NewSlogHandler(zapr.NewLogger(zapLog)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						log.Info("Logr in action!", "the answer", 42)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Increasing Verbosity
 | 
					Increasing Verbosity
 | 
				
			||||||
--------------------
 | 
					--------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -68,3 +100,8 @@ For the most part, concepts in Zap correspond directly with those in logr.
 | 
				
			|||||||
Unlike Zap, all fields *must* be in the form of sugared fields --
 | 
					Unlike Zap, all fields *must* be in the form of sugared fields --
 | 
				
			||||||
it's illegal to pass a strongly-typed Zap field in a key position to any
 | 
					it's illegal to pass a strongly-typed Zap field in a key position to any
 | 
				
			||||||
of the logging methods (`Log`, `Error`).
 | 
					of the logging methods (`Log`, `Error`).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The zapr `logr.LogSink` implementation also implements `logr.SlogHandler`. That
 | 
				
			||||||
 | 
					enables `slogr.NewSlogHandler` to provide a `slog.Handler` which just passes
 | 
				
			||||||
 | 
					parameters through to zapr. zapr handles special slog values (Group,
 | 
				
			||||||
 | 
					LogValuer), regardless of which front-end API is used.
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										183
									
								
								vendor/github.com/go-logr/zapr/slogzapr.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										183
									
								
								vendor/github.com/go-logr/zapr/slogzapr.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,183 @@
 | 
				
			|||||||
 | 
					//go:build go1.21
 | 
				
			||||||
 | 
					// +build go1.21
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2023 The logr Authors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					You may obtain a copy of the License at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					limitations under the License.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package zapr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"log/slog"
 | 
				
			||||||
 | 
						"runtime"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/go-logr/logr/slogr"
 | 
				
			||||||
 | 
						"go.uber.org/zap"
 | 
				
			||||||
 | 
						"go.uber.org/zap/zapcore"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var _ slogr.SlogSink = &zapLogger{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (zl *zapLogger) Handle(_ context.Context, record slog.Record) error {
 | 
				
			||||||
 | 
						zapLevel := zap.InfoLevel
 | 
				
			||||||
 | 
						intLevel := 0
 | 
				
			||||||
 | 
						isError := false
 | 
				
			||||||
 | 
						switch {
 | 
				
			||||||
 | 
						case record.Level >= slog.LevelError:
 | 
				
			||||||
 | 
							zapLevel = zap.ErrorLevel
 | 
				
			||||||
 | 
							isError = true
 | 
				
			||||||
 | 
						case record.Level >= slog.LevelWarn:
 | 
				
			||||||
 | 
							zapLevel = zap.WarnLevel
 | 
				
			||||||
 | 
						case record.Level >= 0:
 | 
				
			||||||
 | 
							// Already set above -> info.
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							zapLevel = zapcore.Level(record.Level)
 | 
				
			||||||
 | 
							intLevel = int(-zapLevel)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if checkedEntry := zl.l.Check(zapLevel, record.Message); checkedEntry != nil {
 | 
				
			||||||
 | 
							checkedEntry.Time = record.Time
 | 
				
			||||||
 | 
							checkedEntry.Caller = pcToCallerEntry(record.PC)
 | 
				
			||||||
 | 
							var fieldsBuffer [2]zap.Field
 | 
				
			||||||
 | 
							fields := fieldsBuffer[:0]
 | 
				
			||||||
 | 
							if !isError && zl.numericLevelKey != "" {
 | 
				
			||||||
 | 
								// Record verbosity for info entries.
 | 
				
			||||||
 | 
								fields = append(fields, zap.Int(zl.numericLevelKey, intLevel))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							// Inline all attributes.
 | 
				
			||||||
 | 
							fields = append(fields, zap.Inline(zapcore.ObjectMarshalerFunc(func(enc zapcore.ObjectEncoder) error {
 | 
				
			||||||
 | 
								record.Attrs(func(attr slog.Attr) bool {
 | 
				
			||||||
 | 
									encodeSlog(enc, attr)
 | 
				
			||||||
 | 
									return true
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
								return nil
 | 
				
			||||||
 | 
							})))
 | 
				
			||||||
 | 
							checkedEntry.Write(fields...)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func encodeSlog(enc zapcore.ObjectEncoder, attr slog.Attr) {
 | 
				
			||||||
 | 
						if attr.Equal(slog.Attr{}) {
 | 
				
			||||||
 | 
							// Ignore empty attribute.
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Check in order of expected frequency, most common ones first.
 | 
				
			||||||
 | 
						//
 | 
				
			||||||
 | 
						// Usage statistics for parameters from Kubernetes 152876a3e,
 | 
				
			||||||
 | 
						// calculated with k/k/test/integration/logs/benchmark:
 | 
				
			||||||
 | 
						//
 | 
				
			||||||
 | 
						// kube-controller-manager -v10:
 | 
				
			||||||
 | 
						// strings: 10043 (85%)
 | 
				
			||||||
 | 
						// with API objects: 2 (0% of all arguments)
 | 
				
			||||||
 | 
						//   types and their number of usage: NodeStatus:2
 | 
				
			||||||
 | 
						// numbers: 792 (6%)
 | 
				
			||||||
 | 
						// ObjectRef: 292 (2%)
 | 
				
			||||||
 | 
						// others: 595 (5%)
 | 
				
			||||||
 | 
						//
 | 
				
			||||||
 | 
						// kube-scheduler -v10:
 | 
				
			||||||
 | 
						// strings: 1325 (40%)
 | 
				
			||||||
 | 
						// with API objects: 109 (3% of all arguments)
 | 
				
			||||||
 | 
						//   types and their number of usage: PersistentVolume:50 PersistentVolumeClaim:59
 | 
				
			||||||
 | 
						// numbers: 473 (14%)
 | 
				
			||||||
 | 
						// ObjectRef: 1305 (39%)
 | 
				
			||||||
 | 
						// others: 176 (5%)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						kind := attr.Value.Kind()
 | 
				
			||||||
 | 
						switch kind {
 | 
				
			||||||
 | 
						case slog.KindString:
 | 
				
			||||||
 | 
							enc.AddString(attr.Key, attr.Value.String())
 | 
				
			||||||
 | 
						case slog.KindLogValuer:
 | 
				
			||||||
 | 
							// This includes klog.KObj.
 | 
				
			||||||
 | 
							encodeSlog(enc, slog.Attr{
 | 
				
			||||||
 | 
								Key:   attr.Key,
 | 
				
			||||||
 | 
								Value: attr.Value.Resolve(),
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						case slog.KindInt64:
 | 
				
			||||||
 | 
							enc.AddInt64(attr.Key, attr.Value.Int64())
 | 
				
			||||||
 | 
						case slog.KindUint64:
 | 
				
			||||||
 | 
							enc.AddUint64(attr.Key, attr.Value.Uint64())
 | 
				
			||||||
 | 
						case slog.KindFloat64:
 | 
				
			||||||
 | 
							enc.AddFloat64(attr.Key, attr.Value.Float64())
 | 
				
			||||||
 | 
						case slog.KindBool:
 | 
				
			||||||
 | 
							enc.AddBool(attr.Key, attr.Value.Bool())
 | 
				
			||||||
 | 
						case slog.KindDuration:
 | 
				
			||||||
 | 
							enc.AddDuration(attr.Key, attr.Value.Duration())
 | 
				
			||||||
 | 
						case slog.KindTime:
 | 
				
			||||||
 | 
							enc.AddTime(attr.Key, attr.Value.Time())
 | 
				
			||||||
 | 
						case slog.KindGroup:
 | 
				
			||||||
 | 
							attrs := attr.Value.Group()
 | 
				
			||||||
 | 
							if attr.Key == "" {
 | 
				
			||||||
 | 
								// Inline group.
 | 
				
			||||||
 | 
								for _, attr := range attrs {
 | 
				
			||||||
 | 
									encodeSlog(enc, attr)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if len(attrs) == 0 {
 | 
				
			||||||
 | 
								// Ignore empty group.
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							_ = enc.AddObject(attr.Key, marshalAttrs(attrs))
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							// We have to go through reflection in zap.Any to get support
 | 
				
			||||||
 | 
							// for e.g. fmt.Stringer.
 | 
				
			||||||
 | 
							zap.Any(attr.Key, attr.Value.Any()).AddTo(enc)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type marshalAttrs []slog.Attr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (attrs marshalAttrs) MarshalLogObject(enc zapcore.ObjectEncoder) error {
 | 
				
			||||||
 | 
						for _, attr := range attrs {
 | 
				
			||||||
 | 
							encodeSlog(enc, attr)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var _ zapcore.ObjectMarshaler = marshalAttrs(nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func pcToCallerEntry(pc uintptr) zapcore.EntryCaller {
 | 
				
			||||||
 | 
						if pc == 0 {
 | 
				
			||||||
 | 
							return zapcore.EntryCaller{}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						// Same as https://cs.opensource.google/go/x/exp/+/642cacee:slog/record.go;drc=642cacee5cc05231f45555a333d07f1005ffc287;l=70
 | 
				
			||||||
 | 
						fs := runtime.CallersFrames([]uintptr{pc})
 | 
				
			||||||
 | 
						f, _ := fs.Next()
 | 
				
			||||||
 | 
						if f.File == "" {
 | 
				
			||||||
 | 
							return zapcore.EntryCaller{}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return zapcore.EntryCaller{
 | 
				
			||||||
 | 
							Defined:  true,
 | 
				
			||||||
 | 
							PC:       pc,
 | 
				
			||||||
 | 
							File:     f.File,
 | 
				
			||||||
 | 
							Line:     f.Line,
 | 
				
			||||||
 | 
							Function: f.Function,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (zl *zapLogger) WithAttrs(attrs []slog.Attr) slogr.SlogSink {
 | 
				
			||||||
 | 
						newLogger := *zl
 | 
				
			||||||
 | 
						newLogger.l = newLogger.l.With(zap.Inline(marshalAttrs(attrs)))
 | 
				
			||||||
 | 
						return &newLogger
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (zl *zapLogger) WithGroup(name string) slogr.SlogSink {
 | 
				
			||||||
 | 
						newLogger := *zl
 | 
				
			||||||
 | 
						newLogger.l = newLogger.l.With(zap.Namespace(name))
 | 
				
			||||||
 | 
						return &newLogger
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										13
									
								
								vendor/github.com/go-logr/zapr/zapr.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								vendor/github.com/go-logr/zapr/zapr.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -31,14 +31,14 @@ limitations under the License.
 | 
				
			|||||||
// Package zapr defines an implementation of the github.com/go-logr/logr
 | 
					// Package zapr defines an implementation of the github.com/go-logr/logr
 | 
				
			||||||
// interfaces built on top of Zap (go.uber.org/zap).
 | 
					// interfaces built on top of Zap (go.uber.org/zap).
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Usage
 | 
					// # Usage
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// A new logr.Logger can be constructed from an existing zap.Logger using
 | 
					// A new logr.Logger can be constructed from an existing zap.Logger using
 | 
				
			||||||
// the NewLogger function:
 | 
					// the NewLogger function:
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
//	log := zapr.NewLogger(someZapLogger)
 | 
					//	log := zapr.NewLogger(someZapLogger)
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Implementation Details
 | 
					// # Implementation Details
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// For the most part, concepts in Zap correspond directly with those in
 | 
					// For the most part, concepts in Zap correspond directly with those in
 | 
				
			||||||
// logr.
 | 
					// logr.
 | 
				
			||||||
@@ -168,15 +168,6 @@ func (zl *zapLogger) handleFields(lvl int, args []interface{}, additional ...zap
 | 
				
			|||||||
	return append(fields, additional...)
 | 
						return append(fields, additional...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func zapIt(field string, val interface{}) zap.Field {
 | 
					 | 
				
			||||||
	// Handle types that implement logr.Marshaler: log the replacement
 | 
					 | 
				
			||||||
	// object instead of the original one.
 | 
					 | 
				
			||||||
	if marshaler, ok := val.(logr.Marshaler); ok {
 | 
					 | 
				
			||||||
		field, val = invokeMarshaler(field, marshaler)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return zap.Any(field, val)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func invokeMarshaler(field string, m logr.Marshaler) (f string, ret interface{}) {
 | 
					func invokeMarshaler(field string, m logr.Marshaler) (f string, ret interface{}) {
 | 
				
			||||||
	defer func() {
 | 
						defer func() {
 | 
				
			||||||
		if r := recover(); r != nil {
 | 
							if r := recover(); r != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										34
									
								
								vendor/github.com/go-logr/zapr/zapr_noslog.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								vendor/github.com/go-logr/zapr/zapr_noslog.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					//go:build !go1.21
 | 
				
			||||||
 | 
					// +build !go1.21
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2023 The logr Authors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					You may obtain a copy of the License at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					limitations under the License.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package zapr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"github.com/go-logr/logr"
 | 
				
			||||||
 | 
						"go.uber.org/zap"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func zapIt(field string, val interface{}) zap.Field {
 | 
				
			||||||
 | 
						// Handle types that implement logr.Marshaler: log the replacement
 | 
				
			||||||
 | 
						// object instead of the original one.
 | 
				
			||||||
 | 
						if marshaler, ok := val.(logr.Marshaler); ok {
 | 
				
			||||||
 | 
							field, val = invokeMarshaler(field, marshaler)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return zap.Any(field, val)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										48
									
								
								vendor/github.com/go-logr/zapr/zapr_slog.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								vendor/github.com/go-logr/zapr/zapr_slog.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
				
			|||||||
 | 
					//go:build go1.21
 | 
				
			||||||
 | 
					// +build go1.21
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2023 The logr Authors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					You may obtain a copy of the License at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					limitations under the License.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package zapr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"log/slog"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/go-logr/logr"
 | 
				
			||||||
 | 
						"go.uber.org/zap"
 | 
				
			||||||
 | 
						"go.uber.org/zap/zapcore"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func zapIt(field string, val interface{}) zap.Field {
 | 
				
			||||||
 | 
						switch valTyped := val.(type) {
 | 
				
			||||||
 | 
						case logr.Marshaler:
 | 
				
			||||||
 | 
							// Handle types that implement logr.Marshaler: log the replacement
 | 
				
			||||||
 | 
							// object instead of the original one.
 | 
				
			||||||
 | 
							field, val = invokeMarshaler(field, valTyped)
 | 
				
			||||||
 | 
						case slog.LogValuer:
 | 
				
			||||||
 | 
							// The same for slog.LogValuer. We let slog.Value handle
 | 
				
			||||||
 | 
							// potential panics and recursion.
 | 
				
			||||||
 | 
							val = slog.AnyValue(val).Resolve()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if slogValue, ok := val.(slog.Value); ok {
 | 
				
			||||||
 | 
							return zap.Inline(zapcore.ObjectMarshalerFunc(func(enc zapcore.ObjectEncoder) error {
 | 
				
			||||||
 | 
								encodeSlog(enc, slog.Attr{Key: field, Value: slogValue})
 | 
				
			||||||
 | 
								return nil
 | 
				
			||||||
 | 
							}))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return zap.Any(field, val)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										19
									
								
								vendor/go.uber.org/atomic/.codecov.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								vendor/go.uber.org/atomic/.codecov.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,19 +0,0 @@
 | 
				
			|||||||
coverage:
 | 
					 | 
				
			||||||
  range: 80..100
 | 
					 | 
				
			||||||
  round: down
 | 
					 | 
				
			||||||
  precision: 2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  status:
 | 
					 | 
				
			||||||
    project:                   # measuring the overall project coverage
 | 
					 | 
				
			||||||
      default:                 # context, you can create multiple ones with custom titles
 | 
					 | 
				
			||||||
        enabled: yes           # must be yes|true to enable this status
 | 
					 | 
				
			||||||
        target: 100            # specify the target coverage for each commit status
 | 
					 | 
				
			||||||
                               #   option: "auto" (must increase from parent commit or pull request base)
 | 
					 | 
				
			||||||
                               #   option: "X%" a static target percentage to hit
 | 
					 | 
				
			||||||
        if_not_found: success  # if parent is not found report status as success, error, or failure
 | 
					 | 
				
			||||||
        if_ci_failed: error    # if ci fails report status as success, error, or failure
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Also update COVER_IGNORE_PKGS in the Makefile.
 | 
					 | 
				
			||||||
ignore:
 | 
					 | 
				
			||||||
  - /internal/gen-atomicint/
 | 
					 | 
				
			||||||
  - /internal/gen-valuewrapper/
 | 
					 | 
				
			||||||
							
								
								
									
										15
									
								
								vendor/go.uber.org/atomic/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								vendor/go.uber.org/atomic/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,15 +0,0 @@
 | 
				
			|||||||
/bin
 | 
					 | 
				
			||||||
.DS_Store
 | 
					 | 
				
			||||||
/vendor
 | 
					 | 
				
			||||||
cover.html
 | 
					 | 
				
			||||||
cover.out
 | 
					 | 
				
			||||||
lint.log
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Binaries
 | 
					 | 
				
			||||||
*.test
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Profiling output
 | 
					 | 
				
			||||||
*.prof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Output of fossa analyzer
 | 
					 | 
				
			||||||
/fossa
 | 
					 | 
				
			||||||
							
								
								
									
										117
									
								
								vendor/go.uber.org/atomic/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										117
									
								
								vendor/go.uber.org/atomic/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,117 +0,0 @@
 | 
				
			|||||||
# Changelog
 | 
					 | 
				
			||||||
All notable changes to this project will be documented in this file.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
 | 
					 | 
				
			||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## [1.10.0] - 2022-08-11
 | 
					 | 
				
			||||||
### Added
 | 
					 | 
				
			||||||
- Add `atomic.Float32` type for atomic operations on `float32`.
 | 
					 | 
				
			||||||
- Add `CompareAndSwap` and `Swap` methods to `atomic.String`, `atomic.Error`,
 | 
					 | 
				
			||||||
  and `atomic.Value`.
 | 
					 | 
				
			||||||
- Add generic `atomic.Pointer[T]` type for atomic operations on pointers of any
 | 
					 | 
				
			||||||
  type. This is present only for Go 1.18 or higher, and is a drop-in for
 | 
					 | 
				
			||||||
  replacement for the standard library's `sync/atomic.Pointer` type.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### Changed
 | 
					 | 
				
			||||||
- Deprecate `CAS` methods on all types in favor of corresponding
 | 
					 | 
				
			||||||
  `CompareAndSwap` methods.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Thanks to @eNV25 and @icpd for their contributions to this release.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[1.10.0]: https://github.com/uber-go/atomic/compare/v1.9.0...v1.10.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## [1.9.0] - 2021-07-15
 | 
					 | 
				
			||||||
### Added
 | 
					 | 
				
			||||||
- Add `Float64.Swap` to match int atomic operations.
 | 
					 | 
				
			||||||
- Add `atomic.Time` type for atomic operations on `time.Time` values.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[1.9.0]: https://github.com/uber-go/atomic/compare/v1.8.0...v1.9.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## [1.8.0] - 2021-06-09
 | 
					 | 
				
			||||||
### Added
 | 
					 | 
				
			||||||
- Add `atomic.Uintptr` type for atomic operations on `uintptr` values.
 | 
					 | 
				
			||||||
- Add `atomic.UnsafePointer` type for atomic operations on `unsafe.Pointer` values.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[1.8.0]: https://github.com/uber-go/atomic/compare/v1.7.0...v1.8.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## [1.7.0] - 2020-09-14
 | 
					 | 
				
			||||||
### Added
 | 
					 | 
				
			||||||
- Support JSON serialization and deserialization of primitive atomic types.
 | 
					 | 
				
			||||||
- Support Text marshalling and unmarshalling for string atomics.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### Changed
 | 
					 | 
				
			||||||
- Disallow incorrect comparison of atomic values in a non-atomic way.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### Removed
 | 
					 | 
				
			||||||
- Remove dependency on `golang.org/x/{lint, tools}`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[1.7.0]: https://github.com/uber-go/atomic/compare/v1.6.0...v1.7.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## [1.6.0] - 2020-02-24
 | 
					 | 
				
			||||||
### Changed
 | 
					 | 
				
			||||||
- Drop library dependency on `golang.org/x/{lint, tools}`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[1.6.0]: https://github.com/uber-go/atomic/compare/v1.5.1...v1.6.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## [1.5.1] - 2019-11-19
 | 
					 | 
				
			||||||
- Fix bug where `Bool.CAS` and `Bool.Toggle` do work correctly together
 | 
					 | 
				
			||||||
  causing `CAS` to fail even though the old value matches.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[1.5.1]: https://github.com/uber-go/atomic/compare/v1.5.0...v1.5.1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## [1.5.0] - 2019-10-29
 | 
					 | 
				
			||||||
### Changed
 | 
					 | 
				
			||||||
- With Go modules, only the `go.uber.org/atomic` import path is supported now.
 | 
					 | 
				
			||||||
  If you need to use the old import path, please add a `replace` directive to
 | 
					 | 
				
			||||||
  your `go.mod`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[1.5.0]: https://github.com/uber-go/atomic/compare/v1.4.0...v1.5.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## [1.4.0] - 2019-05-01
 | 
					 | 
				
			||||||
### Added
 | 
					 | 
				
			||||||
 - Add `atomic.Error` type for atomic operations on `error` values.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[1.4.0]: https://github.com/uber-go/atomic/compare/v1.3.2...v1.4.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## [1.3.2] - 2018-05-02
 | 
					 | 
				
			||||||
### Added
 | 
					 | 
				
			||||||
- Add `atomic.Duration` type for atomic operations on `time.Duration` values.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[1.3.2]: https://github.com/uber-go/atomic/compare/v1.3.1...v1.3.2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## [1.3.1] - 2017-11-14
 | 
					 | 
				
			||||||
### Fixed
 | 
					 | 
				
			||||||
- Revert optimization for `atomic.String.Store("")` which caused data races.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[1.3.1]: https://github.com/uber-go/atomic/compare/v1.3.0...v1.3.1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## [1.3.0] - 2017-11-13
 | 
					 | 
				
			||||||
### Added
 | 
					 | 
				
			||||||
- Add `atomic.Bool.CAS` for compare-and-swap semantics on bools.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### Changed
 | 
					 | 
				
			||||||
- Optimize `atomic.String.Store("")` by avoiding an allocation.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[1.3.0]: https://github.com/uber-go/atomic/compare/v1.2.0...v1.3.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## [1.2.0] - 2017-04-12
 | 
					 | 
				
			||||||
### Added
 | 
					 | 
				
			||||||
- Shadow `atomic.Value` from `sync/atomic`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[1.2.0]: https://github.com/uber-go/atomic/compare/v1.1.0...v1.2.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## [1.1.0] - 2017-03-10
 | 
					 | 
				
			||||||
### Added
 | 
					 | 
				
			||||||
- Add atomic `Float64` type.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### Changed
 | 
					 | 
				
			||||||
- Support new `go.uber.org/atomic` import path.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[1.1.0]: https://github.com/uber-go/atomic/compare/v1.0.0...v1.1.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## [1.0.0] - 2016-07-18
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- Initial release.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[1.0.0]: https://github.com/uber-go/atomic/releases/tag/v1.0.0
 | 
					 | 
				
			||||||
							
								
								
									
										19
									
								
								vendor/go.uber.org/atomic/LICENSE.txt
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								vendor/go.uber.org/atomic/LICENSE.txt
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,19 +0,0 @@
 | 
				
			|||||||
Copyright (c) 2016 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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.
 | 
					 | 
				
			||||||
							
								
								
									
										79
									
								
								vendor/go.uber.org/atomic/Makefile
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										79
									
								
								vendor/go.uber.org/atomic/Makefile
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,79 +0,0 @@
 | 
				
			|||||||
# Directory to place `go install`ed binaries into.
 | 
					 | 
				
			||||||
export GOBIN ?= $(shell pwd)/bin
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
GOLINT = $(GOBIN)/golint
 | 
					 | 
				
			||||||
GEN_ATOMICINT = $(GOBIN)/gen-atomicint
 | 
					 | 
				
			||||||
GEN_ATOMICWRAPPER = $(GOBIN)/gen-atomicwrapper
 | 
					 | 
				
			||||||
STATICCHECK = $(GOBIN)/staticcheck
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
GO_FILES ?= $(shell find . '(' -path .git -o -path vendor ')' -prune -o -name '*.go' -print)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Also update ignore section in .codecov.yml.
 | 
					 | 
				
			||||||
COVER_IGNORE_PKGS = \
 | 
					 | 
				
			||||||
	go.uber.org/atomic/internal/gen-atomicint \
 | 
					 | 
				
			||||||
	go.uber.org/atomic/internal/gen-atomicwrapper
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.PHONY: build
 | 
					 | 
				
			||||||
build:
 | 
					 | 
				
			||||||
	go build ./...
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.PHONY: test
 | 
					 | 
				
			||||||
test:
 | 
					 | 
				
			||||||
	go test -race ./...
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.PHONY: gofmt
 | 
					 | 
				
			||||||
gofmt:
 | 
					 | 
				
			||||||
	$(eval FMT_LOG := $(shell mktemp -t gofmt.XXXXX))
 | 
					 | 
				
			||||||
	gofmt -e -s -l $(GO_FILES) > $(FMT_LOG) || true
 | 
					 | 
				
			||||||
	@[ ! -s "$(FMT_LOG)" ] || (echo "gofmt failed:" && cat $(FMT_LOG) && false)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
$(GOLINT):
 | 
					 | 
				
			||||||
	cd tools && go install golang.org/x/lint/golint
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
$(STATICCHECK):
 | 
					 | 
				
			||||||
	cd tools && go install honnef.co/go/tools/cmd/staticcheck
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
$(GEN_ATOMICWRAPPER): $(wildcard ./internal/gen-atomicwrapper/*)
 | 
					 | 
				
			||||||
	go build -o $@ ./internal/gen-atomicwrapper
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
$(GEN_ATOMICINT): $(wildcard ./internal/gen-atomicint/*)
 | 
					 | 
				
			||||||
	go build -o $@ ./internal/gen-atomicint
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.PHONY: golint
 | 
					 | 
				
			||||||
golint: $(GOLINT)
 | 
					 | 
				
			||||||
	$(GOLINT) ./...
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.PHONY: staticcheck
 | 
					 | 
				
			||||||
staticcheck: $(STATICCHECK)
 | 
					 | 
				
			||||||
	$(STATICCHECK) ./...
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.PHONY: lint
 | 
					 | 
				
			||||||
lint: gofmt golint staticcheck generatenodirty
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# comma separated list of packages to consider for code coverage.
 | 
					 | 
				
			||||||
COVER_PKG = $(shell \
 | 
					 | 
				
			||||||
	go list -find ./... | \
 | 
					 | 
				
			||||||
	grep -v $(foreach pkg,$(COVER_IGNORE_PKGS),-e "^$(pkg)$$") | \
 | 
					 | 
				
			||||||
	paste -sd, -)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.PHONY: cover
 | 
					 | 
				
			||||||
cover:
 | 
					 | 
				
			||||||
	go test -coverprofile=cover.out -coverpkg  $(COVER_PKG) -v ./...
 | 
					 | 
				
			||||||
	go tool cover -html=cover.out -o cover.html
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.PHONY: generate
 | 
					 | 
				
			||||||
generate: $(GEN_ATOMICINT) $(GEN_ATOMICWRAPPER)
 | 
					 | 
				
			||||||
	go generate ./...
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.PHONY: generatenodirty
 | 
					 | 
				
			||||||
generatenodirty:
 | 
					 | 
				
			||||||
	@[ -z "$$(git status --porcelain)" ] || ( \
 | 
					 | 
				
			||||||
		echo "Working tree is dirty. Commit your changes first."; \
 | 
					 | 
				
			||||||
		git status; \
 | 
					 | 
				
			||||||
		exit 1 )
 | 
					 | 
				
			||||||
	@make generate
 | 
					 | 
				
			||||||
	@status=$$(git status --porcelain); \
 | 
					 | 
				
			||||||
		[ -z "$$status" ] || ( \
 | 
					 | 
				
			||||||
		echo "Working tree is dirty after `make generate`:"; \
 | 
					 | 
				
			||||||
		echo "$$status"; \
 | 
					 | 
				
			||||||
		echo "Please ensure that the generated code is up-to-date." )
 | 
					 | 
				
			||||||
							
								
								
									
										63
									
								
								vendor/go.uber.org/atomic/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										63
									
								
								vendor/go.uber.org/atomic/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,63 +0,0 @@
 | 
				
			|||||||
# atomic [![GoDoc][doc-img]][doc] [![Build Status][ci-img]][ci] [![Coverage Status][cov-img]][cov] [![Go Report Card][reportcard-img]][reportcard]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Simple wrappers for primitive types to enforce atomic access.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Installation
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```shell
 | 
					 | 
				
			||||||
$ go get -u go.uber.org/atomic@v1
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### Legacy Import Path
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
As of v1.5.0, the import path `go.uber.org/atomic` is the only supported way
 | 
					 | 
				
			||||||
of using this package. If you are using Go modules, this package will fail to
 | 
					 | 
				
			||||||
compile with the legacy import path path `github.com/uber-go/atomic`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
We recommend migrating your code to the new import path but if you're unable
 | 
					 | 
				
			||||||
to do so, or if your dependencies are still using the old import path, you
 | 
					 | 
				
			||||||
will have to add a `replace` directive to your `go.mod` file downgrading the
 | 
					 | 
				
			||||||
legacy import path to an older version.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
replace github.com/uber-go/atomic => github.com/uber-go/atomic v1.4.0
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
You can do so automatically by running the following command.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```shell
 | 
					 | 
				
			||||||
$ go mod edit -replace github.com/uber-go/atomic=github.com/uber-go/atomic@v1.4.0
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Usage
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The standard library's `sync/atomic` is powerful, but it's easy to forget which
 | 
					 | 
				
			||||||
variables must be accessed atomically. `go.uber.org/atomic` preserves all the
 | 
					 | 
				
			||||||
functionality of the standard library, but wraps the primitive types to
 | 
					 | 
				
			||||||
provide a safer, more convenient API.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```go
 | 
					 | 
				
			||||||
var atom atomic.Uint32
 | 
					 | 
				
			||||||
atom.Store(42)
 | 
					 | 
				
			||||||
atom.Sub(2)
 | 
					 | 
				
			||||||
atom.CAS(40, 11)
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
See the [documentation][doc] for a complete API specification.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Development Status
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Stable.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Released under the [MIT License](LICENSE.txt).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[doc-img]: https://godoc.org/github.com/uber-go/atomic?status.svg
 | 
					 | 
				
			||||||
[doc]: https://godoc.org/go.uber.org/atomic
 | 
					 | 
				
			||||||
[ci-img]: https://github.com/uber-go/atomic/actions/workflows/go.yml/badge.svg
 | 
					 | 
				
			||||||
[ci]: https://github.com/uber-go/atomic/actions/workflows/go.yml
 | 
					 | 
				
			||||||
[cov-img]: https://codecov.io/gh/uber-go/atomic/branch/master/graph/badge.svg
 | 
					 | 
				
			||||||
[cov]: https://codecov.io/gh/uber-go/atomic
 | 
					 | 
				
			||||||
[reportcard-img]: https://goreportcard.com/badge/go.uber.org/atomic
 | 
					 | 
				
			||||||
[reportcard]: https://goreportcard.com/report/go.uber.org/atomic
 | 
					 | 
				
			||||||
							
								
								
									
										88
									
								
								vendor/go.uber.org/atomic/bool.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										88
									
								
								vendor/go.uber.org/atomic/bool.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,88 +0,0 @@
 | 
				
			|||||||
// @generated Code generated by gen-atomicwrapper.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Copyright (c) 2020-2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"encoding/json"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Bool is an atomic type-safe wrapper for bool values.
 | 
					 | 
				
			||||||
type Bool struct {
 | 
					 | 
				
			||||||
	_ nocmp // disallow non-atomic comparison
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	v Uint32
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var _zeroBool bool
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// NewBool creates a new Bool.
 | 
					 | 
				
			||||||
func NewBool(val bool) *Bool {
 | 
					 | 
				
			||||||
	x := &Bool{}
 | 
					 | 
				
			||||||
	if val != _zeroBool {
 | 
					 | 
				
			||||||
		x.Store(val)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return x
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Load atomically loads the wrapped bool.
 | 
					 | 
				
			||||||
func (x *Bool) Load() bool {
 | 
					 | 
				
			||||||
	return truthy(x.v.Load())
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Store atomically stores the passed bool.
 | 
					 | 
				
			||||||
func (x *Bool) Store(val bool) {
 | 
					 | 
				
			||||||
	x.v.Store(boolToInt(val))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CAS is an atomic compare-and-swap for bool values.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Deprecated: Use CompareAndSwap.
 | 
					 | 
				
			||||||
func (x *Bool) CAS(old, new bool) (swapped bool) {
 | 
					 | 
				
			||||||
	return x.CompareAndSwap(old, new)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CompareAndSwap is an atomic compare-and-swap for bool values.
 | 
					 | 
				
			||||||
func (x *Bool) CompareAndSwap(old, new bool) (swapped bool) {
 | 
					 | 
				
			||||||
	return x.v.CompareAndSwap(boolToInt(old), boolToInt(new))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Swap atomically stores the given bool and returns the old
 | 
					 | 
				
			||||||
// value.
 | 
					 | 
				
			||||||
func (x *Bool) Swap(val bool) (old bool) {
 | 
					 | 
				
			||||||
	return truthy(x.v.Swap(boolToInt(val)))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// MarshalJSON encodes the wrapped bool into JSON.
 | 
					 | 
				
			||||||
func (x *Bool) MarshalJSON() ([]byte, error) {
 | 
					 | 
				
			||||||
	return json.Marshal(x.Load())
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnmarshalJSON decodes a bool from JSON.
 | 
					 | 
				
			||||||
func (x *Bool) UnmarshalJSON(b []byte) error {
 | 
					 | 
				
			||||||
	var v bool
 | 
					 | 
				
			||||||
	if err := json.Unmarshal(b, &v); err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	x.Store(v)
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										23
									
								
								vendor/go.uber.org/atomic/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								vendor/go.uber.org/atomic/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,23 +0,0 @@
 | 
				
			|||||||
// Copyright (c) 2020 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Package atomic provides simple wrappers around numerics to enforce atomic
 | 
					 | 
				
			||||||
// access.
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
							
								
								
									
										89
									
								
								vendor/go.uber.org/atomic/duration.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										89
									
								
								vendor/go.uber.org/atomic/duration.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,89 +0,0 @@
 | 
				
			|||||||
// @generated Code generated by gen-atomicwrapper.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Copyright (c) 2020-2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"encoding/json"
 | 
					 | 
				
			||||||
	"time"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Duration is an atomic type-safe wrapper for time.Duration values.
 | 
					 | 
				
			||||||
type Duration struct {
 | 
					 | 
				
			||||||
	_ nocmp // disallow non-atomic comparison
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	v Int64
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var _zeroDuration time.Duration
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// NewDuration creates a new Duration.
 | 
					 | 
				
			||||||
func NewDuration(val time.Duration) *Duration {
 | 
					 | 
				
			||||||
	x := &Duration{}
 | 
					 | 
				
			||||||
	if val != _zeroDuration {
 | 
					 | 
				
			||||||
		x.Store(val)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return x
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Load atomically loads the wrapped time.Duration.
 | 
					 | 
				
			||||||
func (x *Duration) Load() time.Duration {
 | 
					 | 
				
			||||||
	return time.Duration(x.v.Load())
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Store atomically stores the passed time.Duration.
 | 
					 | 
				
			||||||
func (x *Duration) Store(val time.Duration) {
 | 
					 | 
				
			||||||
	x.v.Store(int64(val))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CAS is an atomic compare-and-swap for time.Duration values.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Deprecated: Use CompareAndSwap.
 | 
					 | 
				
			||||||
func (x *Duration) CAS(old, new time.Duration) (swapped bool) {
 | 
					 | 
				
			||||||
	return x.CompareAndSwap(old, new)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CompareAndSwap is an atomic compare-and-swap for time.Duration values.
 | 
					 | 
				
			||||||
func (x *Duration) CompareAndSwap(old, new time.Duration) (swapped bool) {
 | 
					 | 
				
			||||||
	return x.v.CompareAndSwap(int64(old), int64(new))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Swap atomically stores the given time.Duration and returns the old
 | 
					 | 
				
			||||||
// value.
 | 
					 | 
				
			||||||
func (x *Duration) Swap(val time.Duration) (old time.Duration) {
 | 
					 | 
				
			||||||
	return time.Duration(x.v.Swap(int64(val)))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// MarshalJSON encodes the wrapped time.Duration into JSON.
 | 
					 | 
				
			||||||
func (x *Duration) MarshalJSON() ([]byte, error) {
 | 
					 | 
				
			||||||
	return json.Marshal(x.Load())
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnmarshalJSON decodes a time.Duration from JSON.
 | 
					 | 
				
			||||||
func (x *Duration) UnmarshalJSON(b []byte) error {
 | 
					 | 
				
			||||||
	var v time.Duration
 | 
					 | 
				
			||||||
	if err := json.Unmarshal(b, &v); err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	x.Store(v)
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										40
									
								
								vendor/go.uber.org/atomic/duration_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										40
									
								
								vendor/go.uber.org/atomic/duration_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,40 +0,0 @@
 | 
				
			|||||||
// Copyright (c) 2020 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import "time"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//go:generate bin/gen-atomicwrapper -name=Duration -type=time.Duration -wrapped=Int64 -pack=int64 -unpack=time.Duration -cas -swap -json -imports time -file=duration.go
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Add atomically adds to the wrapped time.Duration and returns the new value.
 | 
					 | 
				
			||||||
func (d *Duration) Add(delta time.Duration) time.Duration {
 | 
					 | 
				
			||||||
	return time.Duration(d.v.Add(int64(delta)))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Sub atomically subtracts from the wrapped time.Duration and returns the new value.
 | 
					 | 
				
			||||||
func (d *Duration) Sub(delta time.Duration) time.Duration {
 | 
					 | 
				
			||||||
	return time.Duration(d.v.Sub(int64(delta)))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// String encodes the wrapped value as a string.
 | 
					 | 
				
			||||||
func (d *Duration) String() string {
 | 
					 | 
				
			||||||
	return d.Load().String()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										62
									
								
								vendor/go.uber.org/atomic/error.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										62
									
								
								vendor/go.uber.org/atomic/error.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,62 +0,0 @@
 | 
				
			|||||||
// @generated Code generated by gen-atomicwrapper.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Copyright (c) 2020-2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Error is an atomic type-safe wrapper for error values.
 | 
					 | 
				
			||||||
type Error struct {
 | 
					 | 
				
			||||||
	_ nocmp // disallow non-atomic comparison
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	v Value
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var _zeroError error
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// NewError creates a new Error.
 | 
					 | 
				
			||||||
func NewError(val error) *Error {
 | 
					 | 
				
			||||||
	x := &Error{}
 | 
					 | 
				
			||||||
	if val != _zeroError {
 | 
					 | 
				
			||||||
		x.Store(val)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return x
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Load atomically loads the wrapped error.
 | 
					 | 
				
			||||||
func (x *Error) Load() error {
 | 
					 | 
				
			||||||
	return unpackError(x.v.Load())
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Store atomically stores the passed error.
 | 
					 | 
				
			||||||
func (x *Error) Store(val error) {
 | 
					 | 
				
			||||||
	x.v.Store(packError(val))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CompareAndSwap is an atomic compare-and-swap for error values.
 | 
					 | 
				
			||||||
func (x *Error) CompareAndSwap(old, new error) (swapped bool) {
 | 
					 | 
				
			||||||
	return x.v.CompareAndSwap(packError(old), packError(new))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Swap atomically stores the given error and returns the old
 | 
					 | 
				
			||||||
// value.
 | 
					 | 
				
			||||||
func (x *Error) Swap(val error) (old error) {
 | 
					 | 
				
			||||||
	return unpackError(x.v.Swap(packError(val)))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										39
									
								
								vendor/go.uber.org/atomic/error_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										39
									
								
								vendor/go.uber.org/atomic/error_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,39 +0,0 @@
 | 
				
			|||||||
// Copyright (c) 2020-2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// atomic.Value panics on nil inputs, or if the underlying type changes.
 | 
					 | 
				
			||||||
// Stabilize by always storing a custom struct that we control.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//go:generate bin/gen-atomicwrapper -name=Error -type=error -wrapped=Value -pack=packError -unpack=unpackError -compareandswap -swap -file=error.go
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type packedError struct{ Value error }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func packError(v error) interface{} {
 | 
					 | 
				
			||||||
	return packedError{v}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func unpackError(v interface{}) error {
 | 
					 | 
				
			||||||
	if err, ok := v.(packedError); ok {
 | 
					 | 
				
			||||||
		return err.Value
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										77
									
								
								vendor/go.uber.org/atomic/float32.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										77
									
								
								vendor/go.uber.org/atomic/float32.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,77 +0,0 @@
 | 
				
			|||||||
// @generated Code generated by gen-atomicwrapper.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Copyright (c) 2020-2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"encoding/json"
 | 
					 | 
				
			||||||
	"math"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Float32 is an atomic type-safe wrapper for float32 values.
 | 
					 | 
				
			||||||
type Float32 struct {
 | 
					 | 
				
			||||||
	_ nocmp // disallow non-atomic comparison
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	v Uint32
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var _zeroFloat32 float32
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// NewFloat32 creates a new Float32.
 | 
					 | 
				
			||||||
func NewFloat32(val float32) *Float32 {
 | 
					 | 
				
			||||||
	x := &Float32{}
 | 
					 | 
				
			||||||
	if val != _zeroFloat32 {
 | 
					 | 
				
			||||||
		x.Store(val)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return x
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Load atomically loads the wrapped float32.
 | 
					 | 
				
			||||||
func (x *Float32) Load() float32 {
 | 
					 | 
				
			||||||
	return math.Float32frombits(x.v.Load())
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Store atomically stores the passed float32.
 | 
					 | 
				
			||||||
func (x *Float32) Store(val float32) {
 | 
					 | 
				
			||||||
	x.v.Store(math.Float32bits(val))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Swap atomically stores the given float32 and returns the old
 | 
					 | 
				
			||||||
// value.
 | 
					 | 
				
			||||||
func (x *Float32) Swap(val float32) (old float32) {
 | 
					 | 
				
			||||||
	return math.Float32frombits(x.v.Swap(math.Float32bits(val)))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// MarshalJSON encodes the wrapped float32 into JSON.
 | 
					 | 
				
			||||||
func (x *Float32) MarshalJSON() ([]byte, error) {
 | 
					 | 
				
			||||||
	return json.Marshal(x.Load())
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnmarshalJSON decodes a float32 from JSON.
 | 
					 | 
				
			||||||
func (x *Float32) UnmarshalJSON(b []byte) error {
 | 
					 | 
				
			||||||
	var v float32
 | 
					 | 
				
			||||||
	if err := json.Unmarshal(b, &v); err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	x.Store(v)
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										76
									
								
								vendor/go.uber.org/atomic/float32_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										76
									
								
								vendor/go.uber.org/atomic/float32_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,76 +0,0 @@
 | 
				
			|||||||
// Copyright (c) 2020-2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"math"
 | 
					 | 
				
			||||||
	"strconv"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//go:generate bin/gen-atomicwrapper -name=Float32 -type=float32 -wrapped=Uint32 -pack=math.Float32bits -unpack=math.Float32frombits -swap -json -imports math -file=float32.go
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Add atomically adds to the wrapped float32 and returns the new value.
 | 
					 | 
				
			||||||
func (f *Float32) Add(delta float32) float32 {
 | 
					 | 
				
			||||||
	for {
 | 
					 | 
				
			||||||
		old := f.Load()
 | 
					 | 
				
			||||||
		new := old + delta
 | 
					 | 
				
			||||||
		if f.CAS(old, new) {
 | 
					 | 
				
			||||||
			return new
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Sub atomically subtracts from the wrapped float32 and returns the new value.
 | 
					 | 
				
			||||||
func (f *Float32) Sub(delta float32) float32 {
 | 
					 | 
				
			||||||
	return f.Add(-delta)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CAS is an atomic compare-and-swap for float32 values.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Deprecated: Use CompareAndSwap
 | 
					 | 
				
			||||||
func (f *Float32) CAS(old, new float32) (swapped bool) {
 | 
					 | 
				
			||||||
	return f.CompareAndSwap(old, new)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CompareAndSwap is an atomic compare-and-swap for float32 values.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Note: CompareAndSwap handles NaN incorrectly. NaN != NaN using Go's inbuilt operators
 | 
					 | 
				
			||||||
// but CompareAndSwap allows a stored NaN to compare equal to a passed in NaN.
 | 
					 | 
				
			||||||
// This avoids typical CompareAndSwap loops from blocking forever, e.g.,
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//	for {
 | 
					 | 
				
			||||||
//	  old := atom.Load()
 | 
					 | 
				
			||||||
//	  new = f(old)
 | 
					 | 
				
			||||||
//	  if atom.CompareAndSwap(old, new) {
 | 
					 | 
				
			||||||
//	    break
 | 
					 | 
				
			||||||
//	  }
 | 
					 | 
				
			||||||
//	}
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// If CompareAndSwap did not match NaN to match, then the above would loop forever.
 | 
					 | 
				
			||||||
func (f *Float32) CompareAndSwap(old, new float32) (swapped bool) {
 | 
					 | 
				
			||||||
	return f.v.CompareAndSwap(math.Float32bits(old), math.Float32bits(new))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// String encodes the wrapped value as a string.
 | 
					 | 
				
			||||||
func (f *Float32) String() string {
 | 
					 | 
				
			||||||
	// 'g' is the behavior for floats with %v.
 | 
					 | 
				
			||||||
	return strconv.FormatFloat(float64(f.Load()), 'g', -1, 32)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										77
									
								
								vendor/go.uber.org/atomic/float64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										77
									
								
								vendor/go.uber.org/atomic/float64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,77 +0,0 @@
 | 
				
			|||||||
// @generated Code generated by gen-atomicwrapper.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Copyright (c) 2020-2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"encoding/json"
 | 
					 | 
				
			||||||
	"math"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Float64 is an atomic type-safe wrapper for float64 values.
 | 
					 | 
				
			||||||
type Float64 struct {
 | 
					 | 
				
			||||||
	_ nocmp // disallow non-atomic comparison
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	v Uint64
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var _zeroFloat64 float64
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// NewFloat64 creates a new Float64.
 | 
					 | 
				
			||||||
func NewFloat64(val float64) *Float64 {
 | 
					 | 
				
			||||||
	x := &Float64{}
 | 
					 | 
				
			||||||
	if val != _zeroFloat64 {
 | 
					 | 
				
			||||||
		x.Store(val)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return x
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Load atomically loads the wrapped float64.
 | 
					 | 
				
			||||||
func (x *Float64) Load() float64 {
 | 
					 | 
				
			||||||
	return math.Float64frombits(x.v.Load())
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Store atomically stores the passed float64.
 | 
					 | 
				
			||||||
func (x *Float64) Store(val float64) {
 | 
					 | 
				
			||||||
	x.v.Store(math.Float64bits(val))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Swap atomically stores the given float64 and returns the old
 | 
					 | 
				
			||||||
// value.
 | 
					 | 
				
			||||||
func (x *Float64) Swap(val float64) (old float64) {
 | 
					 | 
				
			||||||
	return math.Float64frombits(x.v.Swap(math.Float64bits(val)))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// MarshalJSON encodes the wrapped float64 into JSON.
 | 
					 | 
				
			||||||
func (x *Float64) MarshalJSON() ([]byte, error) {
 | 
					 | 
				
			||||||
	return json.Marshal(x.Load())
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnmarshalJSON decodes a float64 from JSON.
 | 
					 | 
				
			||||||
func (x *Float64) UnmarshalJSON(b []byte) error {
 | 
					 | 
				
			||||||
	var v float64
 | 
					 | 
				
			||||||
	if err := json.Unmarshal(b, &v); err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	x.Store(v)
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										76
									
								
								vendor/go.uber.org/atomic/float64_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										76
									
								
								vendor/go.uber.org/atomic/float64_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,76 +0,0 @@
 | 
				
			|||||||
// Copyright (c) 2020-2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"math"
 | 
					 | 
				
			||||||
	"strconv"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//go:generate bin/gen-atomicwrapper -name=Float64 -type=float64 -wrapped=Uint64 -pack=math.Float64bits -unpack=math.Float64frombits -swap -json -imports math -file=float64.go
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Add atomically adds to the wrapped float64 and returns the new value.
 | 
					 | 
				
			||||||
func (f *Float64) Add(delta float64) float64 {
 | 
					 | 
				
			||||||
	for {
 | 
					 | 
				
			||||||
		old := f.Load()
 | 
					 | 
				
			||||||
		new := old + delta
 | 
					 | 
				
			||||||
		if f.CAS(old, new) {
 | 
					 | 
				
			||||||
			return new
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Sub atomically subtracts from the wrapped float64 and returns the new value.
 | 
					 | 
				
			||||||
func (f *Float64) Sub(delta float64) float64 {
 | 
					 | 
				
			||||||
	return f.Add(-delta)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CAS is an atomic compare-and-swap for float64 values.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Deprecated: Use CompareAndSwap
 | 
					 | 
				
			||||||
func (f *Float64) CAS(old, new float64) (swapped bool) {
 | 
					 | 
				
			||||||
	return f.CompareAndSwap(old, new)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CompareAndSwap is an atomic compare-and-swap for float64 values.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Note: CompareAndSwap handles NaN incorrectly. NaN != NaN using Go's inbuilt operators
 | 
					 | 
				
			||||||
// but CompareAndSwap allows a stored NaN to compare equal to a passed in NaN.
 | 
					 | 
				
			||||||
// This avoids typical CompareAndSwap loops from blocking forever, e.g.,
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//	for {
 | 
					 | 
				
			||||||
//	  old := atom.Load()
 | 
					 | 
				
			||||||
//	  new = f(old)
 | 
					 | 
				
			||||||
//	  if atom.CompareAndSwap(old, new) {
 | 
					 | 
				
			||||||
//	    break
 | 
					 | 
				
			||||||
//	  }
 | 
					 | 
				
			||||||
//	}
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// If CompareAndSwap did not match NaN to match, then the above would loop forever.
 | 
					 | 
				
			||||||
func (f *Float64) CompareAndSwap(old, new float64) (swapped bool) {
 | 
					 | 
				
			||||||
	return f.v.CompareAndSwap(math.Float64bits(old), math.Float64bits(new))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// String encodes the wrapped value as a string.
 | 
					 | 
				
			||||||
func (f *Float64) String() string {
 | 
					 | 
				
			||||||
	// 'g' is the behavior for floats with %v.
 | 
					 | 
				
			||||||
	return strconv.FormatFloat(f.Load(), 'g', -1, 64)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										27
									
								
								vendor/go.uber.org/atomic/gen.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								vendor/go.uber.org/atomic/gen.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,27 +0,0 @@
 | 
				
			|||||||
// Copyright (c) 2020 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//go:generate bin/gen-atomicint -name=Int32 -wrapped=int32 -file=int32.go
 | 
					 | 
				
			||||||
//go:generate bin/gen-atomicint -name=Int64 -wrapped=int64 -file=int64.go
 | 
					 | 
				
			||||||
//go:generate bin/gen-atomicint -name=Uint32 -wrapped=uint32 -unsigned -file=uint32.go
 | 
					 | 
				
			||||||
//go:generate bin/gen-atomicint -name=Uint64 -wrapped=uint64 -unsigned -file=uint64.go
 | 
					 | 
				
			||||||
//go:generate bin/gen-atomicint -name=Uintptr -wrapped=uintptr -unsigned -file=uintptr.go
 | 
					 | 
				
			||||||
							
								
								
									
										109
									
								
								vendor/go.uber.org/atomic/int32.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										109
									
								
								vendor/go.uber.org/atomic/int32.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,109 +0,0 @@
 | 
				
			|||||||
// @generated Code generated by gen-atomicint.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Copyright (c) 2020-2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"encoding/json"
 | 
					 | 
				
			||||||
	"strconv"
 | 
					 | 
				
			||||||
	"sync/atomic"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Int32 is an atomic wrapper around int32.
 | 
					 | 
				
			||||||
type Int32 struct {
 | 
					 | 
				
			||||||
	_ nocmp // disallow non-atomic comparison
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	v int32
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// NewInt32 creates a new Int32.
 | 
					 | 
				
			||||||
func NewInt32(val int32) *Int32 {
 | 
					 | 
				
			||||||
	return &Int32{v: val}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Load atomically loads the wrapped value.
 | 
					 | 
				
			||||||
func (i *Int32) Load() int32 {
 | 
					 | 
				
			||||||
	return atomic.LoadInt32(&i.v)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Add atomically adds to the wrapped int32 and returns the new value.
 | 
					 | 
				
			||||||
func (i *Int32) Add(delta int32) int32 {
 | 
					 | 
				
			||||||
	return atomic.AddInt32(&i.v, delta)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Sub atomically subtracts from the wrapped int32 and returns the new value.
 | 
					 | 
				
			||||||
func (i *Int32) Sub(delta int32) int32 {
 | 
					 | 
				
			||||||
	return atomic.AddInt32(&i.v, -delta)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Inc atomically increments the wrapped int32 and returns the new value.
 | 
					 | 
				
			||||||
func (i *Int32) Inc() int32 {
 | 
					 | 
				
			||||||
	return i.Add(1)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Dec atomically decrements the wrapped int32 and returns the new value.
 | 
					 | 
				
			||||||
func (i *Int32) Dec() int32 {
 | 
					 | 
				
			||||||
	return i.Sub(1)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CAS is an atomic compare-and-swap.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Deprecated: Use CompareAndSwap.
 | 
					 | 
				
			||||||
func (i *Int32) CAS(old, new int32) (swapped bool) {
 | 
					 | 
				
			||||||
	return i.CompareAndSwap(old, new)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CompareAndSwap is an atomic compare-and-swap.
 | 
					 | 
				
			||||||
func (i *Int32) CompareAndSwap(old, new int32) (swapped bool) {
 | 
					 | 
				
			||||||
	return atomic.CompareAndSwapInt32(&i.v, old, new)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Store atomically stores the passed value.
 | 
					 | 
				
			||||||
func (i *Int32) Store(val int32) {
 | 
					 | 
				
			||||||
	atomic.StoreInt32(&i.v, val)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Swap atomically swaps the wrapped int32 and returns the old value.
 | 
					 | 
				
			||||||
func (i *Int32) Swap(val int32) (old int32) {
 | 
					 | 
				
			||||||
	return atomic.SwapInt32(&i.v, val)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// MarshalJSON encodes the wrapped int32 into JSON.
 | 
					 | 
				
			||||||
func (i *Int32) MarshalJSON() ([]byte, error) {
 | 
					 | 
				
			||||||
	return json.Marshal(i.Load())
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnmarshalJSON decodes JSON into the wrapped int32.
 | 
					 | 
				
			||||||
func (i *Int32) UnmarshalJSON(b []byte) error {
 | 
					 | 
				
			||||||
	var v int32
 | 
					 | 
				
			||||||
	if err := json.Unmarshal(b, &v); err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	i.Store(v)
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// String encodes the wrapped value as a string.
 | 
					 | 
				
			||||||
func (i *Int32) String() string {
 | 
					 | 
				
			||||||
	v := i.Load()
 | 
					 | 
				
			||||||
	return strconv.FormatInt(int64(v), 10)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										109
									
								
								vendor/go.uber.org/atomic/int64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										109
									
								
								vendor/go.uber.org/atomic/int64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,109 +0,0 @@
 | 
				
			|||||||
// @generated Code generated by gen-atomicint.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Copyright (c) 2020-2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"encoding/json"
 | 
					 | 
				
			||||||
	"strconv"
 | 
					 | 
				
			||||||
	"sync/atomic"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Int64 is an atomic wrapper around int64.
 | 
					 | 
				
			||||||
type Int64 struct {
 | 
					 | 
				
			||||||
	_ nocmp // disallow non-atomic comparison
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	v int64
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// NewInt64 creates a new Int64.
 | 
					 | 
				
			||||||
func NewInt64(val int64) *Int64 {
 | 
					 | 
				
			||||||
	return &Int64{v: val}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Load atomically loads the wrapped value.
 | 
					 | 
				
			||||||
func (i *Int64) Load() int64 {
 | 
					 | 
				
			||||||
	return atomic.LoadInt64(&i.v)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Add atomically adds to the wrapped int64 and returns the new value.
 | 
					 | 
				
			||||||
func (i *Int64) Add(delta int64) int64 {
 | 
					 | 
				
			||||||
	return atomic.AddInt64(&i.v, delta)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Sub atomically subtracts from the wrapped int64 and returns the new value.
 | 
					 | 
				
			||||||
func (i *Int64) Sub(delta int64) int64 {
 | 
					 | 
				
			||||||
	return atomic.AddInt64(&i.v, -delta)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Inc atomically increments the wrapped int64 and returns the new value.
 | 
					 | 
				
			||||||
func (i *Int64) Inc() int64 {
 | 
					 | 
				
			||||||
	return i.Add(1)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Dec atomically decrements the wrapped int64 and returns the new value.
 | 
					 | 
				
			||||||
func (i *Int64) Dec() int64 {
 | 
					 | 
				
			||||||
	return i.Sub(1)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CAS is an atomic compare-and-swap.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Deprecated: Use CompareAndSwap.
 | 
					 | 
				
			||||||
func (i *Int64) CAS(old, new int64) (swapped bool) {
 | 
					 | 
				
			||||||
	return i.CompareAndSwap(old, new)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CompareAndSwap is an atomic compare-and-swap.
 | 
					 | 
				
			||||||
func (i *Int64) CompareAndSwap(old, new int64) (swapped bool) {
 | 
					 | 
				
			||||||
	return atomic.CompareAndSwapInt64(&i.v, old, new)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Store atomically stores the passed value.
 | 
					 | 
				
			||||||
func (i *Int64) Store(val int64) {
 | 
					 | 
				
			||||||
	atomic.StoreInt64(&i.v, val)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Swap atomically swaps the wrapped int64 and returns the old value.
 | 
					 | 
				
			||||||
func (i *Int64) Swap(val int64) (old int64) {
 | 
					 | 
				
			||||||
	return atomic.SwapInt64(&i.v, val)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// MarshalJSON encodes the wrapped int64 into JSON.
 | 
					 | 
				
			||||||
func (i *Int64) MarshalJSON() ([]byte, error) {
 | 
					 | 
				
			||||||
	return json.Marshal(i.Load())
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnmarshalJSON decodes JSON into the wrapped int64.
 | 
					 | 
				
			||||||
func (i *Int64) UnmarshalJSON(b []byte) error {
 | 
					 | 
				
			||||||
	var v int64
 | 
					 | 
				
			||||||
	if err := json.Unmarshal(b, &v); err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	i.Store(v)
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// String encodes the wrapped value as a string.
 | 
					 | 
				
			||||||
func (i *Int64) String() string {
 | 
					 | 
				
			||||||
	v := i.Load()
 | 
					 | 
				
			||||||
	return strconv.FormatInt(int64(v), 10)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										35
									
								
								vendor/go.uber.org/atomic/nocmp.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										35
									
								
								vendor/go.uber.org/atomic/nocmp.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,35 +0,0 @@
 | 
				
			|||||||
// Copyright (c) 2020 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// nocmp is an uncomparable struct. Embed this inside another struct to make
 | 
					 | 
				
			||||||
// it uncomparable.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//	type Foo struct {
 | 
					 | 
				
			||||||
//	  nocmp
 | 
					 | 
				
			||||||
//	  // ...
 | 
					 | 
				
			||||||
//	}
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// This DOES NOT:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//   - Disallow shallow copies of structs
 | 
					 | 
				
			||||||
//   - Disallow comparison of pointers to uncomparable structs
 | 
					 | 
				
			||||||
type nocmp [0]func()
 | 
					 | 
				
			||||||
							
								
								
									
										60
									
								
								vendor/go.uber.org/atomic/pointer_go118.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										60
									
								
								vendor/go.uber.org/atomic/pointer_go118.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,60 +0,0 @@
 | 
				
			|||||||
// Copyright (c) 2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//go:build go1.18 && !go1.19
 | 
					 | 
				
			||||||
// +build go1.18,!go1.19
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import "unsafe"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type Pointer[T any] struct {
 | 
					 | 
				
			||||||
	_ nocmp // disallow non-atomic comparison
 | 
					 | 
				
			||||||
	p UnsafePointer
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// NewPointer creates a new Pointer.
 | 
					 | 
				
			||||||
func NewPointer[T any](v *T) *Pointer[T] {
 | 
					 | 
				
			||||||
	var p Pointer[T]
 | 
					 | 
				
			||||||
	if v != nil {
 | 
					 | 
				
			||||||
		p.p.Store(unsafe.Pointer(v))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return &p
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Load atomically loads the wrapped value.
 | 
					 | 
				
			||||||
func (p *Pointer[T]) Load() *T {
 | 
					 | 
				
			||||||
	return (*T)(p.p.Load())
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Store atomically stores the passed value.
 | 
					 | 
				
			||||||
func (p *Pointer[T]) Store(val *T) {
 | 
					 | 
				
			||||||
	p.p.Store(unsafe.Pointer(val))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Swap atomically swaps the wrapped pointer and returns the old value.
 | 
					 | 
				
			||||||
func (p *Pointer[T]) Swap(val *T) (old *T) {
 | 
					 | 
				
			||||||
	return (*T)(p.p.Swap(unsafe.Pointer(val)))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CompareAndSwap is an atomic compare-and-swap.
 | 
					 | 
				
			||||||
func (p *Pointer[T]) CompareAndSwap(old, new *T) (swapped bool) {
 | 
					 | 
				
			||||||
	return p.p.CompareAndSwap(unsafe.Pointer(old), unsafe.Pointer(new))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										61
									
								
								vendor/go.uber.org/atomic/pointer_go119.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										61
									
								
								vendor/go.uber.org/atomic/pointer_go119.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,61 +0,0 @@
 | 
				
			|||||||
// Copyright (c) 2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//go:build go1.19
 | 
					 | 
				
			||||||
// +build go1.19
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import "sync/atomic"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Pointer is an atomic pointer of type *T.
 | 
					 | 
				
			||||||
type Pointer[T any] struct {
 | 
					 | 
				
			||||||
	_ nocmp // disallow non-atomic comparison
 | 
					 | 
				
			||||||
	p atomic.Pointer[T]
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// NewPointer creates a new Pointer.
 | 
					 | 
				
			||||||
func NewPointer[T any](v *T) *Pointer[T] {
 | 
					 | 
				
			||||||
	var p Pointer[T]
 | 
					 | 
				
			||||||
	if v != nil {
 | 
					 | 
				
			||||||
		p.p.Store(v)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return &p
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Load atomically loads the wrapped value.
 | 
					 | 
				
			||||||
func (p *Pointer[T]) Load() *T {
 | 
					 | 
				
			||||||
	return p.p.Load()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Store atomically stores the passed value.
 | 
					 | 
				
			||||||
func (p *Pointer[T]) Store(val *T) {
 | 
					 | 
				
			||||||
	p.p.Store(val)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Swap atomically swaps the wrapped pointer and returns the old value.
 | 
					 | 
				
			||||||
func (p *Pointer[T]) Swap(val *T) (old *T) {
 | 
					 | 
				
			||||||
	return p.p.Swap(val)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CompareAndSwap is an atomic compare-and-swap.
 | 
					 | 
				
			||||||
func (p *Pointer[T]) CompareAndSwap(old, new *T) (swapped bool) {
 | 
					 | 
				
			||||||
	return p.p.CompareAndSwap(old, new)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										65
									
								
								vendor/go.uber.org/atomic/string.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										65
									
								
								vendor/go.uber.org/atomic/string.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,65 +0,0 @@
 | 
				
			|||||||
// @generated Code generated by gen-atomicwrapper.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Copyright (c) 2020-2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// String is an atomic type-safe wrapper for string values.
 | 
					 | 
				
			||||||
type String struct {
 | 
					 | 
				
			||||||
	_ nocmp // disallow non-atomic comparison
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	v Value
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var _zeroString string
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// NewString creates a new String.
 | 
					 | 
				
			||||||
func NewString(val string) *String {
 | 
					 | 
				
			||||||
	x := &String{}
 | 
					 | 
				
			||||||
	if val != _zeroString {
 | 
					 | 
				
			||||||
		x.Store(val)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return x
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Load atomically loads the wrapped string.
 | 
					 | 
				
			||||||
func (x *String) Load() string {
 | 
					 | 
				
			||||||
	if v := x.v.Load(); v != nil {
 | 
					 | 
				
			||||||
		return v.(string)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return _zeroString
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Store atomically stores the passed string.
 | 
					 | 
				
			||||||
func (x *String) Store(val string) {
 | 
					 | 
				
			||||||
	x.v.Store(val)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CompareAndSwap is an atomic compare-and-swap for string values.
 | 
					 | 
				
			||||||
func (x *String) CompareAndSwap(old, new string) (swapped bool) {
 | 
					 | 
				
			||||||
	return x.v.CompareAndSwap(old, new)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Swap atomically stores the given string and returns the old
 | 
					 | 
				
			||||||
// value.
 | 
					 | 
				
			||||||
func (x *String) Swap(val string) (old string) {
 | 
					 | 
				
			||||||
	return x.v.Swap(val).(string)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										43
									
								
								vendor/go.uber.org/atomic/string_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										43
									
								
								vendor/go.uber.org/atomic/string_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,43 +0,0 @@
 | 
				
			|||||||
// Copyright (c) 2020-2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//go:generate bin/gen-atomicwrapper -name=String -type=string -wrapped=Value -compareandswap -swap -file=string.go
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// String returns the wrapped value.
 | 
					 | 
				
			||||||
func (s *String) String() string {
 | 
					 | 
				
			||||||
	return s.Load()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// MarshalText encodes the wrapped string into a textual form.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// This makes it encodable as JSON, YAML, XML, and more.
 | 
					 | 
				
			||||||
func (s *String) MarshalText() ([]byte, error) {
 | 
					 | 
				
			||||||
	return []byte(s.Load()), nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnmarshalText decodes text and replaces the wrapped string with it.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// This makes it decodable from JSON, YAML, XML, and more.
 | 
					 | 
				
			||||||
func (s *String) UnmarshalText(b []byte) error {
 | 
					 | 
				
			||||||
	s.Store(string(b))
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										109
									
								
								vendor/go.uber.org/atomic/uint32.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										109
									
								
								vendor/go.uber.org/atomic/uint32.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,109 +0,0 @@
 | 
				
			|||||||
// @generated Code generated by gen-atomicint.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Copyright (c) 2020-2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"encoding/json"
 | 
					 | 
				
			||||||
	"strconv"
 | 
					 | 
				
			||||||
	"sync/atomic"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Uint32 is an atomic wrapper around uint32.
 | 
					 | 
				
			||||||
type Uint32 struct {
 | 
					 | 
				
			||||||
	_ nocmp // disallow non-atomic comparison
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	v uint32
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// NewUint32 creates a new Uint32.
 | 
					 | 
				
			||||||
func NewUint32(val uint32) *Uint32 {
 | 
					 | 
				
			||||||
	return &Uint32{v: val}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Load atomically loads the wrapped value.
 | 
					 | 
				
			||||||
func (i *Uint32) Load() uint32 {
 | 
					 | 
				
			||||||
	return atomic.LoadUint32(&i.v)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Add atomically adds to the wrapped uint32 and returns the new value.
 | 
					 | 
				
			||||||
func (i *Uint32) Add(delta uint32) uint32 {
 | 
					 | 
				
			||||||
	return atomic.AddUint32(&i.v, delta)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Sub atomically subtracts from the wrapped uint32 and returns the new value.
 | 
					 | 
				
			||||||
func (i *Uint32) Sub(delta uint32) uint32 {
 | 
					 | 
				
			||||||
	return atomic.AddUint32(&i.v, ^(delta - 1))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Inc atomically increments the wrapped uint32 and returns the new value.
 | 
					 | 
				
			||||||
func (i *Uint32) Inc() uint32 {
 | 
					 | 
				
			||||||
	return i.Add(1)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Dec atomically decrements the wrapped uint32 and returns the new value.
 | 
					 | 
				
			||||||
func (i *Uint32) Dec() uint32 {
 | 
					 | 
				
			||||||
	return i.Sub(1)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CAS is an atomic compare-and-swap.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Deprecated: Use CompareAndSwap.
 | 
					 | 
				
			||||||
func (i *Uint32) CAS(old, new uint32) (swapped bool) {
 | 
					 | 
				
			||||||
	return i.CompareAndSwap(old, new)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CompareAndSwap is an atomic compare-and-swap.
 | 
					 | 
				
			||||||
func (i *Uint32) CompareAndSwap(old, new uint32) (swapped bool) {
 | 
					 | 
				
			||||||
	return atomic.CompareAndSwapUint32(&i.v, old, new)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Store atomically stores the passed value.
 | 
					 | 
				
			||||||
func (i *Uint32) Store(val uint32) {
 | 
					 | 
				
			||||||
	atomic.StoreUint32(&i.v, val)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Swap atomically swaps the wrapped uint32 and returns the old value.
 | 
					 | 
				
			||||||
func (i *Uint32) Swap(val uint32) (old uint32) {
 | 
					 | 
				
			||||||
	return atomic.SwapUint32(&i.v, val)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// MarshalJSON encodes the wrapped uint32 into JSON.
 | 
					 | 
				
			||||||
func (i *Uint32) MarshalJSON() ([]byte, error) {
 | 
					 | 
				
			||||||
	return json.Marshal(i.Load())
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnmarshalJSON decodes JSON into the wrapped uint32.
 | 
					 | 
				
			||||||
func (i *Uint32) UnmarshalJSON(b []byte) error {
 | 
					 | 
				
			||||||
	var v uint32
 | 
					 | 
				
			||||||
	if err := json.Unmarshal(b, &v); err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	i.Store(v)
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// String encodes the wrapped value as a string.
 | 
					 | 
				
			||||||
func (i *Uint32) String() string {
 | 
					 | 
				
			||||||
	v := i.Load()
 | 
					 | 
				
			||||||
	return strconv.FormatUint(uint64(v), 10)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										109
									
								
								vendor/go.uber.org/atomic/uint64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										109
									
								
								vendor/go.uber.org/atomic/uint64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,109 +0,0 @@
 | 
				
			|||||||
// @generated Code generated by gen-atomicint.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Copyright (c) 2020-2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"encoding/json"
 | 
					 | 
				
			||||||
	"strconv"
 | 
					 | 
				
			||||||
	"sync/atomic"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Uint64 is an atomic wrapper around uint64.
 | 
					 | 
				
			||||||
type Uint64 struct {
 | 
					 | 
				
			||||||
	_ nocmp // disallow non-atomic comparison
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	v uint64
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// NewUint64 creates a new Uint64.
 | 
					 | 
				
			||||||
func NewUint64(val uint64) *Uint64 {
 | 
					 | 
				
			||||||
	return &Uint64{v: val}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Load atomically loads the wrapped value.
 | 
					 | 
				
			||||||
func (i *Uint64) Load() uint64 {
 | 
					 | 
				
			||||||
	return atomic.LoadUint64(&i.v)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Add atomically adds to the wrapped uint64 and returns the new value.
 | 
					 | 
				
			||||||
func (i *Uint64) Add(delta uint64) uint64 {
 | 
					 | 
				
			||||||
	return atomic.AddUint64(&i.v, delta)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Sub atomically subtracts from the wrapped uint64 and returns the new value.
 | 
					 | 
				
			||||||
func (i *Uint64) Sub(delta uint64) uint64 {
 | 
					 | 
				
			||||||
	return atomic.AddUint64(&i.v, ^(delta - 1))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Inc atomically increments the wrapped uint64 and returns the new value.
 | 
					 | 
				
			||||||
func (i *Uint64) Inc() uint64 {
 | 
					 | 
				
			||||||
	return i.Add(1)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Dec atomically decrements the wrapped uint64 and returns the new value.
 | 
					 | 
				
			||||||
func (i *Uint64) Dec() uint64 {
 | 
					 | 
				
			||||||
	return i.Sub(1)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CAS is an atomic compare-and-swap.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Deprecated: Use CompareAndSwap.
 | 
					 | 
				
			||||||
func (i *Uint64) CAS(old, new uint64) (swapped bool) {
 | 
					 | 
				
			||||||
	return i.CompareAndSwap(old, new)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CompareAndSwap is an atomic compare-and-swap.
 | 
					 | 
				
			||||||
func (i *Uint64) CompareAndSwap(old, new uint64) (swapped bool) {
 | 
					 | 
				
			||||||
	return atomic.CompareAndSwapUint64(&i.v, old, new)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Store atomically stores the passed value.
 | 
					 | 
				
			||||||
func (i *Uint64) Store(val uint64) {
 | 
					 | 
				
			||||||
	atomic.StoreUint64(&i.v, val)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Swap atomically swaps the wrapped uint64 and returns the old value.
 | 
					 | 
				
			||||||
func (i *Uint64) Swap(val uint64) (old uint64) {
 | 
					 | 
				
			||||||
	return atomic.SwapUint64(&i.v, val)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// MarshalJSON encodes the wrapped uint64 into JSON.
 | 
					 | 
				
			||||||
func (i *Uint64) MarshalJSON() ([]byte, error) {
 | 
					 | 
				
			||||||
	return json.Marshal(i.Load())
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnmarshalJSON decodes JSON into the wrapped uint64.
 | 
					 | 
				
			||||||
func (i *Uint64) UnmarshalJSON(b []byte) error {
 | 
					 | 
				
			||||||
	var v uint64
 | 
					 | 
				
			||||||
	if err := json.Unmarshal(b, &v); err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	i.Store(v)
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// String encodes the wrapped value as a string.
 | 
					 | 
				
			||||||
func (i *Uint64) String() string {
 | 
					 | 
				
			||||||
	v := i.Load()
 | 
					 | 
				
			||||||
	return strconv.FormatUint(uint64(v), 10)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										109
									
								
								vendor/go.uber.org/atomic/uintptr.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										109
									
								
								vendor/go.uber.org/atomic/uintptr.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,109 +0,0 @@
 | 
				
			|||||||
// @generated Code generated by gen-atomicint.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Copyright (c) 2020-2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"encoding/json"
 | 
					 | 
				
			||||||
	"strconv"
 | 
					 | 
				
			||||||
	"sync/atomic"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Uintptr is an atomic wrapper around uintptr.
 | 
					 | 
				
			||||||
type Uintptr struct {
 | 
					 | 
				
			||||||
	_ nocmp // disallow non-atomic comparison
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	v uintptr
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// NewUintptr creates a new Uintptr.
 | 
					 | 
				
			||||||
func NewUintptr(val uintptr) *Uintptr {
 | 
					 | 
				
			||||||
	return &Uintptr{v: val}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Load atomically loads the wrapped value.
 | 
					 | 
				
			||||||
func (i *Uintptr) Load() uintptr {
 | 
					 | 
				
			||||||
	return atomic.LoadUintptr(&i.v)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Add atomically adds to the wrapped uintptr and returns the new value.
 | 
					 | 
				
			||||||
func (i *Uintptr) Add(delta uintptr) uintptr {
 | 
					 | 
				
			||||||
	return atomic.AddUintptr(&i.v, delta)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Sub atomically subtracts from the wrapped uintptr and returns the new value.
 | 
					 | 
				
			||||||
func (i *Uintptr) Sub(delta uintptr) uintptr {
 | 
					 | 
				
			||||||
	return atomic.AddUintptr(&i.v, ^(delta - 1))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Inc atomically increments the wrapped uintptr and returns the new value.
 | 
					 | 
				
			||||||
func (i *Uintptr) Inc() uintptr {
 | 
					 | 
				
			||||||
	return i.Add(1)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Dec atomically decrements the wrapped uintptr and returns the new value.
 | 
					 | 
				
			||||||
func (i *Uintptr) Dec() uintptr {
 | 
					 | 
				
			||||||
	return i.Sub(1)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CAS is an atomic compare-and-swap.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Deprecated: Use CompareAndSwap.
 | 
					 | 
				
			||||||
func (i *Uintptr) CAS(old, new uintptr) (swapped bool) {
 | 
					 | 
				
			||||||
	return i.CompareAndSwap(old, new)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CompareAndSwap is an atomic compare-and-swap.
 | 
					 | 
				
			||||||
func (i *Uintptr) CompareAndSwap(old, new uintptr) (swapped bool) {
 | 
					 | 
				
			||||||
	return atomic.CompareAndSwapUintptr(&i.v, old, new)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Store atomically stores the passed value.
 | 
					 | 
				
			||||||
func (i *Uintptr) Store(val uintptr) {
 | 
					 | 
				
			||||||
	atomic.StoreUintptr(&i.v, val)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Swap atomically swaps the wrapped uintptr and returns the old value.
 | 
					 | 
				
			||||||
func (i *Uintptr) Swap(val uintptr) (old uintptr) {
 | 
					 | 
				
			||||||
	return atomic.SwapUintptr(&i.v, val)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// MarshalJSON encodes the wrapped uintptr into JSON.
 | 
					 | 
				
			||||||
func (i *Uintptr) MarshalJSON() ([]byte, error) {
 | 
					 | 
				
			||||||
	return json.Marshal(i.Load())
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnmarshalJSON decodes JSON into the wrapped uintptr.
 | 
					 | 
				
			||||||
func (i *Uintptr) UnmarshalJSON(b []byte) error {
 | 
					 | 
				
			||||||
	var v uintptr
 | 
					 | 
				
			||||||
	if err := json.Unmarshal(b, &v); err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	i.Store(v)
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// String encodes the wrapped value as a string.
 | 
					 | 
				
			||||||
func (i *Uintptr) String() string {
 | 
					 | 
				
			||||||
	v := i.Load()
 | 
					 | 
				
			||||||
	return strconv.FormatUint(uint64(v), 10)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										65
									
								
								vendor/go.uber.org/atomic/unsafe_pointer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										65
									
								
								vendor/go.uber.org/atomic/unsafe_pointer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,65 +0,0 @@
 | 
				
			|||||||
// Copyright (c) 2021-2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package atomic
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"sync/atomic"
 | 
					 | 
				
			||||||
	"unsafe"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnsafePointer is an atomic wrapper around unsafe.Pointer.
 | 
					 | 
				
			||||||
type UnsafePointer struct {
 | 
					 | 
				
			||||||
	_ nocmp // disallow non-atomic comparison
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	v unsafe.Pointer
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// NewUnsafePointer creates a new UnsafePointer.
 | 
					 | 
				
			||||||
func NewUnsafePointer(val unsafe.Pointer) *UnsafePointer {
 | 
					 | 
				
			||||||
	return &UnsafePointer{v: val}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Load atomically loads the wrapped value.
 | 
					 | 
				
			||||||
func (p *UnsafePointer) Load() unsafe.Pointer {
 | 
					 | 
				
			||||||
	return atomic.LoadPointer(&p.v)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Store atomically stores the passed value.
 | 
					 | 
				
			||||||
func (p *UnsafePointer) Store(val unsafe.Pointer) {
 | 
					 | 
				
			||||||
	atomic.StorePointer(&p.v, val)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Swap atomically swaps the wrapped unsafe.Pointer and returns the old value.
 | 
					 | 
				
			||||||
func (p *UnsafePointer) Swap(val unsafe.Pointer) (old unsafe.Pointer) {
 | 
					 | 
				
			||||||
	return atomic.SwapPointer(&p.v, val)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CAS is an atomic compare-and-swap.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Deprecated: Use CompareAndSwap
 | 
					 | 
				
			||||||
func (p *UnsafePointer) CAS(old, new unsafe.Pointer) (swapped bool) {
 | 
					 | 
				
			||||||
	return p.CompareAndSwap(old, new)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CompareAndSwap is an atomic compare-and-swap.
 | 
					 | 
				
			||||||
func (p *UnsafePointer) CompareAndSwap(old, new unsafe.Pointer) (swapped bool) {
 | 
					 | 
				
			||||||
	return atomic.CompareAndSwapPointer(&p.v, old, new)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										77
									
								
								vendor/go.uber.org/zap/.golangci.yml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								vendor/go.uber.org/zap/.golangci.yml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,77 @@
 | 
				
			|||||||
 | 
					output:
 | 
				
			||||||
 | 
					  # Make output more digestible with quickfix in vim/emacs/etc.
 | 
				
			||||||
 | 
					  sort-results: true
 | 
				
			||||||
 | 
					  print-issued-lines: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					linters:
 | 
				
			||||||
 | 
					  # We'll track the golangci-lint default linters manually
 | 
				
			||||||
 | 
					  # instead of letting them change without our control.
 | 
				
			||||||
 | 
					  disable-all: true
 | 
				
			||||||
 | 
					  enable:
 | 
				
			||||||
 | 
					    # golangci-lint defaults:
 | 
				
			||||||
 | 
					    - errcheck
 | 
				
			||||||
 | 
					    - gosimple
 | 
				
			||||||
 | 
					    - govet
 | 
				
			||||||
 | 
					    - ineffassign
 | 
				
			||||||
 | 
					    - staticcheck
 | 
				
			||||||
 | 
					    - unused
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Our own extras:
 | 
				
			||||||
 | 
					    - gofmt
 | 
				
			||||||
 | 
					    - nolintlint # lints nolint directives
 | 
				
			||||||
 | 
					    - revive
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					linters-settings:
 | 
				
			||||||
 | 
					  govet:
 | 
				
			||||||
 | 
					    # These govet checks are disabled by default, but they're useful.
 | 
				
			||||||
 | 
					    enable:
 | 
				
			||||||
 | 
					      - niliness
 | 
				
			||||||
 | 
					      - reflectvaluecompare
 | 
				
			||||||
 | 
					      - sortslice
 | 
				
			||||||
 | 
					      - unusedwrite
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  errcheck:
 | 
				
			||||||
 | 
					    exclude-functions:
 | 
				
			||||||
 | 
					      # These methods can not fail.
 | 
				
			||||||
 | 
					      # They operate on an in-memory buffer.
 | 
				
			||||||
 | 
					      - (*go.uber.org/zap/buffer.Buffer).Write
 | 
				
			||||||
 | 
					      - (*go.uber.org/zap/buffer.Buffer).WriteByte
 | 
				
			||||||
 | 
					      - (*go.uber.org/zap/buffer.Buffer).WriteString
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - (*go.uber.org/zap/zapio.Writer).Close
 | 
				
			||||||
 | 
					      - (*go.uber.org/zap/zapio.Writer).Sync
 | 
				
			||||||
 | 
					      - (*go.uber.org/zap/zapio.Writer).Write
 | 
				
			||||||
 | 
					      # Write to zapio.Writer cannot fail,
 | 
				
			||||||
 | 
					      # so io.WriteString on it cannot fail.
 | 
				
			||||||
 | 
					      - io.WriteString(*go.uber.org/zap/zapio.Writer)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Writing a plain string to a fmt.State cannot fail.
 | 
				
			||||||
 | 
					      - io.WriteString(fmt.State)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					issues:
 | 
				
			||||||
 | 
					  # Print all issues reported by all linters.
 | 
				
			||||||
 | 
					  max-issues-per-linter: 0
 | 
				
			||||||
 | 
					  max-same-issues: 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Don't ignore some of the issues that golangci-lint considers okay.
 | 
				
			||||||
 | 
					  # This includes documenting all exported entities.
 | 
				
			||||||
 | 
					  exclude-use-default: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  exclude-rules:
 | 
				
			||||||
 | 
					    # Don't warn on unused parameters.
 | 
				
			||||||
 | 
					    # Parameter names are useful; replacing them with '_' is undesirable.
 | 
				
			||||||
 | 
					    - linters: [revive]
 | 
				
			||||||
 | 
					      text: 'unused-parameter: parameter \S+ seems to be unused, consider removing or renaming it as _'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # staticcheck already has smarter checks for empty blocks.
 | 
				
			||||||
 | 
					    # revive's empty-block linter has false positives.
 | 
				
			||||||
 | 
					    # For example, as of writing this, the following is not allowed.
 | 
				
			||||||
 | 
					    #   for foo() { }
 | 
				
			||||||
 | 
					    - linters: [revive]
 | 
				
			||||||
 | 
					      text: 'empty-block: this block is empty, you can remove it'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Ignore logger.Sync() errcheck failures in example_test.go
 | 
				
			||||||
 | 
					    # since those are intended to be uncomplicated examples.
 | 
				
			||||||
 | 
					    - linters: [errcheck]
 | 
				
			||||||
 | 
					      path: example_test.go
 | 
				
			||||||
 | 
					      text: 'Error return value of `logger.Sync` is not checked'
 | 
				
			||||||
							
								
								
									
										12
									
								
								vendor/go.uber.org/zap/.readme.tmpl
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/go.uber.org/zap/.readme.tmpl
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -96,14 +96,14 @@ Released under the [MIT License](LICENSE.txt).
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<sup id="footnote-versions">1</sup> In particular, keep in mind that we may be
 | 
					<sup id="footnote-versions">1</sup> In particular, keep in mind that we may be
 | 
				
			||||||
benchmarking against slightly older versions of other packages. Versions are
 | 
					benchmarking against slightly older versions of other packages. Versions are
 | 
				
			||||||
pinned in zap's [glide.lock][] file. [↩](#anchor-versions)
 | 
					pinned in the [benchmarks/go.mod][] file. [↩](#anchor-versions)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[doc-img]: https://godoc.org/go.uber.org/zap?status.svg
 | 
					[doc-img]: https://pkg.go.dev/badge/go.uber.org/zap
 | 
				
			||||||
[doc]: https://godoc.org/go.uber.org/zap
 | 
					[doc]: https://pkg.go.dev/go.uber.org/zap
 | 
				
			||||||
[ci-img]: https://travis-ci.com/uber-go/zap.svg?branch=master
 | 
					[ci-img]: https://github.com/uber-go/zap/actions/workflows/go.yml/badge.svg
 | 
				
			||||||
[ci]: https://travis-ci.com/uber-go/zap
 | 
					[ci]: https://github.com/uber-go/zap/actions/workflows/go.yml
 | 
				
			||||||
[cov-img]: https://codecov.io/gh/uber-go/zap/branch/master/graph/badge.svg
 | 
					[cov-img]: https://codecov.io/gh/uber-go/zap/branch/master/graph/badge.svg
 | 
				
			||||||
[cov]: https://codecov.io/gh/uber-go/zap
 | 
					[cov]: https://codecov.io/gh/uber-go/zap
 | 
				
			||||||
[benchmarking suite]: https://github.com/uber-go/zap/tree/master/benchmarks
 | 
					[benchmarking suite]: https://github.com/uber-go/zap/tree/master/benchmarks
 | 
				
			||||||
[glide.lock]: https://github.com/uber-go/zap/blob/master/glide.lock
 | 
					[benchmarks/go.mod]: https://github.com/uber-go/zap/blob/master/benchmarks/go.mod
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										351
									
								
								vendor/go.uber.org/zap/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										351
									
								
								vendor/go.uber.org/zap/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,4 +1,148 @@
 | 
				
			|||||||
# Changelog
 | 
					# Changelog
 | 
				
			||||||
 | 
					All notable changes to this project will be documented in this file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 1.26.0 (14 Sep 2023)
 | 
				
			||||||
 | 
					Enhancements:
 | 
				
			||||||
 | 
					* [#1319][]: Add `WithLazy` method to `Logger` which lazily evaluates the structured
 | 
				
			||||||
 | 
					context.
 | 
				
			||||||
 | 
					* [#1350][]: String encoding is much (~50%) faster now.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Thanks to @jquirke, @cdvr1993 for their contributions to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#1319]: https://github.com/uber-go/zap/pull/1319
 | 
				
			||||||
 | 
					[#1350]: https://github.com/uber-go/zap/pull/1350
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 1.25.0 (1 Aug 2023)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This release contains several improvements including performance, API additions,
 | 
				
			||||||
 | 
					and two new experimental packages whose APIs are unstable and may change in the
 | 
				
			||||||
 | 
					future.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Enhancements:
 | 
				
			||||||
 | 
					* [#1246][]: Add `zap/exp/zapslog` package for integration with slog.
 | 
				
			||||||
 | 
					* [#1273][]: Add `Name` to `Logger` which returns the Logger's name if one is set.
 | 
				
			||||||
 | 
					* [#1281][]: Add `zap/exp/expfield` package which contains helper methods
 | 
				
			||||||
 | 
					`Str` and `Strs` for constructing String-like zap.Fields.
 | 
				
			||||||
 | 
					* [#1310][]: Reduce stack size on `Any`. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Thanks to @knight42, @dzakaammar, @bcspragu, and @rexywork for their contributions
 | 
				
			||||||
 | 
					to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#1246]: https://github.com/uber-go/zap/pull/1246
 | 
				
			||||||
 | 
					[#1273]: https://github.com/uber-go/zap/pull/1273
 | 
				
			||||||
 | 
					[#1281]: https://github.com/uber-go/zap/pull/1281
 | 
				
			||||||
 | 
					[#1310]: https://github.com/uber-go/zap/pull/1310
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 1.24.0 (30 Nov 2022)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Enhancements:
 | 
				
			||||||
 | 
					* [#1148][]: Add `Level` to both `Logger` and `SugaredLogger` that reports the
 | 
				
			||||||
 | 
					  current minimum enabled log level.
 | 
				
			||||||
 | 
					* [#1185][]: `SugaredLogger` turns errors to zap.Error automatically.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Thanks to @Abirdcfly, @craigpastro, @nnnkkk7, and @sashamelentyev for their
 | 
				
			||||||
 | 
					contributions to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#1148]: https://github.coml/uber-go/zap/pull/1148
 | 
				
			||||||
 | 
					[#1185]: https://github.coml/uber-go/zap/pull/1185
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 1.23.0 (24 Aug 2022)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Enhancements:
 | 
				
			||||||
 | 
					* [#1147][]: Add a `zapcore.LevelOf` function to determine the level of a
 | 
				
			||||||
 | 
					  `LevelEnabler` or `Core`.
 | 
				
			||||||
 | 
					* [#1155][]: Add `zap.Stringers` field constructor to log arrays of objects
 | 
				
			||||||
 | 
					  that implement `String() string`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#1147]: https://github.com/uber-go/zap/pull/1147
 | 
				
			||||||
 | 
					[#1155]: https://github.com/uber-go/zap/pull/1155
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 1.22.0 (8 Aug 2022)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Enhancements:
 | 
				
			||||||
 | 
					* [#1071][]: Add `zap.Objects` and `zap.ObjectValues` field constructors to log
 | 
				
			||||||
 | 
					  arrays of objects. With these two constructors, you don't need to implement
 | 
				
			||||||
 | 
					  `zapcore.ArrayMarshaler` for use with `zap.Array` if those objects implement
 | 
				
			||||||
 | 
					  `zapcore.ObjectMarshaler`.
 | 
				
			||||||
 | 
					* [#1079][]: Add `SugaredLogger.WithOptions` to build a copy of an existing
 | 
				
			||||||
 | 
					  `SugaredLogger` with the provided options applied.
 | 
				
			||||||
 | 
					* [#1080][]: Add `*ln` variants to `SugaredLogger` for each log level.
 | 
				
			||||||
 | 
					  These functions provide a string joining behavior similar to `fmt.Println`.
 | 
				
			||||||
 | 
					* [#1088][]: Add `zap.WithFatalHook` option to control the behavior of the
 | 
				
			||||||
 | 
					  logger for `Fatal`-level log entries. This defaults to exiting the program.
 | 
				
			||||||
 | 
					* [#1108][]: Add a `zap.Must` function that you can use with `NewProduction` or
 | 
				
			||||||
 | 
					  `NewDevelopment` to panic if the system was unable to build the logger.
 | 
				
			||||||
 | 
					* [#1118][]: Add a `Logger.Log` method that allows specifying the log level for
 | 
				
			||||||
 | 
					  a statement dynamically.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Thanks to @cardil, @craigpastro, @sashamelentyev, @shota3506, and @zhupeijun
 | 
				
			||||||
 | 
					for their contributions to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#1071]: https://github.com/uber-go/zap/pull/1071
 | 
				
			||||||
 | 
					[#1079]: https://github.com/uber-go/zap/pull/1079
 | 
				
			||||||
 | 
					[#1080]: https://github.com/uber-go/zap/pull/1080
 | 
				
			||||||
 | 
					[#1088]: https://github.com/uber-go/zap/pull/1088
 | 
				
			||||||
 | 
					[#1108]: https://github.com/uber-go/zap/pull/1108
 | 
				
			||||||
 | 
					[#1118]: https://github.com/uber-go/zap/pull/1118
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 1.21.0 (7 Feb 2022)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Enhancements:
 | 
				
			||||||
 | 
					*  [#1047][]: Add `zapcore.ParseLevel` to parse a `Level` from a string.
 | 
				
			||||||
 | 
					*  [#1048][]: Add `zap.ParseAtomicLevel` to parse an `AtomicLevel` from a
 | 
				
			||||||
 | 
					   string.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Bugfixes:
 | 
				
			||||||
 | 
					* [#1058][]: Fix panic in JSON encoder when `EncodeLevel` is unset.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Other changes:
 | 
				
			||||||
 | 
					* [#1052][]: Improve encoding performance when the `AddCaller` and
 | 
				
			||||||
 | 
					  `AddStacktrace` options are used together.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#1047]: https://github.com/uber-go/zap/pull/1047
 | 
				
			||||||
 | 
					[#1048]: https://github.com/uber-go/zap/pull/1048
 | 
				
			||||||
 | 
					[#1052]: https://github.com/uber-go/zap/pull/1052
 | 
				
			||||||
 | 
					[#1058]: https://github.com/uber-go/zap/pull/1058
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Thanks to @aerosol and @Techassi for their contributions to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 1.20.0 (4 Jan 2022)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Enhancements:
 | 
				
			||||||
 | 
					* [#989][]: Add `EncoderConfig.SkipLineEnding` flag to disable adding newline
 | 
				
			||||||
 | 
					  characters between log statements.
 | 
				
			||||||
 | 
					* [#1039][]: Add `EncoderConfig.NewReflectedEncoder` field to customize JSON
 | 
				
			||||||
 | 
					  encoding of reflected log fields.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Bugfixes:
 | 
				
			||||||
 | 
					* [#1011][]: Fix inaccurate precision when encoding complex64 as JSON.
 | 
				
			||||||
 | 
					* [#554][], [#1017][]: Close JSON namespaces opened in `MarshalLogObject`
 | 
				
			||||||
 | 
					  methods when the methods return.
 | 
				
			||||||
 | 
					* [#1033][]: Avoid panicking in Sampler core if `thereafter` is zero.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Other changes:
 | 
				
			||||||
 | 
					* [#1028][]: Drop support for Go < 1.15.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#554]: https://github.com/uber-go/zap/pull/554
 | 
				
			||||||
 | 
					[#989]: https://github.com/uber-go/zap/pull/989
 | 
				
			||||||
 | 
					[#1011]: https://github.com/uber-go/zap/pull/1011
 | 
				
			||||||
 | 
					[#1017]: https://github.com/uber-go/zap/pull/1017
 | 
				
			||||||
 | 
					[#1028]: https://github.com/uber-go/zap/pull/1028
 | 
				
			||||||
 | 
					[#1033]: https://github.com/uber-go/zap/pull/1033
 | 
				
			||||||
 | 
					[#1039]: https://github.com/uber-go/zap/pull/1039
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Thanks to @psrajat, @lruggieri, @sammyrnycreal for their contributions to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 1.19.1 (8 Sep 2021)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Bugfixes:
 | 
				
			||||||
 | 
					* [#1001][]: JSON: Fix complex number encoding with negative imaginary part. Thanks to @hemantjadon.
 | 
				
			||||||
 | 
					* [#1003][]: JSON: Fix inaccurate precision when encoding float32.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#1001]: https://github.com/uber-go/zap/pull/1001
 | 
				
			||||||
 | 
					[#1003]: https://github.com/uber-go/zap/pull/1003
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 1.19.0 (9 Aug 2021)
 | 
					## 1.19.0 (9 Aug 2021)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -63,6 +207,16 @@ Enhancements:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Thanks to @ash2k, @FMLS, @jimmystewpot, @Oncilla, @tsoslow, @tylitianrui, @withshubh, and @wziww for their contributions to this release.
 | 
					Thanks to @ash2k, @FMLS, @jimmystewpot, @Oncilla, @tsoslow, @tylitianrui, @withshubh, and @wziww for their contributions to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#865]: https://github.com/uber-go/zap/pull/865
 | 
				
			||||||
 | 
					[#867]: https://github.com/uber-go/zap/pull/867
 | 
				
			||||||
 | 
					[#881]: https://github.com/uber-go/zap/pull/881
 | 
				
			||||||
 | 
					[#903]: https://github.com/uber-go/zap/pull/903
 | 
				
			||||||
 | 
					[#912]: https://github.com/uber-go/zap/pull/912
 | 
				
			||||||
 | 
					[#913]: https://github.com/uber-go/zap/pull/913
 | 
				
			||||||
 | 
					[#928]: https://github.com/uber-go/zap/pull/928
 | 
				
			||||||
 | 
					[#931]: https://github.com/uber-go/zap/pull/931
 | 
				
			||||||
 | 
					[#936]: https://github.com/uber-go/zap/pull/936
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 1.16.0 (1 Sep 2020)
 | 
					## 1.16.0 (1 Sep 2020)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Bugfixes:
 | 
					Bugfixes:
 | 
				
			||||||
@@ -84,6 +238,17 @@ Enhancements:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Thanks to @SteelPhase, @tmshn, @lixingwang, @wyxloading, @moul, @segevfiner, @andy-retailnext and @jcorbin for their contributions to this release.
 | 
					Thanks to @SteelPhase, @tmshn, @lixingwang, @wyxloading, @moul, @segevfiner, @andy-retailnext and @jcorbin for their contributions to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#629]: https://github.com/uber-go/zap/pull/629
 | 
				
			||||||
 | 
					[#697]: https://github.com/uber-go/zap/pull/697
 | 
				
			||||||
 | 
					[#828]: https://github.com/uber-go/zap/pull/828
 | 
				
			||||||
 | 
					[#835]: https://github.com/uber-go/zap/pull/835
 | 
				
			||||||
 | 
					[#843]: https://github.com/uber-go/zap/pull/843
 | 
				
			||||||
 | 
					[#844]: https://github.com/uber-go/zap/pull/844
 | 
				
			||||||
 | 
					[#852]: https://github.com/uber-go/zap/pull/852
 | 
				
			||||||
 | 
					[#854]: https://github.com/uber-go/zap/pull/854
 | 
				
			||||||
 | 
					[#861]: https://github.com/uber-go/zap/pull/861
 | 
				
			||||||
 | 
					[#862]: https://github.com/uber-go/zap/pull/862
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 1.15.0 (23 Apr 2020)
 | 
					## 1.15.0 (23 Apr 2020)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Bugfixes:
 | 
					Bugfixes:
 | 
				
			||||||
@@ -100,6 +265,11 @@ Enhancements:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Thanks to @danielbprice for their contributions to this release.
 | 
					Thanks to @danielbprice for their contributions to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#804]: https://github.com/uber-go/zap/pull/804
 | 
				
			||||||
 | 
					[#812]: https://github.com/uber-go/zap/pull/812
 | 
				
			||||||
 | 
					[#806]: https://github.com/uber-go/zap/pull/806
 | 
				
			||||||
 | 
					[#813]: https://github.com/uber-go/zap/pull/813
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 1.14.1 (14 Mar 2020)
 | 
					## 1.14.1 (14 Mar 2020)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Bugfixes:
 | 
					Bugfixes:
 | 
				
			||||||
@@ -112,6 +282,10 @@ Bugfixes:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Thanks to @YashishDua for their contributions to this release.
 | 
					Thanks to @YashishDua for their contributions to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#791]: https://github.com/uber-go/zap/pull/791
 | 
				
			||||||
 | 
					[#795]: https://github.com/uber-go/zap/pull/795
 | 
				
			||||||
 | 
					[#799]: https://github.com/uber-go/zap/pull/799
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 1.14.0 (20 Feb 2020)
 | 
					## 1.14.0 (20 Feb 2020)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Enhancements:
 | 
					Enhancements:
 | 
				
			||||||
@@ -122,6 +296,11 @@ Enhancements:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Thanks to @caibirdme for their contributions to this release.
 | 
					Thanks to @caibirdme for their contributions to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#771]: https://github.com/uber-go/zap/pull/771
 | 
				
			||||||
 | 
					[#773]: https://github.com/uber-go/zap/pull/773
 | 
				
			||||||
 | 
					[#775]: https://github.com/uber-go/zap/pull/775
 | 
				
			||||||
 | 
					[#786]: https://github.com/uber-go/zap/pull/786
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 1.13.0 (13 Nov 2019)
 | 
					## 1.13.0 (13 Nov 2019)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Enhancements:
 | 
					Enhancements:
 | 
				
			||||||
@@ -130,11 +309,15 @@ Enhancements:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Thanks to @jbizzle for their contributions to this release.
 | 
					Thanks to @jbizzle for their contributions to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#758]: https://github.com/uber-go/zap/pull/758
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 1.12.0 (29 Oct 2019)
 | 
					## 1.12.0 (29 Oct 2019)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Enhancements:
 | 
					Enhancements:
 | 
				
			||||||
* [#751][]: Migrate to Go modules.
 | 
					* [#751][]: Migrate to Go modules.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#751]: https://github.com/uber-go/zap/pull/751
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 1.11.0 (21 Oct 2019)
 | 
					## 1.11.0 (21 Oct 2019)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Enhancements:
 | 
					Enhancements:
 | 
				
			||||||
@@ -143,6 +326,9 @@ Enhancements:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Thanks to @juicemia, @uhthomas for their contributions to this release.
 | 
					Thanks to @juicemia, @uhthomas for their contributions to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#725]: https://github.com/uber-go/zap/pull/725
 | 
				
			||||||
 | 
					[#736]: https://github.com/uber-go/zap/pull/736
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 1.10.0 (29 Apr 2019)
 | 
					## 1.10.0 (29 Apr 2019)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Bugfixes:
 | 
					Bugfixes:
 | 
				
			||||||
@@ -160,12 +346,20 @@ Enhancements:
 | 
				
			|||||||
Thanks to @iaroslav-ciupin, @lelenanam, @joa, @NWilson for their contributions
 | 
					Thanks to @iaroslav-ciupin, @lelenanam, @joa, @NWilson for their contributions
 | 
				
			||||||
to this release.
 | 
					to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#657]: https://github.com/uber-go/zap/pull/657
 | 
				
			||||||
 | 
					[#706]: https://github.com/uber-go/zap/pull/706
 | 
				
			||||||
 | 
					[#610]: https://github.com/uber-go/zap/pull/610
 | 
				
			||||||
 | 
					[#675]: https://github.com/uber-go/zap/pull/675
 | 
				
			||||||
 | 
					[#704]: https://github.com/uber-go/zap/pull/704
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v1.9.1 (06 Aug 2018)
 | 
					## v1.9.1 (06 Aug 2018)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Bugfixes:
 | 
					Bugfixes:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* [#614][]: MapObjectEncoder should not ignore empty slices.
 | 
					* [#614][]: MapObjectEncoder should not ignore empty slices.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#614]: https://github.com/uber-go/zap/pull/614
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v1.9.0 (19 Jul 2018)
 | 
					## v1.9.0 (19 Jul 2018)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Enhancements:
 | 
					Enhancements:
 | 
				
			||||||
@@ -175,6 +369,10 @@ Enhancements:
 | 
				
			|||||||
Thanks to @nfarah86, @AlekSi, @JeanMertz, @philippgille, @etsangsplk, and
 | 
					Thanks to @nfarah86, @AlekSi, @JeanMertz, @philippgille, @etsangsplk, and
 | 
				
			||||||
@dimroc for their contributions to this release.
 | 
					@dimroc for their contributions to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#602]: https://github.com/uber-go/zap/pull/602
 | 
				
			||||||
 | 
					[#572]: https://github.com/uber-go/zap/pull/572
 | 
				
			||||||
 | 
					[#606]: https://github.com/uber-go/zap/pull/606
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v1.8.0 (13 Apr 2018)
 | 
					## v1.8.0 (13 Apr 2018)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Enhancements:
 | 
					Enhancements:
 | 
				
			||||||
@@ -188,11 +386,18 @@ Bugfixes:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Thanks to @DiSiqueira and @djui for their contributions to this release.
 | 
					Thanks to @DiSiqueira and @djui for their contributions to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#508]: https://github.com/uber-go/zap/pull/508
 | 
				
			||||||
 | 
					[#518]: https://github.com/uber-go/zap/pull/518
 | 
				
			||||||
 | 
					[#577]: https://github.com/uber-go/zap/pull/577
 | 
				
			||||||
 | 
					[#574]: https://github.com/uber-go/zap/pull/574
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v1.7.1 (25 Sep 2017)
 | 
					## v1.7.1 (25 Sep 2017)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Bugfixes:
 | 
					Bugfixes:
 | 
				
			||||||
* [#504][]: Store strings when using AddByteString with the map encoder.
 | 
					* [#504][]: Store strings when using AddByteString with the map encoder.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#504]: https://github.com/uber-go/zap/pull/504
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v1.7.0 (21 Sep 2017)
 | 
					## v1.7.0 (21 Sep 2017)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Enhancements:
 | 
					Enhancements:
 | 
				
			||||||
@@ -200,6 +405,8 @@ Enhancements:
 | 
				
			|||||||
* [#487][]: Add `NewStdLogAt`, which extends `NewStdLog` by allowing the user
 | 
					* [#487][]: Add `NewStdLogAt`, which extends `NewStdLog` by allowing the user
 | 
				
			||||||
  to specify the level of the logged messages.
 | 
					  to specify the level of the logged messages.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#487]: https://github.com/uber-go/zap/pull/487
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v1.6.0 (30 Aug 2017)
 | 
					## v1.6.0 (30 Aug 2017)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Enhancements:
 | 
					Enhancements:
 | 
				
			||||||
@@ -208,6 +415,9 @@ Enhancements:
 | 
				
			|||||||
* [#490][]: Add a `ContextMap` method to observer logs for simpler
 | 
					* [#490][]: Add a `ContextMap` method to observer logs for simpler
 | 
				
			||||||
  field validation in tests.
 | 
					  field validation in tests.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#490]: https://github.com/uber-go/zap/pull/490
 | 
				
			||||||
 | 
					[#491]: https://github.com/uber-go/zap/pull/491
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v1.5.0 (22 Jul 2017)
 | 
					## v1.5.0 (22 Jul 2017)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Enhancements:
 | 
					Enhancements:
 | 
				
			||||||
@@ -221,6 +431,11 @@ Bugfixes:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Thanks to @richard-tunein and @pavius for their contributions to this release.
 | 
					Thanks to @richard-tunein and @pavius for their contributions to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#477]: https://github.com/uber-go/zap/pull/477
 | 
				
			||||||
 | 
					[#465]: https://github.com/uber-go/zap/pull/465
 | 
				
			||||||
 | 
					[#460]: https://github.com/uber-go/zap/pull/460
 | 
				
			||||||
 | 
					[#470]: https://github.com/uber-go/zap/pull/470
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v1.4.1 (08 Jun 2017)
 | 
					## v1.4.1 (08 Jun 2017)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This release fixes two bugs.
 | 
					This release fixes two bugs.
 | 
				
			||||||
@@ -230,6 +445,9 @@ Bugfixes:
 | 
				
			|||||||
* [#435][]: Support a variety of case conventions when unmarshaling levels.
 | 
					* [#435][]: Support a variety of case conventions when unmarshaling levels.
 | 
				
			||||||
* [#444][]: Fix a panic in the observer.
 | 
					* [#444][]: Fix a panic in the observer.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#435]: https://github.com/uber-go/zap/pull/435
 | 
				
			||||||
 | 
					[#444]: https://github.com/uber-go/zap/pull/444
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v1.4.0 (12 May 2017)
 | 
					## v1.4.0 (12 May 2017)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This release adds a few small features and is fully backward-compatible.
 | 
					This release adds a few small features and is fully backward-compatible.
 | 
				
			||||||
@@ -242,6 +460,10 @@ Enhancements:
 | 
				
			|||||||
* [#431][]: Make `zap.AtomicLevel` implement `fmt.Stringer`, which makes a
 | 
					* [#431][]: Make `zap.AtomicLevel` implement `fmt.Stringer`, which makes a
 | 
				
			||||||
  variety of operations a bit simpler.
 | 
					  variety of operations a bit simpler.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#424]: https://github.com/uber-go/zap/pull/424
 | 
				
			||||||
 | 
					[#425]: https://github.com/uber-go/zap/pull/425
 | 
				
			||||||
 | 
					[#431]: https://github.com/uber-go/zap/pull/431
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v1.3.0 (25 Apr 2017)
 | 
					## v1.3.0 (25 Apr 2017)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This release adds an enhancement to zap's testing helpers as well as the
 | 
					This release adds an enhancement to zap's testing helpers as well as the
 | 
				
			||||||
@@ -253,6 +475,9 @@ Enhancements:
 | 
				
			|||||||
  particularly useful when testing the `SugaredLogger`.
 | 
					  particularly useful when testing the `SugaredLogger`.
 | 
				
			||||||
* [#416][]: Make `AtomicLevel` implement `encoding.TextMarshaler`.
 | 
					* [#416][]: Make `AtomicLevel` implement `encoding.TextMarshaler`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#415]: https://github.com/uber-go/zap/pull/415
 | 
				
			||||||
 | 
					[#416]: https://github.com/uber-go/zap/pull/416
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v1.2.0 (13 Apr 2017)
 | 
					## v1.2.0 (13 Apr 2017)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This release adds a gRPC compatibility wrapper. It is fully backward-compatible.
 | 
					This release adds a gRPC compatibility wrapper. It is fully backward-compatible.
 | 
				
			||||||
@@ -262,6 +487,8 @@ Enhancements:
 | 
				
			|||||||
* [#402][]: Add a `zapgrpc` package that wraps zap's Logger and implements
 | 
					* [#402][]: Add a `zapgrpc` package that wraps zap's Logger and implements
 | 
				
			||||||
  `grpclog.Logger`.
 | 
					  `grpclog.Logger`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#402]: https://github.com/uber-go/zap/pull/402
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v1.1.0 (31 Mar 2017)
 | 
					## v1.1.0 (31 Mar 2017)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This release fixes two bugs and adds some enhancements to zap's testing helpers.
 | 
					This release fixes two bugs and adds some enhancements to zap's testing helpers.
 | 
				
			||||||
@@ -279,6 +506,10 @@ Enhancements:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Thanks to @moitias for contributing to this release.
 | 
					Thanks to @moitias for contributing to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#385]: https://github.com/uber-go/zap/pull/385
 | 
				
			||||||
 | 
					[#396]: https://github.com/uber-go/zap/pull/396
 | 
				
			||||||
 | 
					[#386]: https://github.com/uber-go/zap/pull/386
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v1.0.0 (14 Mar 2017)
 | 
					## v1.0.0 (14 Mar 2017)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This is zap's first stable release. All exported APIs are now final, and no
 | 
					This is zap's first stable release. All exported APIs are now final, and no
 | 
				
			||||||
@@ -324,6 +555,20 @@ Enhancements:
 | 
				
			|||||||
Thanks to @suyash, @htrendev, @flisky, @Ulexus, and @skipor for their
 | 
					Thanks to @suyash, @htrendev, @flisky, @Ulexus, and @skipor for their
 | 
				
			||||||
contributions to this release.
 | 
					contributions to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#366]: https://github.com/uber-go/zap/pull/366
 | 
				
			||||||
 | 
					[#364]: https://github.com/uber-go/zap/pull/364
 | 
				
			||||||
 | 
					[#371]: https://github.com/uber-go/zap/pull/371
 | 
				
			||||||
 | 
					[#362]: https://github.com/uber-go/zap/pull/362
 | 
				
			||||||
 | 
					[#369]: https://github.com/uber-go/zap/pull/369
 | 
				
			||||||
 | 
					[#347]: https://github.com/uber-go/zap/pull/347
 | 
				
			||||||
 | 
					[#373]: https://github.com/uber-go/zap/pull/373
 | 
				
			||||||
 | 
					[#348]: https://github.com/uber-go/zap/pull/348
 | 
				
			||||||
 | 
					[#327]: https://github.com/uber-go/zap/pull/327
 | 
				
			||||||
 | 
					[#376]: https://github.com/uber-go/zap/pull/376
 | 
				
			||||||
 | 
					[#346]: https://github.com/uber-go/zap/pull/346
 | 
				
			||||||
 | 
					[#365]: https://github.com/uber-go/zap/pull/365
 | 
				
			||||||
 | 
					[#372]: https://github.com/uber-go/zap/pull/372
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v1.0.0-rc.3 (7 Mar 2017)
 | 
					## v1.0.0-rc.3 (7 Mar 2017)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This is the third release candidate for zap's stable release. There are no
 | 
					This is the third release candidate for zap's stable release. There are no
 | 
				
			||||||
@@ -345,6 +590,11 @@ Enhancements:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Thanks to @ansel1 and @suyash for their contributions to this release.
 | 
					Thanks to @ansel1 and @suyash for their contributions to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#339]: https://github.com/uber-go/zap/pull/339
 | 
				
			||||||
 | 
					[#307]: https://github.com/uber-go/zap/pull/307
 | 
				
			||||||
 | 
					[#353]: https://github.com/uber-go/zap/pull/353
 | 
				
			||||||
 | 
					[#311]: https://github.com/uber-go/zap/pull/311
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v1.0.0-rc.2 (21 Feb 2017)
 | 
					## v1.0.0-rc.2 (21 Feb 2017)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This is the second release candidate for zap's stable release. It includes two
 | 
					This is the second release candidate for zap's stable release. It includes two
 | 
				
			||||||
@@ -382,6 +632,15 @@ Enhancements:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Thanks to @skipor and @chapsuk for their contributions to this release.
 | 
					Thanks to @skipor and @chapsuk for their contributions to this release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[#316]: https://github.com/uber-go/zap/pull/316
 | 
				
			||||||
 | 
					[#309]: https://github.com/uber-go/zap/pull/309
 | 
				
			||||||
 | 
					[#317]: https://github.com/uber-go/zap/pull/317
 | 
				
			||||||
 | 
					[#321]: https://github.com/uber-go/zap/pull/321
 | 
				
			||||||
 | 
					[#325]: https://github.com/uber-go/zap/pull/325
 | 
				
			||||||
 | 
					[#333]: https://github.com/uber-go/zap/pull/333
 | 
				
			||||||
 | 
					[#326]: https://github.com/uber-go/zap/pull/326
 | 
				
			||||||
 | 
					[#300]: https://github.com/uber-go/zap/pull/300
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v1.0.0-rc.1 (14 Feb 2017)
 | 
					## v1.0.0-rc.1 (14 Feb 2017)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This is the first release candidate for zap's stable release. There are multiple
 | 
					This is the first release candidate for zap's stable release. There are multiple
 | 
				
			||||||
@@ -410,95 +669,3 @@ backward compatibility concerns and all functionality is new.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Early zap adopters should pin to the 0.1.x minor version until they're ready to
 | 
					Early zap adopters should pin to the 0.1.x minor version until they're ready to
 | 
				
			||||||
upgrade to the upcoming stable release.
 | 
					upgrade to the upcoming stable release.
 | 
				
			||||||
 | 
					 | 
				
			||||||
[#316]: https://github.com/uber-go/zap/pull/316
 | 
					 | 
				
			||||||
[#309]: https://github.com/uber-go/zap/pull/309
 | 
					 | 
				
			||||||
[#317]: https://github.com/uber-go/zap/pull/317
 | 
					 | 
				
			||||||
[#321]: https://github.com/uber-go/zap/pull/321
 | 
					 | 
				
			||||||
[#325]: https://github.com/uber-go/zap/pull/325
 | 
					 | 
				
			||||||
[#333]: https://github.com/uber-go/zap/pull/333
 | 
					 | 
				
			||||||
[#326]: https://github.com/uber-go/zap/pull/326
 | 
					 | 
				
			||||||
[#300]: https://github.com/uber-go/zap/pull/300
 | 
					 | 
				
			||||||
[#339]: https://github.com/uber-go/zap/pull/339
 | 
					 | 
				
			||||||
[#307]: https://github.com/uber-go/zap/pull/307
 | 
					 | 
				
			||||||
[#353]: https://github.com/uber-go/zap/pull/353
 | 
					 | 
				
			||||||
[#311]: https://github.com/uber-go/zap/pull/311
 | 
					 | 
				
			||||||
[#366]: https://github.com/uber-go/zap/pull/366
 | 
					 | 
				
			||||||
[#364]: https://github.com/uber-go/zap/pull/364
 | 
					 | 
				
			||||||
[#371]: https://github.com/uber-go/zap/pull/371
 | 
					 | 
				
			||||||
[#362]: https://github.com/uber-go/zap/pull/362
 | 
					 | 
				
			||||||
[#369]: https://github.com/uber-go/zap/pull/369
 | 
					 | 
				
			||||||
[#347]: https://github.com/uber-go/zap/pull/347
 | 
					 | 
				
			||||||
[#373]: https://github.com/uber-go/zap/pull/373
 | 
					 | 
				
			||||||
[#348]: https://github.com/uber-go/zap/pull/348
 | 
					 | 
				
			||||||
[#327]: https://github.com/uber-go/zap/pull/327
 | 
					 | 
				
			||||||
[#376]: https://github.com/uber-go/zap/pull/376
 | 
					 | 
				
			||||||
[#346]: https://github.com/uber-go/zap/pull/346
 | 
					 | 
				
			||||||
[#365]: https://github.com/uber-go/zap/pull/365
 | 
					 | 
				
			||||||
[#372]: https://github.com/uber-go/zap/pull/372
 | 
					 | 
				
			||||||
[#385]: https://github.com/uber-go/zap/pull/385
 | 
					 | 
				
			||||||
[#396]: https://github.com/uber-go/zap/pull/396
 | 
					 | 
				
			||||||
[#386]: https://github.com/uber-go/zap/pull/386
 | 
					 | 
				
			||||||
[#402]: https://github.com/uber-go/zap/pull/402
 | 
					 | 
				
			||||||
[#415]: https://github.com/uber-go/zap/pull/415
 | 
					 | 
				
			||||||
[#416]: https://github.com/uber-go/zap/pull/416
 | 
					 | 
				
			||||||
[#424]: https://github.com/uber-go/zap/pull/424
 | 
					 | 
				
			||||||
[#425]: https://github.com/uber-go/zap/pull/425
 | 
					 | 
				
			||||||
[#431]: https://github.com/uber-go/zap/pull/431
 | 
					 | 
				
			||||||
[#435]: https://github.com/uber-go/zap/pull/435
 | 
					 | 
				
			||||||
[#444]: https://github.com/uber-go/zap/pull/444
 | 
					 | 
				
			||||||
[#477]: https://github.com/uber-go/zap/pull/477
 | 
					 | 
				
			||||||
[#465]: https://github.com/uber-go/zap/pull/465
 | 
					 | 
				
			||||||
[#460]: https://github.com/uber-go/zap/pull/460
 | 
					 | 
				
			||||||
[#470]: https://github.com/uber-go/zap/pull/470
 | 
					 | 
				
			||||||
[#487]: https://github.com/uber-go/zap/pull/487
 | 
					 | 
				
			||||||
[#490]: https://github.com/uber-go/zap/pull/490
 | 
					 | 
				
			||||||
[#491]: https://github.com/uber-go/zap/pull/491
 | 
					 | 
				
			||||||
[#504]: https://github.com/uber-go/zap/pull/504
 | 
					 | 
				
			||||||
[#508]: https://github.com/uber-go/zap/pull/508
 | 
					 | 
				
			||||||
[#518]: https://github.com/uber-go/zap/pull/518
 | 
					 | 
				
			||||||
[#577]: https://github.com/uber-go/zap/pull/577
 | 
					 | 
				
			||||||
[#574]: https://github.com/uber-go/zap/pull/574
 | 
					 | 
				
			||||||
[#602]: https://github.com/uber-go/zap/pull/602
 | 
					 | 
				
			||||||
[#572]: https://github.com/uber-go/zap/pull/572
 | 
					 | 
				
			||||||
[#606]: https://github.com/uber-go/zap/pull/606
 | 
					 | 
				
			||||||
[#614]: https://github.com/uber-go/zap/pull/614
 | 
					 | 
				
			||||||
[#657]: https://github.com/uber-go/zap/pull/657
 | 
					 | 
				
			||||||
[#706]: https://github.com/uber-go/zap/pull/706
 | 
					 | 
				
			||||||
[#610]: https://github.com/uber-go/zap/pull/610
 | 
					 | 
				
			||||||
[#675]: https://github.com/uber-go/zap/pull/675
 | 
					 | 
				
			||||||
[#704]: https://github.com/uber-go/zap/pull/704
 | 
					 | 
				
			||||||
[#725]: https://github.com/uber-go/zap/pull/725
 | 
					 | 
				
			||||||
[#736]: https://github.com/uber-go/zap/pull/736
 | 
					 | 
				
			||||||
[#751]: https://github.com/uber-go/zap/pull/751
 | 
					 | 
				
			||||||
[#758]: https://github.com/uber-go/zap/pull/758
 | 
					 | 
				
			||||||
[#771]: https://github.com/uber-go/zap/pull/771
 | 
					 | 
				
			||||||
[#773]: https://github.com/uber-go/zap/pull/773
 | 
					 | 
				
			||||||
[#775]: https://github.com/uber-go/zap/pull/775
 | 
					 | 
				
			||||||
[#786]: https://github.com/uber-go/zap/pull/786
 | 
					 | 
				
			||||||
[#791]: https://github.com/uber-go/zap/pull/791
 | 
					 | 
				
			||||||
[#795]: https://github.com/uber-go/zap/pull/795
 | 
					 | 
				
			||||||
[#799]: https://github.com/uber-go/zap/pull/799
 | 
					 | 
				
			||||||
[#804]: https://github.com/uber-go/zap/pull/804
 | 
					 | 
				
			||||||
[#812]: https://github.com/uber-go/zap/pull/812
 | 
					 | 
				
			||||||
[#806]: https://github.com/uber-go/zap/pull/806
 | 
					 | 
				
			||||||
[#813]: https://github.com/uber-go/zap/pull/813
 | 
					 | 
				
			||||||
[#629]: https://github.com/uber-go/zap/pull/629
 | 
					 | 
				
			||||||
[#697]: https://github.com/uber-go/zap/pull/697
 | 
					 | 
				
			||||||
[#828]: https://github.com/uber-go/zap/pull/828
 | 
					 | 
				
			||||||
[#835]: https://github.com/uber-go/zap/pull/835
 | 
					 | 
				
			||||||
[#843]: https://github.com/uber-go/zap/pull/843
 | 
					 | 
				
			||||||
[#844]: https://github.com/uber-go/zap/pull/844
 | 
					 | 
				
			||||||
[#852]: https://github.com/uber-go/zap/pull/852
 | 
					 | 
				
			||||||
[#854]: https://github.com/uber-go/zap/pull/854
 | 
					 | 
				
			||||||
[#861]: https://github.com/uber-go/zap/pull/861
 | 
					 | 
				
			||||||
[#862]: https://github.com/uber-go/zap/pull/862
 | 
					 | 
				
			||||||
[#865]: https://github.com/uber-go/zap/pull/865
 | 
					 | 
				
			||||||
[#867]: https://github.com/uber-go/zap/pull/867
 | 
					 | 
				
			||||||
[#881]: https://github.com/uber-go/zap/pull/881
 | 
					 | 
				
			||||||
[#903]: https://github.com/uber-go/zap/pull/903
 | 
					 | 
				
			||||||
[#912]: https://github.com/uber-go/zap/pull/912
 | 
					 | 
				
			||||||
[#913]: https://github.com/uber-go/zap/pull/913
 | 
					 | 
				
			||||||
[#928]: https://github.com/uber-go/zap/pull/928
 | 
					 | 
				
			||||||
[#931]: https://github.com/uber-go/zap/pull/931
 | 
					 | 
				
			||||||
[#936]: https://github.com/uber-go/zap/pull/936
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										21
									
								
								vendor/go.uber.org/zap/CONTRIBUTING.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								vendor/go.uber.org/zap/CONTRIBUTING.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -16,7 +16,7 @@ you to accept the CLA when you open your pull request.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[Fork][fork], then clone the repository:
 | 
					[Fork][fork], then clone the repository:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```
 | 
					```bash
 | 
				
			||||||
mkdir -p $GOPATH/src/go.uber.org
 | 
					mkdir -p $GOPATH/src/go.uber.org
 | 
				
			||||||
cd $GOPATH/src/go.uber.org
 | 
					cd $GOPATH/src/go.uber.org
 | 
				
			||||||
git clone git@github.com:your_github_username/zap.git
 | 
					git clone git@github.com:your_github_username/zap.git
 | 
				
			||||||
@@ -27,21 +27,16 @@ git fetch upstream
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Make sure that the tests and the linters pass:
 | 
					Make sure that the tests and the linters pass:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```
 | 
					```bash
 | 
				
			||||||
make test
 | 
					make test
 | 
				
			||||||
make lint
 | 
					make lint
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If you're not using the minor version of Go specified in the Makefile's
 | 
					 | 
				
			||||||
`LINTABLE_MINOR_VERSIONS` variable, `make lint` doesn't do anything. This is
 | 
					 | 
				
			||||||
fine, but it means that you'll only discover lint failures after you open your
 | 
					 | 
				
			||||||
pull request.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Making Changes
 | 
					## Making Changes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Start by creating a new branch for your changes:
 | 
					Start by creating a new branch for your changes:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```
 | 
					```bash
 | 
				
			||||||
cd $GOPATH/src/go.uber.org/zap
 | 
					cd $GOPATH/src/go.uber.org/zap
 | 
				
			||||||
git checkout master
 | 
					git checkout master
 | 
				
			||||||
git fetch upstream
 | 
					git fetch upstream
 | 
				
			||||||
@@ -52,22 +47,22 @@ git checkout -b cool_new_feature
 | 
				
			|||||||
Make your changes, then ensure that `make lint` and `make test` still pass. If
 | 
					Make your changes, then ensure that `make lint` and `make test` still pass. If
 | 
				
			||||||
you're satisfied with your changes, push them to your fork.
 | 
					you're satisfied with your changes, push them to your fork.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```
 | 
					```bash
 | 
				
			||||||
git push origin cool_new_feature
 | 
					git push origin cool_new_feature
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Then use the GitHub UI to open a pull request.
 | 
					Then use the GitHub UI to open a pull request.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
At this point, you're waiting on us to review your changes. We *try* to respond
 | 
					At this point, you're waiting on us to review your changes. We _try_ to respond
 | 
				
			||||||
to issues and pull requests within a few business days, and we may suggest some
 | 
					to issues and pull requests within a few business days, and we may suggest some
 | 
				
			||||||
improvements or alternatives. Once your changes are approved, one of the
 | 
					improvements or alternatives. Once your changes are approved, one of the
 | 
				
			||||||
project maintainers will merge them.
 | 
					project maintainers will merge them.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
We're much more likely to approve your changes if you:
 | 
					We're much more likely to approve your changes if you:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Add tests for new functionality.
 | 
					- Add tests for new functionality.
 | 
				
			||||||
* Write a [good commit message][commit-message].
 | 
					- Write a [good commit message][commit-message].
 | 
				
			||||||
* Maintain backward compatibility.
 | 
					- Maintain backward compatibility.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[fork]: https://github.com/uber-go/zap/fork
 | 
					[fork]: https://github.com/uber-go/zap/fork
 | 
				
			||||||
[open-issue]: https://github.com/uber-go/zap/issues/new
 | 
					[open-issue]: https://github.com/uber-go/zap/issues/new
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										83
									
								
								vendor/go.uber.org/zap/Makefile
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										83
									
								
								vendor/go.uber.org/zap/Makefile
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,50 +1,51 @@
 | 
				
			|||||||
export GOBIN ?= $(shell pwd)/bin
 | 
					# Directory containing the Makefile.
 | 
				
			||||||
 | 
					PROJECT_ROOT = $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GOLINT = $(GOBIN)/golint
 | 
					export GOBIN ?= $(PROJECT_ROOT)/bin
 | 
				
			||||||
STATICCHECK = $(GOBIN)/staticcheck
 | 
					export PATH := $(GOBIN):$(PATH)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GOVULNCHECK = $(GOBIN)/govulncheck
 | 
				
			||||||
BENCH_FLAGS ?= -cpuprofile=cpu.pprof -memprofile=mem.pprof -benchmem
 | 
					BENCH_FLAGS ?= -cpuprofile=cpu.pprof -memprofile=mem.pprof -benchmem
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Directories containing independent Go modules.
 | 
					# Directories containing independent Go modules.
 | 
				
			||||||
#
 | 
					MODULE_DIRS = . ./exp ./benchmarks ./zapgrpc/internal/test
 | 
				
			||||||
# We track coverage only for the main module.
 | 
					 | 
				
			||||||
MODULE_DIRS = . ./benchmarks ./zapgrpc/internal/test
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Many Go tools take file globs or directories as arguments instead of packages.
 | 
					# Directories that we want to track coverage for.
 | 
				
			||||||
GO_FILES := $(shell \
 | 
					COVER_DIRS = . ./exp
 | 
				
			||||||
	find . '(' -path '*/.*' -o -path './vendor' ')' -prune \
 | 
					 | 
				
			||||||
	-o -name '*.go' -print | cut -b3-)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PHONY: all
 | 
					.PHONY: all
 | 
				
			||||||
all: lint test
 | 
					all: lint test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PHONY: lint
 | 
					.PHONY: lint
 | 
				
			||||||
lint: $(GOLINT) $(STATICCHECK)
 | 
					lint: golangci-lint tidy-lint license-lint
 | 
				
			||||||
	@rm -rf lint.log
 | 
					 | 
				
			||||||
	@echo "Checking formatting..."
 | 
					 | 
				
			||||||
	@gofmt -d -s $(GO_FILES) 2>&1 | tee lint.log
 | 
					 | 
				
			||||||
	@echo "Checking vet..."
 | 
					 | 
				
			||||||
	@$(foreach dir,$(MODULE_DIRS),(cd $(dir) && go vet ./... 2>&1) &&) true | tee -a lint.log
 | 
					 | 
				
			||||||
	@echo "Checking lint..."
 | 
					 | 
				
			||||||
	@$(foreach dir,$(MODULE_DIRS),(cd $(dir) && $(GOLINT) ./... 2>&1) &&) true | tee -a lint.log
 | 
					 | 
				
			||||||
	@echo "Checking staticcheck..."
 | 
					 | 
				
			||||||
	@$(foreach dir,$(MODULE_DIRS),(cd $(dir) && $(STATICCHECK) ./... 2>&1) &&) true | tee -a lint.log
 | 
					 | 
				
			||||||
	@echo "Checking for unresolved FIXMEs..."
 | 
					 | 
				
			||||||
	@git grep -i fixme | grep -v -e Makefile | tee -a lint.log
 | 
					 | 
				
			||||||
	@echo "Checking for license headers..."
 | 
					 | 
				
			||||||
	@./checklicense.sh | tee -a lint.log
 | 
					 | 
				
			||||||
	@[ ! -s lint.log ]
 | 
					 | 
				
			||||||
	@echo "Checking 'go mod tidy'..."
 | 
					 | 
				
			||||||
	@make tidy
 | 
					 | 
				
			||||||
	@if ! git diff --quiet; then \
 | 
					 | 
				
			||||||
		echo "'go mod tidy' resulted in changes or working tree is dirty:"; \
 | 
					 | 
				
			||||||
		git --no-pager diff; \
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(GOLINT):
 | 
					.PHONY: golangci-lint
 | 
				
			||||||
	cd tools && go install golang.org/x/lint/golint
 | 
					golangci-lint:
 | 
				
			||||||
 | 
						@$(foreach mod,$(MODULE_DIRS), \
 | 
				
			||||||
 | 
							(cd $(mod) && \
 | 
				
			||||||
 | 
							echo "[lint] golangci-lint: $(mod)" && \
 | 
				
			||||||
 | 
							golangci-lint run --path-prefix $(mod)) &&) true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(STATICCHECK):
 | 
					.PHONY: tidy
 | 
				
			||||||
	cd tools && go install honnef.co/go/tools/cmd/staticcheck
 | 
					tidy:
 | 
				
			||||||
 | 
						@$(foreach dir,$(MODULE_DIRS), \
 | 
				
			||||||
 | 
							(cd $(dir) && go mod tidy) &&) true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.PHONY: tidy-lint
 | 
				
			||||||
 | 
					tidy-lint:
 | 
				
			||||||
 | 
						@$(foreach mod,$(MODULE_DIRS), \
 | 
				
			||||||
 | 
							(cd $(mod) && \
 | 
				
			||||||
 | 
							echo "[lint] tidy: $(mod)" && \
 | 
				
			||||||
 | 
							go mod tidy && \
 | 
				
			||||||
 | 
							git diff --exit-code -- go.mod go.sum) &&) true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.PHONY: license-lint
 | 
				
			||||||
 | 
					license-lint:
 | 
				
			||||||
 | 
						./checklicense.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(GOVULNCHECK):
 | 
				
			||||||
 | 
						cd tools && go install golang.org/x/vuln/cmd/govulncheck
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PHONY: test
 | 
					.PHONY: test
 | 
				
			||||||
test:
 | 
					test:
 | 
				
			||||||
@@ -52,8 +53,10 @@ test:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
.PHONY: cover
 | 
					.PHONY: cover
 | 
				
			||||||
cover:
 | 
					cover:
 | 
				
			||||||
	go test -race -coverprofile=cover.out -coverpkg=./... ./...
 | 
						@$(foreach dir,$(COVER_DIRS), ( \
 | 
				
			||||||
	go tool cover -html=cover.out -o cover.html
 | 
							cd $(dir) && \
 | 
				
			||||||
 | 
							go test -race -coverprofile=cover.out -coverpkg=./... ./... \
 | 
				
			||||||
 | 
							&& go tool cover -html=cover.out -o cover.html) &&) true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PHONY: bench
 | 
					.PHONY: bench
 | 
				
			||||||
BENCH ?= .
 | 
					BENCH ?= .
 | 
				
			||||||
@@ -68,6 +71,6 @@ updatereadme:
 | 
				
			|||||||
	rm -f README.md
 | 
						rm -f README.md
 | 
				
			||||||
	cat .readme.tmpl | go run internal/readme/readme.go > README.md
 | 
						cat .readme.tmpl | go run internal/readme/readme.go > README.md
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PHONY: tidy
 | 
					.PHONY: vulncheck
 | 
				
			||||||
tidy:
 | 
					vulncheck: $(GOVULNCHECK)
 | 
				
			||||||
	@$(foreach dir,$(MODULE_DIRS),(cd $(dir) && go mod tidy) &&) true
 | 
						$(GOVULNCHECK) ./...
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										47
									
								
								vendor/go.uber.org/zap/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										47
									
								
								vendor/go.uber.org/zap/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -66,38 +66,41 @@ Log a message and 10 fields:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
| Package | Time | Time % to zap | Objects Allocated |
 | 
					| Package | Time | Time % to zap | Objects Allocated |
 | 
				
			||||||
| :------ | :--: | :-----------: | :---------------: |
 | 
					| :------ | :--: | :-----------: | :---------------: |
 | 
				
			||||||
| :zap: zap | 862 ns/op | +0% | 5 allocs/op
 | 
					| :zap: zap | 1744 ns/op | +0% | 5 allocs/op
 | 
				
			||||||
| :zap: zap (sugared) | 1250 ns/op | +45% | 11 allocs/op
 | 
					| :zap: zap (sugared) | 2483 ns/op | +42% | 10 allocs/op
 | 
				
			||||||
| zerolog | 4021 ns/op | +366% | 76 allocs/op
 | 
					| zerolog | 918 ns/op | -47% | 1 allocs/op
 | 
				
			||||||
| go-kit | 4542 ns/op | +427% | 105 allocs/op
 | 
					| go-kit | 5590 ns/op | +221% | 57 allocs/op
 | 
				
			||||||
| apex/log | 26785 ns/op | +3007% | 115 allocs/op
 | 
					| slog | 5640 ns/op | +223% | 40 allocs/op
 | 
				
			||||||
| logrus | 29501 ns/op | +3322% | 125 allocs/op
 | 
					| apex/log | 21184 ns/op | +1115% | 63 allocs/op
 | 
				
			||||||
| log15 | 29906 ns/op | +3369% | 122 allocs/op
 | 
					| logrus | 24338 ns/op | +1296% | 79 allocs/op
 | 
				
			||||||
 | 
					| log15 | 26054 ns/op | +1394% | 74 allocs/op
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Log a message with a logger that already has 10 fields of context:
 | 
					Log a message with a logger that already has 10 fields of context:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Package | Time | Time % to zap | Objects Allocated |
 | 
					| Package | Time | Time % to zap | Objects Allocated |
 | 
				
			||||||
| :------ | :--: | :-----------: | :---------------: |
 | 
					| :------ | :--: | :-----------: | :---------------: |
 | 
				
			||||||
| :zap: zap | 126 ns/op | +0% | 0 allocs/op
 | 
					| :zap: zap | 193 ns/op | +0% | 0 allocs/op
 | 
				
			||||||
| :zap: zap (sugared) | 187 ns/op | +48% | 2 allocs/op
 | 
					| :zap: zap (sugared) | 227 ns/op | +18% | 1 allocs/op
 | 
				
			||||||
| zerolog | 88 ns/op | -30% | 0 allocs/op
 | 
					| zerolog | 81 ns/op | -58% | 0 allocs/op
 | 
				
			||||||
| go-kit | 5087 ns/op | +3937% | 103 allocs/op
 | 
					| slog | 322 ns/op | +67% | 0 allocs/op
 | 
				
			||||||
| log15 | 18548 ns/op | +14621% | 73 allocs/op
 | 
					| go-kit | 5377 ns/op | +2686% | 56 allocs/op
 | 
				
			||||||
| apex/log | 26012 ns/op | +20544% | 104 allocs/op
 | 
					| apex/log | 19518 ns/op | +10013% | 53 allocs/op
 | 
				
			||||||
| logrus | 27236 ns/op | +21516% | 113 allocs/op
 | 
					| log15 | 19812 ns/op | +10165% | 70 allocs/op
 | 
				
			||||||
 | 
					| logrus | 21997 ns/op | +11297% | 68 allocs/op
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Log a static string, without any context or `printf`-style templating:
 | 
					Log a static string, without any context or `printf`-style templating:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Package | Time | Time % to zap | Objects Allocated |
 | 
					| Package | Time | Time % to zap | Objects Allocated |
 | 
				
			||||||
| :------ | :--: | :-----------: | :---------------: |
 | 
					| :------ | :--: | :-----------: | :---------------: |
 | 
				
			||||||
| :zap: zap | 118 ns/op | +0% | 0 allocs/op
 | 
					| :zap: zap | 165 ns/op | +0% | 0 allocs/op
 | 
				
			||||||
| :zap: zap (sugared) | 191 ns/op | +62% | 2 allocs/op
 | 
					| :zap: zap (sugared) | 212 ns/op | +28% | 1 allocs/op
 | 
				
			||||||
| zerolog | 93 ns/op | -21% | 0 allocs/op
 | 
					| zerolog | 95 ns/op | -42% | 0 allocs/op
 | 
				
			||||||
| go-kit | 280 ns/op | +137% | 11 allocs/op
 | 
					| slog | 296 ns/op | +79% | 0 allocs/op
 | 
				
			||||||
| standard library | 499 ns/op | +323% | 2 allocs/op
 | 
					| go-kit | 415 ns/op | +152% | 9 allocs/op
 | 
				
			||||||
| apex/log | 1990 ns/op | +1586% | 10 allocs/op
 | 
					| standard library | 422 ns/op | +156% | 2 allocs/op
 | 
				
			||||||
| logrus | 3129 ns/op | +2552% | 24 allocs/op
 | 
					| apex/log | 1601 ns/op | +870% | 5 allocs/op
 | 
				
			||||||
| log15 | 3887 ns/op | +3194% | 23 allocs/op
 | 
					| logrus | 3017 ns/op | +1728% | 23 allocs/op
 | 
				
			||||||
 | 
					| log15 | 3469 ns/op | +2002% | 20 allocs/op
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Development Status: Stable
 | 
					## Development Status: Stable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										127
									
								
								vendor/go.uber.org/zap/array.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										127
									
								
								vendor/go.uber.org/zap/array.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -21,6 +21,7 @@
 | 
				
			|||||||
package zap
 | 
					package zap
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"go.uber.org/zap/zapcore"
 | 
						"go.uber.org/zap/zapcore"
 | 
				
			||||||
@@ -94,11 +95,137 @@ func Int8s(key string, nums []int8) Field {
 | 
				
			|||||||
	return Array(key, int8s(nums))
 | 
						return Array(key, int8s(nums))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Objects constructs a field with the given key, holding a list of the
 | 
				
			||||||
 | 
					// provided objects that can be marshaled by Zap.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Note that these objects must implement zapcore.ObjectMarshaler directly.
 | 
				
			||||||
 | 
					// That is, if you're trying to marshal a []Request, the MarshalLogObject
 | 
				
			||||||
 | 
					// method must be declared on the Request type, not its pointer (*Request).
 | 
				
			||||||
 | 
					// If it's on the pointer, use ObjectValues.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Given an object that implements MarshalLogObject on the value receiver, you
 | 
				
			||||||
 | 
					// can log a slice of those objects with Objects like so:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	type Author struct{ ... }
 | 
				
			||||||
 | 
					//	func (a Author) MarshalLogObject(enc zapcore.ObjectEncoder) error
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	var authors []Author = ...
 | 
				
			||||||
 | 
					//	logger.Info("loading article", zap.Objects("authors", authors))
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Similarly, given a type that implements MarshalLogObject on its pointer
 | 
				
			||||||
 | 
					// receiver, you can log a slice of pointers to that object with Objects like
 | 
				
			||||||
 | 
					// so:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	type Request struct{ ... }
 | 
				
			||||||
 | 
					//	func (r *Request) MarshalLogObject(enc zapcore.ObjectEncoder) error
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	var requests []*Request = ...
 | 
				
			||||||
 | 
					//	logger.Info("sending requests", zap.Objects("requests", requests))
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// If instead, you have a slice of values of such an object, use the
 | 
				
			||||||
 | 
					// ObjectValues constructor.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	var requests []Request = ...
 | 
				
			||||||
 | 
					//	logger.Info("sending requests", zap.ObjectValues("requests", requests))
 | 
				
			||||||
 | 
					func Objects[T zapcore.ObjectMarshaler](key string, values []T) Field {
 | 
				
			||||||
 | 
						return Array(key, objects[T](values))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type objects[T zapcore.ObjectMarshaler] []T
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (os objects[T]) MarshalLogArray(arr zapcore.ArrayEncoder) error {
 | 
				
			||||||
 | 
						for _, o := range os {
 | 
				
			||||||
 | 
							if err := arr.AppendObject(o); err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ObjectMarshalerPtr is a constraint that specifies that the given type
 | 
				
			||||||
 | 
					// implements zapcore.ObjectMarshaler on a pointer receiver.
 | 
				
			||||||
 | 
					type ObjectMarshalerPtr[T any] interface {
 | 
				
			||||||
 | 
						*T
 | 
				
			||||||
 | 
						zapcore.ObjectMarshaler
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ObjectValues constructs a field with the given key, holding a list of the
 | 
				
			||||||
 | 
					// provided objects, where pointers to these objects can be marshaled by Zap.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Note that pointers to these objects must implement zapcore.ObjectMarshaler.
 | 
				
			||||||
 | 
					// That is, if you're trying to marshal a []Request, the MarshalLogObject
 | 
				
			||||||
 | 
					// method must be declared on the *Request type, not the value (Request).
 | 
				
			||||||
 | 
					// If it's on the value, use Objects.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Given an object that implements MarshalLogObject on the pointer receiver,
 | 
				
			||||||
 | 
					// you can log a slice of those objects with ObjectValues like so:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	type Request struct{ ... }
 | 
				
			||||||
 | 
					//	func (r *Request) MarshalLogObject(enc zapcore.ObjectEncoder) error
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	var requests []Request = ...
 | 
				
			||||||
 | 
					//	logger.Info("sending requests", zap.ObjectValues("requests", requests))
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// If instead, you have a slice of pointers of such an object, use the Objects
 | 
				
			||||||
 | 
					// field constructor.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	var requests []*Request = ...
 | 
				
			||||||
 | 
					//	logger.Info("sending requests", zap.Objects("requests", requests))
 | 
				
			||||||
 | 
					func ObjectValues[T any, P ObjectMarshalerPtr[T]](key string, values []T) Field {
 | 
				
			||||||
 | 
						return Array(key, objectValues[T, P](values))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type objectValues[T any, P ObjectMarshalerPtr[T]] []T
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (os objectValues[T, P]) MarshalLogArray(arr zapcore.ArrayEncoder) error {
 | 
				
			||||||
 | 
						for i := range os {
 | 
				
			||||||
 | 
							// It is necessary for us to explicitly reference the "P" type.
 | 
				
			||||||
 | 
							// We cannot simply pass "&os[i]" to AppendObject because its type
 | 
				
			||||||
 | 
							// is "*T", which the type system does not consider as
 | 
				
			||||||
 | 
							// implementing ObjectMarshaler.
 | 
				
			||||||
 | 
							// Only the type "P" satisfies ObjectMarshaler, which we have
 | 
				
			||||||
 | 
							// to convert "*T" to explicitly.
 | 
				
			||||||
 | 
							var p P = &os[i]
 | 
				
			||||||
 | 
							if err := arr.AppendObject(p); err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Strings constructs a field that carries a slice of strings.
 | 
					// Strings constructs a field that carries a slice of strings.
 | 
				
			||||||
func Strings(key string, ss []string) Field {
 | 
					func Strings(key string, ss []string) Field {
 | 
				
			||||||
	return Array(key, stringArray(ss))
 | 
						return Array(key, stringArray(ss))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Stringers constructs a field with the given key, holding a list of the
 | 
				
			||||||
 | 
					// output provided by the value's String method
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Given an object that implements String on the value receiver, you
 | 
				
			||||||
 | 
					// can log a slice of those objects with Objects like so:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	type Request struct{ ... }
 | 
				
			||||||
 | 
					//	func (a Request) String() string
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	var requests []Request = ...
 | 
				
			||||||
 | 
					//	logger.Info("sending requests", zap.Stringers("requests", requests))
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Note that these objects must implement fmt.Stringer directly.
 | 
				
			||||||
 | 
					// That is, if you're trying to marshal a []Request, the String method
 | 
				
			||||||
 | 
					// must be declared on the Request type, not its pointer (*Request).
 | 
				
			||||||
 | 
					func Stringers[T fmt.Stringer](key string, values []T) Field {
 | 
				
			||||||
 | 
						return Array(key, stringers[T](values))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type stringers[T fmt.Stringer] []T
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (os stringers[T]) MarshalLogArray(arr zapcore.ArrayEncoder) error {
 | 
				
			||||||
 | 
						for _, o := range os {
 | 
				
			||||||
 | 
							arr.AppendString(o.String())
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Times constructs a field that carries a slice of time.Times.
 | 
					// Times constructs a field that carries a slice of time.Times.
 | 
				
			||||||
func Times(key string, ts []time.Time) Field {
 | 
					func Times(key string, ts []time.Time) Field {
 | 
				
			||||||
	return Array(key, times(ts))
 | 
						return Array(key, times(ts))
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								vendor/go.uber.org/zap/buffer/buffer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/go.uber.org/zap/buffer/buffer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -42,6 +42,11 @@ func (b *Buffer) AppendByte(v byte) {
 | 
				
			|||||||
	b.bs = append(b.bs, v)
 | 
						b.bs = append(b.bs, v)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// AppendBytes writes a single byte to the Buffer.
 | 
				
			||||||
 | 
					func (b *Buffer) AppendBytes(v []byte) {
 | 
				
			||||||
 | 
						b.bs = append(b.bs, v...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// AppendString writes a string to the Buffer.
 | 
					// AppendString writes a string to the Buffer.
 | 
				
			||||||
func (b *Buffer) AppendString(s string) {
 | 
					func (b *Buffer) AppendString(s string) {
 | 
				
			||||||
	b.bs = append(b.bs, s...)
 | 
						b.bs = append(b.bs, s...)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										20
									
								
								vendor/go.uber.org/zap/buffer/pool.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								vendor/go.uber.org/zap/buffer/pool.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -20,25 +20,29 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package buffer
 | 
					package buffer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import "sync"
 | 
					import (
 | 
				
			||||||
 | 
						"go.uber.org/zap/internal/pool"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// A Pool is a type-safe wrapper around a sync.Pool.
 | 
					// A Pool is a type-safe wrapper around a sync.Pool.
 | 
				
			||||||
type Pool struct {
 | 
					type Pool struct {
 | 
				
			||||||
	p *sync.Pool
 | 
						p *pool.Pool[*Buffer]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewPool constructs a new Pool.
 | 
					// NewPool constructs a new Pool.
 | 
				
			||||||
func NewPool() Pool {
 | 
					func NewPool() Pool {
 | 
				
			||||||
	return Pool{p: &sync.Pool{
 | 
						return Pool{
 | 
				
			||||||
		New: func() interface{} {
 | 
							p: pool.New(func() *Buffer {
 | 
				
			||||||
			return &Buffer{bs: make([]byte, 0, _size)}
 | 
								return &Buffer{
 | 
				
			||||||
		},
 | 
									bs: make([]byte, 0, _size),
 | 
				
			||||||
	}}
 | 
								}
 | 
				
			||||||
 | 
							}),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Get retrieves a Buffer from the pool, creating one if necessary.
 | 
					// Get retrieves a Buffer from the pool, creating one if necessary.
 | 
				
			||||||
func (p Pool) Get() *Buffer {
 | 
					func (p Pool) Get() *Buffer {
 | 
				
			||||||
	buf := p.p.Get().(*Buffer)
 | 
						buf := p.p.Get()
 | 
				
			||||||
	buf.Reset()
 | 
						buf.Reset()
 | 
				
			||||||
	buf.pool = p
 | 
						buf.pool = p
 | 
				
			||||||
	return buf
 | 
						return buf
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										88
									
								
								vendor/go.uber.org/zap/config.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										88
									
								
								vendor/go.uber.org/zap/config.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -21,7 +21,7 @@
 | 
				
			|||||||
package zap
 | 
					package zap
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"errors"
 | 
				
			||||||
	"sort"
 | 
						"sort"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -95,6 +95,32 @@ type Config struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// NewProductionEncoderConfig returns an opinionated EncoderConfig for
 | 
					// NewProductionEncoderConfig returns an opinionated EncoderConfig for
 | 
				
			||||||
// production environments.
 | 
					// production environments.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Messages encoded with this configuration will be JSON-formatted
 | 
				
			||||||
 | 
					// and will have the following keys by default:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//   - "level": The logging level (e.g. "info", "error").
 | 
				
			||||||
 | 
					//   - "ts": The current time in number of seconds since the Unix epoch.
 | 
				
			||||||
 | 
					//   - "msg": The message passed to the log statement.
 | 
				
			||||||
 | 
					//   - "caller": If available, a short path to the file and line number
 | 
				
			||||||
 | 
					//     where the log statement was issued.
 | 
				
			||||||
 | 
					//     The logger configuration determines whether this field is captured.
 | 
				
			||||||
 | 
					//   - "stacktrace": If available, a stack trace from the line
 | 
				
			||||||
 | 
					//     where the log statement was issued.
 | 
				
			||||||
 | 
					//     The logger configuration determines whether this field is captured.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// By default, the following formats are used for different types:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//   - Time is formatted as floating-point number of seconds since the Unix
 | 
				
			||||||
 | 
					//     epoch.
 | 
				
			||||||
 | 
					//   - Duration is formatted as floating-point number of seconds.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// You may change these by setting the appropriate fields in the returned
 | 
				
			||||||
 | 
					// object.
 | 
				
			||||||
 | 
					// For example, use the following to change the time encoding format:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	cfg := zap.NewProductionEncoderConfig()
 | 
				
			||||||
 | 
					//	cfg.EncodeTime = zapcore.ISO8601TimeEncoder
 | 
				
			||||||
func NewProductionEncoderConfig() zapcore.EncoderConfig {
 | 
					func NewProductionEncoderConfig() zapcore.EncoderConfig {
 | 
				
			||||||
	return zapcore.EncoderConfig{
 | 
						return zapcore.EncoderConfig{
 | 
				
			||||||
		TimeKey:        "ts",
 | 
							TimeKey:        "ts",
 | 
				
			||||||
@@ -112,11 +138,22 @@ func NewProductionEncoderConfig() zapcore.EncoderConfig {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewProductionConfig is a reasonable production logging configuration.
 | 
					// NewProductionConfig builds a reasonable default production logging
 | 
				
			||||||
// Logging is enabled at InfoLevel and above.
 | 
					// configuration.
 | 
				
			||||||
 | 
					// Logging is enabled at InfoLevel and above, and uses a JSON encoder.
 | 
				
			||||||
 | 
					// Logs are written to standard error.
 | 
				
			||||||
 | 
					// Stacktraces are included on logs of ErrorLevel and above.
 | 
				
			||||||
 | 
					// DPanicLevel logs will not panic, but will write a stacktrace.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// It uses a JSON encoder, writes to standard error, and enables sampling.
 | 
					// Sampling is enabled at 100:100 by default,
 | 
				
			||||||
// Stacktraces are automatically included on logs of ErrorLevel and above.
 | 
					// meaning that after the first 100 log entries
 | 
				
			||||||
 | 
					// with the same level and message in the same second,
 | 
				
			||||||
 | 
					// it will log every 100th entry
 | 
				
			||||||
 | 
					// with the same level and message in the same second.
 | 
				
			||||||
 | 
					// You may disable this behavior by setting Sampling to nil.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// See [NewProductionEncoderConfig] for information
 | 
				
			||||||
 | 
					// on the default encoder configuration.
 | 
				
			||||||
func NewProductionConfig() Config {
 | 
					func NewProductionConfig() Config {
 | 
				
			||||||
	return Config{
 | 
						return Config{
 | 
				
			||||||
		Level:       NewAtomicLevelAt(InfoLevel),
 | 
							Level:       NewAtomicLevelAt(InfoLevel),
 | 
				
			||||||
@@ -134,6 +171,32 @@ func NewProductionConfig() Config {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// NewDevelopmentEncoderConfig returns an opinionated EncoderConfig for
 | 
					// NewDevelopmentEncoderConfig returns an opinionated EncoderConfig for
 | 
				
			||||||
// development environments.
 | 
					// development environments.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Messages encoded with this configuration will use Zap's console encoder
 | 
				
			||||||
 | 
					// intended to print human-readable output.
 | 
				
			||||||
 | 
					// It will print log messages with the following information:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//   - The log level (e.g. "INFO", "ERROR").
 | 
				
			||||||
 | 
					//   - The time in ISO8601 format (e.g. "2017-01-01T12:00:00Z").
 | 
				
			||||||
 | 
					//   - The message passed to the log statement.
 | 
				
			||||||
 | 
					//   - If available, a short path to the file and line number
 | 
				
			||||||
 | 
					//     where the log statement was issued.
 | 
				
			||||||
 | 
					//     The logger configuration determines whether this field is captured.
 | 
				
			||||||
 | 
					//   - If available, a stacktrace from the line
 | 
				
			||||||
 | 
					//     where the log statement was issued.
 | 
				
			||||||
 | 
					//     The logger configuration determines whether this field is captured.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// By default, the following formats are used for different types:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//   - Time is formatted in ISO8601 format (e.g. "2017-01-01T12:00:00Z").
 | 
				
			||||||
 | 
					//   - Duration is formatted as a string (e.g. "1.234s").
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// You may change these by setting the appropriate fields in the returned
 | 
				
			||||||
 | 
					// object.
 | 
				
			||||||
 | 
					// For example, use the following to change the time encoding format:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	cfg := zap.NewDevelopmentEncoderConfig()
 | 
				
			||||||
 | 
					//	cfg.EncodeTime = zapcore.ISO8601TimeEncoder
 | 
				
			||||||
func NewDevelopmentEncoderConfig() zapcore.EncoderConfig {
 | 
					func NewDevelopmentEncoderConfig() zapcore.EncoderConfig {
 | 
				
			||||||
	return zapcore.EncoderConfig{
 | 
						return zapcore.EncoderConfig{
 | 
				
			||||||
		// Keys can be anything except the empty string.
 | 
							// Keys can be anything except the empty string.
 | 
				
			||||||
@@ -152,12 +215,15 @@ func NewDevelopmentEncoderConfig() zapcore.EncoderConfig {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewDevelopmentConfig is a reasonable development logging configuration.
 | 
					// NewDevelopmentConfig builds a reasonable default development logging
 | 
				
			||||||
// Logging is enabled at DebugLevel and above.
 | 
					// configuration.
 | 
				
			||||||
 | 
					// Logging is enabled at DebugLevel and above, and uses a console encoder.
 | 
				
			||||||
 | 
					// Logs are written to standard error.
 | 
				
			||||||
 | 
					// Stacktraces are included on logs of WarnLevel and above.
 | 
				
			||||||
 | 
					// DPanicLevel logs will panic.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// It enables development mode (which makes DPanicLevel logs panic), uses a
 | 
					// See [NewDevelopmentEncoderConfig] for information
 | 
				
			||||||
// console encoder, writes to standard error, and disables sampling.
 | 
					// on the default encoder configuration.
 | 
				
			||||||
// Stacktraces are automatically included on logs of WarnLevel and above.
 | 
					 | 
				
			||||||
func NewDevelopmentConfig() Config {
 | 
					func NewDevelopmentConfig() Config {
 | 
				
			||||||
	return Config{
 | 
						return Config{
 | 
				
			||||||
		Level:            NewAtomicLevelAt(DebugLevel),
 | 
							Level:            NewAtomicLevelAt(DebugLevel),
 | 
				
			||||||
@@ -182,7 +248,7 @@ func (cfg Config) Build(opts ...Option) (*Logger, error) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if cfg.Level == (AtomicLevel{}) {
 | 
						if cfg.Level == (AtomicLevel{}) {
 | 
				
			||||||
		return nil, fmt.Errorf("missing Level")
 | 
							return nil, errors.New("missing Level")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	log := New(
 | 
						log := New(
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										12
									
								
								vendor/go.uber.org/zap/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/go.uber.org/zap/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -32,7 +32,7 @@
 | 
				
			|||||||
// they need to count every allocation and when they'd prefer a more familiar,
 | 
					// they need to count every allocation and when they'd prefer a more familiar,
 | 
				
			||||||
// loosely typed API.
 | 
					// loosely typed API.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Choosing a Logger
 | 
					// # Choosing a Logger
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// In contexts where performance is nice, but not critical, use the
 | 
					// In contexts where performance is nice, but not critical, use the
 | 
				
			||||||
// SugaredLogger. It's 4-10x faster than other structured logging packages and
 | 
					// SugaredLogger. It's 4-10x faster than other structured logging packages and
 | 
				
			||||||
@@ -41,6 +41,7 @@
 | 
				
			|||||||
// variadic number of key-value pairs. (For more advanced use cases, they also
 | 
					// variadic number of key-value pairs. (For more advanced use cases, they also
 | 
				
			||||||
// accept strongly typed fields - see the SugaredLogger.With documentation for
 | 
					// accept strongly typed fields - see the SugaredLogger.With documentation for
 | 
				
			||||||
// details.)
 | 
					// details.)
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
//	sugar := zap.NewExample().Sugar()
 | 
					//	sugar := zap.NewExample().Sugar()
 | 
				
			||||||
//	defer sugar.Sync()
 | 
					//	defer sugar.Sync()
 | 
				
			||||||
//	sugar.Infow("failed to fetch URL",
 | 
					//	sugar.Infow("failed to fetch URL",
 | 
				
			||||||
@@ -57,6 +58,7 @@
 | 
				
			|||||||
// In the rare contexts where every microsecond and every allocation matter,
 | 
					// In the rare contexts where every microsecond and every allocation matter,
 | 
				
			||||||
// use the Logger. It's even faster than the SugaredLogger and allocates far
 | 
					// use the Logger. It's even faster than the SugaredLogger and allocates far
 | 
				
			||||||
// less, but it only supports strongly-typed, structured logging.
 | 
					// less, but it only supports strongly-typed, structured logging.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
//	logger := zap.NewExample()
 | 
					//	logger := zap.NewExample()
 | 
				
			||||||
//	defer logger.Sync()
 | 
					//	defer logger.Sync()
 | 
				
			||||||
//	logger.Info("failed to fetch URL",
 | 
					//	logger.Info("failed to fetch URL",
 | 
				
			||||||
@@ -68,16 +70,18 @@
 | 
				
			|||||||
// Choosing between the Logger and SugaredLogger doesn't need to be an
 | 
					// Choosing between the Logger and SugaredLogger doesn't need to be an
 | 
				
			||||||
// application-wide decision: converting between the two is simple and
 | 
					// application-wide decision: converting between the two is simple and
 | 
				
			||||||
// inexpensive.
 | 
					// inexpensive.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
//	logger := zap.NewExample()
 | 
					//	logger := zap.NewExample()
 | 
				
			||||||
//	defer logger.Sync()
 | 
					//	defer logger.Sync()
 | 
				
			||||||
//	sugar := logger.Sugar()
 | 
					//	sugar := logger.Sugar()
 | 
				
			||||||
//	plain := sugar.Desugar()
 | 
					//	plain := sugar.Desugar()
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Configuring Zap
 | 
					// # Configuring Zap
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// The simplest way to build a Logger is to use zap's opinionated presets:
 | 
					// The simplest way to build a Logger is to use zap's opinionated presets:
 | 
				
			||||||
// NewExample, NewProduction, and NewDevelopment. These presets build a logger
 | 
					// NewExample, NewProduction, and NewDevelopment. These presets build a logger
 | 
				
			||||||
// with a single function call:
 | 
					// with a single function call:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
//	logger, err := zap.NewProduction()
 | 
					//	logger, err := zap.NewProduction()
 | 
				
			||||||
//	if err != nil {
 | 
					//	if err != nil {
 | 
				
			||||||
//	  log.Fatalf("can't initialize zap logger: %v", err)
 | 
					//	  log.Fatalf("can't initialize zap logger: %v", err)
 | 
				
			||||||
@@ -94,7 +98,7 @@
 | 
				
			|||||||
// go.uber.org/zap/zapcore. See the package-level AdvancedConfiguration
 | 
					// go.uber.org/zap/zapcore. See the package-level AdvancedConfiguration
 | 
				
			||||||
// example for sample code.
 | 
					// example for sample code.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Extending Zap
 | 
					// # Extending Zap
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// The zap package itself is a relatively thin wrapper around the interfaces
 | 
					// The zap package itself is a relatively thin wrapper around the interfaces
 | 
				
			||||||
// in go.uber.org/zap/zapcore. Extending zap to support a new encoding (e.g.,
 | 
					// in go.uber.org/zap/zapcore. Extending zap to support a new encoding (e.g.,
 | 
				
			||||||
@@ -106,7 +110,7 @@
 | 
				
			|||||||
// Similarly, package authors can use the high-performance Encoder and Core
 | 
					// Similarly, package authors can use the high-performance Encoder and Core
 | 
				
			||||||
// implementations in the zapcore package to build their own loggers.
 | 
					// implementations in the zapcore package to build their own loggers.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Frequently Asked Questions
 | 
					// # Frequently Asked Questions
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// An FAQ covering everything from installation errors to design decisions is
 | 
					// An FAQ covering everything from installation errors to design decisions is
 | 
				
			||||||
// available at https://github.com/uber-go/zap/blob/master/FAQ.md.
 | 
					// available at https://github.com/uber-go/zap/blob/master/FAQ.md.
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								vendor/go.uber.org/zap/encoder.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/go.uber.org/zap/encoder.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -63,7 +63,7 @@ func RegisterEncoder(name string, constructor func(zapcore.EncoderConfig) (zapco
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func newEncoder(name string, encoderConfig zapcore.EncoderConfig) (zapcore.Encoder, error) {
 | 
					func newEncoder(name string, encoderConfig zapcore.EncoderConfig) (zapcore.Encoder, error) {
 | 
				
			||||||
	if encoderConfig.TimeKey != "" && encoderConfig.EncodeTime == nil {
 | 
						if encoderConfig.TimeKey != "" && encoderConfig.EncodeTime == nil {
 | 
				
			||||||
		return nil, fmt.Errorf("missing EncodeTime in EncoderConfig")
 | 
							return nil, errors.New("missing EncodeTime in EncoderConfig")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_encoderMutex.RLock()
 | 
						_encoderMutex.RLock()
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										14
									
								
								vendor/go.uber.org/zap/error.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								vendor/go.uber.org/zap/error.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -21,14 +21,13 @@
 | 
				
			|||||||
package zap
 | 
					package zap
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"sync"
 | 
						"go.uber.org/zap/internal/pool"
 | 
				
			||||||
 | 
					 | 
				
			||||||
	"go.uber.org/zap/zapcore"
 | 
						"go.uber.org/zap/zapcore"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var _errArrayElemPool = sync.Pool{New: func() interface{} {
 | 
					var _errArrayElemPool = pool.New(func() *errArrayElem {
 | 
				
			||||||
	return &errArrayElem{}
 | 
						return &errArrayElem{}
 | 
				
			||||||
}}
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Error is shorthand for the common idiom NamedError("error", err).
 | 
					// Error is shorthand for the common idiom NamedError("error", err).
 | 
				
			||||||
func Error(err error) Field {
 | 
					func Error(err error) Field {
 | 
				
			||||||
@@ -60,11 +59,14 @@ func (errs errArray) MarshalLogArray(arr zapcore.ArrayEncoder) error {
 | 
				
			|||||||
		// potentially an "errorVerbose" attribute, we need to wrap it in a
 | 
							// potentially an "errorVerbose" attribute, we need to wrap it in a
 | 
				
			||||||
		// type that implements LogObjectMarshaler. To prevent this from
 | 
							// type that implements LogObjectMarshaler. To prevent this from
 | 
				
			||||||
		// allocating, pool the wrapper type.
 | 
							// allocating, pool the wrapper type.
 | 
				
			||||||
		elem := _errArrayElemPool.Get().(*errArrayElem)
 | 
							elem := _errArrayElemPool.Get()
 | 
				
			||||||
		elem.error = errs[i]
 | 
							elem.error = errs[i]
 | 
				
			||||||
		arr.AppendObject(elem)
 | 
							err := arr.AppendObject(elem)
 | 
				
			||||||
		elem.error = nil
 | 
							elem.error = nil
 | 
				
			||||||
		_errArrayElemPool.Put(elem)
 | 
							_errArrayElemPool.Put(elem)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										194
									
								
								vendor/go.uber.org/zap/field.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										194
									
								
								vendor/go.uber.org/zap/field.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -25,6 +25,7 @@ import (
 | 
				
			|||||||
	"math"
 | 
						"math"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"go.uber.org/zap/internal/stacktrace"
 | 
				
			||||||
	"go.uber.org/zap/zapcore"
 | 
						"go.uber.org/zap/zapcore"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -374,7 +375,7 @@ func StackSkip(key string, skip int) Field {
 | 
				
			|||||||
	// from expanding the zapcore.Field union struct to include a byte slice. Since
 | 
						// from expanding the zapcore.Field union struct to include a byte slice. Since
 | 
				
			||||||
	// taking a stacktrace is already so expensive (~10us), the extra allocation
 | 
						// taking a stacktrace is already so expensive (~10us), the extra allocation
 | 
				
			||||||
	// is okay.
 | 
						// is okay.
 | 
				
			||||||
	return String(key, takeStacktrace(skip+1)) // skip StackSkip
 | 
						return String(key, stacktrace.Take(skip+1)) // skip StackSkip
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Duration constructs a field with the given key and value. The encoder
 | 
					// Duration constructs a field with the given key and value. The encoder
 | 
				
			||||||
@@ -410,6 +411,63 @@ func Inline(val zapcore.ObjectMarshaler) Field {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Dict constructs a field containing the provided key-value pairs.
 | 
				
			||||||
 | 
					// It acts similar to [Object], but with the fields specified as arguments.
 | 
				
			||||||
 | 
					func Dict(key string, val ...Field) Field {
 | 
				
			||||||
 | 
						return dictField(key, val)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// We need a function with the signature (string, T) for zap.Any.
 | 
				
			||||||
 | 
					func dictField(key string, val []Field) Field {
 | 
				
			||||||
 | 
						return Object(key, dictObject(val))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type dictObject []Field
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (d dictObject) MarshalLogObject(enc zapcore.ObjectEncoder) error {
 | 
				
			||||||
 | 
						for _, f := range d {
 | 
				
			||||||
 | 
							f.AddTo(enc)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// We discovered an issue where zap.Any can cause a performance degradation
 | 
				
			||||||
 | 
					// when used in new goroutines.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// This happens because the compiler assigns 4.8kb (one zap.Field per arm of
 | 
				
			||||||
 | 
					// switch statement) of stack space for zap.Any when it takes the form:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	switch v := v.(type) {
 | 
				
			||||||
 | 
					//	case string:
 | 
				
			||||||
 | 
					//		return String(key, v)
 | 
				
			||||||
 | 
					//	case int:
 | 
				
			||||||
 | 
					//		return Int(key, v)
 | 
				
			||||||
 | 
					//		// ...
 | 
				
			||||||
 | 
					//	default:
 | 
				
			||||||
 | 
					//		return Reflect(key, v)
 | 
				
			||||||
 | 
					//	}
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// To avoid this, we use the type switch to assign a value to a single local variable
 | 
				
			||||||
 | 
					// and then call a function on it.
 | 
				
			||||||
 | 
					// The local variable is just a function reference so it doesn't allocate
 | 
				
			||||||
 | 
					// when converted to an interface{}.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// A fair bit of experimentation went into this.
 | 
				
			||||||
 | 
					// See also:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// - https://github.com/uber-go/zap/pull/1301
 | 
				
			||||||
 | 
					// - https://github.com/uber-go/zap/pull/1303
 | 
				
			||||||
 | 
					// - https://github.com/uber-go/zap/pull/1304
 | 
				
			||||||
 | 
					// - https://github.com/uber-go/zap/pull/1305
 | 
				
			||||||
 | 
					// - https://github.com/uber-go/zap/pull/1308
 | 
				
			||||||
 | 
					type anyFieldC[T any] func(string, T) Field
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (f anyFieldC[T]) Any(key string, val any) Field {
 | 
				
			||||||
 | 
						v, _ := val.(T)
 | 
				
			||||||
 | 
						// val is guaranteed to be a T, except when it's nil.
 | 
				
			||||||
 | 
						return f(key, v)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Any takes a key and an arbitrary value and chooses the best way to represent
 | 
					// Any takes a key and an arbitrary value and chooses the best way to represent
 | 
				
			||||||
// them as a field, falling back to a reflection-based approach only if
 | 
					// them as a field, falling back to a reflection-based approach only if
 | 
				
			||||||
// necessary.
 | 
					// necessary.
 | 
				
			||||||
@@ -418,132 +476,138 @@ func Inline(val zapcore.ObjectMarshaler) Field {
 | 
				
			|||||||
// them. To minimize surprises, []byte values are treated as binary blobs, byte
 | 
					// them. To minimize surprises, []byte values are treated as binary blobs, byte
 | 
				
			||||||
// values are treated as uint8, and runes are always treated as integers.
 | 
					// values are treated as uint8, and runes are always treated as integers.
 | 
				
			||||||
func Any(key string, value interface{}) Field {
 | 
					func Any(key string, value interface{}) Field {
 | 
				
			||||||
	switch val := value.(type) {
 | 
						var c interface{ Any(string, any) Field }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch value.(type) {
 | 
				
			||||||
	case zapcore.ObjectMarshaler:
 | 
						case zapcore.ObjectMarshaler:
 | 
				
			||||||
		return Object(key, val)
 | 
							c = anyFieldC[zapcore.ObjectMarshaler](Object)
 | 
				
			||||||
	case zapcore.ArrayMarshaler:
 | 
						case zapcore.ArrayMarshaler:
 | 
				
			||||||
		return Array(key, val)
 | 
							c = anyFieldC[zapcore.ArrayMarshaler](Array)
 | 
				
			||||||
 | 
						case []Field:
 | 
				
			||||||
 | 
							c = anyFieldC[[]Field](dictField)
 | 
				
			||||||
	case bool:
 | 
						case bool:
 | 
				
			||||||
		return Bool(key, val)
 | 
							c = anyFieldC[bool](Bool)
 | 
				
			||||||
	case *bool:
 | 
						case *bool:
 | 
				
			||||||
		return Boolp(key, val)
 | 
							c = anyFieldC[*bool](Boolp)
 | 
				
			||||||
	case []bool:
 | 
						case []bool:
 | 
				
			||||||
		return Bools(key, val)
 | 
							c = anyFieldC[[]bool](Bools)
 | 
				
			||||||
	case complex128:
 | 
						case complex128:
 | 
				
			||||||
		return Complex128(key, val)
 | 
							c = anyFieldC[complex128](Complex128)
 | 
				
			||||||
	case *complex128:
 | 
						case *complex128:
 | 
				
			||||||
		return Complex128p(key, val)
 | 
							c = anyFieldC[*complex128](Complex128p)
 | 
				
			||||||
	case []complex128:
 | 
						case []complex128:
 | 
				
			||||||
		return Complex128s(key, val)
 | 
							c = anyFieldC[[]complex128](Complex128s)
 | 
				
			||||||
	case complex64:
 | 
						case complex64:
 | 
				
			||||||
		return Complex64(key, val)
 | 
							c = anyFieldC[complex64](Complex64)
 | 
				
			||||||
	case *complex64:
 | 
						case *complex64:
 | 
				
			||||||
		return Complex64p(key, val)
 | 
							c = anyFieldC[*complex64](Complex64p)
 | 
				
			||||||
	case []complex64:
 | 
						case []complex64:
 | 
				
			||||||
		return Complex64s(key, val)
 | 
							c = anyFieldC[[]complex64](Complex64s)
 | 
				
			||||||
	case float64:
 | 
						case float64:
 | 
				
			||||||
		return Float64(key, val)
 | 
							c = anyFieldC[float64](Float64)
 | 
				
			||||||
	case *float64:
 | 
						case *float64:
 | 
				
			||||||
		return Float64p(key, val)
 | 
							c = anyFieldC[*float64](Float64p)
 | 
				
			||||||
	case []float64:
 | 
						case []float64:
 | 
				
			||||||
		return Float64s(key, val)
 | 
							c = anyFieldC[[]float64](Float64s)
 | 
				
			||||||
	case float32:
 | 
						case float32:
 | 
				
			||||||
		return Float32(key, val)
 | 
							c = anyFieldC[float32](Float32)
 | 
				
			||||||
	case *float32:
 | 
						case *float32:
 | 
				
			||||||
		return Float32p(key, val)
 | 
							c = anyFieldC[*float32](Float32p)
 | 
				
			||||||
	case []float32:
 | 
						case []float32:
 | 
				
			||||||
		return Float32s(key, val)
 | 
							c = anyFieldC[[]float32](Float32s)
 | 
				
			||||||
	case int:
 | 
						case int:
 | 
				
			||||||
		return Int(key, val)
 | 
							c = anyFieldC[int](Int)
 | 
				
			||||||
	case *int:
 | 
						case *int:
 | 
				
			||||||
		return Intp(key, val)
 | 
							c = anyFieldC[*int](Intp)
 | 
				
			||||||
	case []int:
 | 
						case []int:
 | 
				
			||||||
		return Ints(key, val)
 | 
							c = anyFieldC[[]int](Ints)
 | 
				
			||||||
	case int64:
 | 
						case int64:
 | 
				
			||||||
		return Int64(key, val)
 | 
							c = anyFieldC[int64](Int64)
 | 
				
			||||||
	case *int64:
 | 
						case *int64:
 | 
				
			||||||
		return Int64p(key, val)
 | 
							c = anyFieldC[*int64](Int64p)
 | 
				
			||||||
	case []int64:
 | 
						case []int64:
 | 
				
			||||||
		return Int64s(key, val)
 | 
							c = anyFieldC[[]int64](Int64s)
 | 
				
			||||||
	case int32:
 | 
						case int32:
 | 
				
			||||||
		return Int32(key, val)
 | 
							c = anyFieldC[int32](Int32)
 | 
				
			||||||
	case *int32:
 | 
						case *int32:
 | 
				
			||||||
		return Int32p(key, val)
 | 
							c = anyFieldC[*int32](Int32p)
 | 
				
			||||||
	case []int32:
 | 
						case []int32:
 | 
				
			||||||
		return Int32s(key, val)
 | 
							c = anyFieldC[[]int32](Int32s)
 | 
				
			||||||
	case int16:
 | 
						case int16:
 | 
				
			||||||
		return Int16(key, val)
 | 
							c = anyFieldC[int16](Int16)
 | 
				
			||||||
	case *int16:
 | 
						case *int16:
 | 
				
			||||||
		return Int16p(key, val)
 | 
							c = anyFieldC[*int16](Int16p)
 | 
				
			||||||
	case []int16:
 | 
						case []int16:
 | 
				
			||||||
		return Int16s(key, val)
 | 
							c = anyFieldC[[]int16](Int16s)
 | 
				
			||||||
	case int8:
 | 
						case int8:
 | 
				
			||||||
		return Int8(key, val)
 | 
							c = anyFieldC[int8](Int8)
 | 
				
			||||||
	case *int8:
 | 
						case *int8:
 | 
				
			||||||
		return Int8p(key, val)
 | 
							c = anyFieldC[*int8](Int8p)
 | 
				
			||||||
	case []int8:
 | 
						case []int8:
 | 
				
			||||||
		return Int8s(key, val)
 | 
							c = anyFieldC[[]int8](Int8s)
 | 
				
			||||||
	case string:
 | 
						case string:
 | 
				
			||||||
		return String(key, val)
 | 
							c = anyFieldC[string](String)
 | 
				
			||||||
	case *string:
 | 
						case *string:
 | 
				
			||||||
		return Stringp(key, val)
 | 
							c = anyFieldC[*string](Stringp)
 | 
				
			||||||
	case []string:
 | 
						case []string:
 | 
				
			||||||
		return Strings(key, val)
 | 
							c = anyFieldC[[]string](Strings)
 | 
				
			||||||
	case uint:
 | 
						case uint:
 | 
				
			||||||
		return Uint(key, val)
 | 
							c = anyFieldC[uint](Uint)
 | 
				
			||||||
	case *uint:
 | 
						case *uint:
 | 
				
			||||||
		return Uintp(key, val)
 | 
							c = anyFieldC[*uint](Uintp)
 | 
				
			||||||
	case []uint:
 | 
						case []uint:
 | 
				
			||||||
		return Uints(key, val)
 | 
							c = anyFieldC[[]uint](Uints)
 | 
				
			||||||
	case uint64:
 | 
						case uint64:
 | 
				
			||||||
		return Uint64(key, val)
 | 
							c = anyFieldC[uint64](Uint64)
 | 
				
			||||||
	case *uint64:
 | 
						case *uint64:
 | 
				
			||||||
		return Uint64p(key, val)
 | 
							c = anyFieldC[*uint64](Uint64p)
 | 
				
			||||||
	case []uint64:
 | 
						case []uint64:
 | 
				
			||||||
		return Uint64s(key, val)
 | 
							c = anyFieldC[[]uint64](Uint64s)
 | 
				
			||||||
	case uint32:
 | 
						case uint32:
 | 
				
			||||||
		return Uint32(key, val)
 | 
							c = anyFieldC[uint32](Uint32)
 | 
				
			||||||
	case *uint32:
 | 
						case *uint32:
 | 
				
			||||||
		return Uint32p(key, val)
 | 
							c = anyFieldC[*uint32](Uint32p)
 | 
				
			||||||
	case []uint32:
 | 
						case []uint32:
 | 
				
			||||||
		return Uint32s(key, val)
 | 
							c = anyFieldC[[]uint32](Uint32s)
 | 
				
			||||||
	case uint16:
 | 
						case uint16:
 | 
				
			||||||
		return Uint16(key, val)
 | 
							c = anyFieldC[uint16](Uint16)
 | 
				
			||||||
	case *uint16:
 | 
						case *uint16:
 | 
				
			||||||
		return Uint16p(key, val)
 | 
							c = anyFieldC[*uint16](Uint16p)
 | 
				
			||||||
	case []uint16:
 | 
						case []uint16:
 | 
				
			||||||
		return Uint16s(key, val)
 | 
							c = anyFieldC[[]uint16](Uint16s)
 | 
				
			||||||
	case uint8:
 | 
						case uint8:
 | 
				
			||||||
		return Uint8(key, val)
 | 
							c = anyFieldC[uint8](Uint8)
 | 
				
			||||||
	case *uint8:
 | 
						case *uint8:
 | 
				
			||||||
		return Uint8p(key, val)
 | 
							c = anyFieldC[*uint8](Uint8p)
 | 
				
			||||||
	case []byte:
 | 
						case []byte:
 | 
				
			||||||
		return Binary(key, val)
 | 
							c = anyFieldC[[]byte](Binary)
 | 
				
			||||||
	case uintptr:
 | 
						case uintptr:
 | 
				
			||||||
		return Uintptr(key, val)
 | 
							c = anyFieldC[uintptr](Uintptr)
 | 
				
			||||||
	case *uintptr:
 | 
						case *uintptr:
 | 
				
			||||||
		return Uintptrp(key, val)
 | 
							c = anyFieldC[*uintptr](Uintptrp)
 | 
				
			||||||
	case []uintptr:
 | 
						case []uintptr:
 | 
				
			||||||
		return Uintptrs(key, val)
 | 
							c = anyFieldC[[]uintptr](Uintptrs)
 | 
				
			||||||
	case time.Time:
 | 
						case time.Time:
 | 
				
			||||||
		return Time(key, val)
 | 
							c = anyFieldC[time.Time](Time)
 | 
				
			||||||
	case *time.Time:
 | 
						case *time.Time:
 | 
				
			||||||
		return Timep(key, val)
 | 
							c = anyFieldC[*time.Time](Timep)
 | 
				
			||||||
	case []time.Time:
 | 
						case []time.Time:
 | 
				
			||||||
		return Times(key, val)
 | 
							c = anyFieldC[[]time.Time](Times)
 | 
				
			||||||
	case time.Duration:
 | 
						case time.Duration:
 | 
				
			||||||
		return Duration(key, val)
 | 
							c = anyFieldC[time.Duration](Duration)
 | 
				
			||||||
	case *time.Duration:
 | 
						case *time.Duration:
 | 
				
			||||||
		return Durationp(key, val)
 | 
							c = anyFieldC[*time.Duration](Durationp)
 | 
				
			||||||
	case []time.Duration:
 | 
						case []time.Duration:
 | 
				
			||||||
		return Durations(key, val)
 | 
							c = anyFieldC[[]time.Duration](Durations)
 | 
				
			||||||
	case error:
 | 
						case error:
 | 
				
			||||||
		return NamedError(key, val)
 | 
							c = anyFieldC[error](NamedError)
 | 
				
			||||||
	case []error:
 | 
						case []error:
 | 
				
			||||||
		return Errors(key, val)
 | 
							c = anyFieldC[[]error](Errors)
 | 
				
			||||||
	case fmt.Stringer:
 | 
						case fmt.Stringer:
 | 
				
			||||||
		return Stringer(key, val)
 | 
							c = anyFieldC[fmt.Stringer](Stringer)
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		return Reflect(key, val)
 | 
							c = anyFieldC[any](Reflect)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return c.Any(key, value)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								vendor/go.uber.org/zap/global.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/go.uber.org/zap/global.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -31,6 +31,7 @@ import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
 | 
						_stdLogDefaultDepth      = 1
 | 
				
			||||||
	_loggerWriterDepth       = 2
 | 
						_loggerWriterDepth       = 2
 | 
				
			||||||
	_programmerErrorTemplate = "You've found a bug in zap! Please file a bug at " +
 | 
						_programmerErrorTemplate = "You've found a bug in zap! Please file a bug at " +
 | 
				
			||||||
		"https://github.com/uber-go/zap/issues/new and reference this error: %v"
 | 
							"https://github.com/uber-go/zap/issues/new and reference this error: %v"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										26
									
								
								vendor/go.uber.org/zap/global_go112.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								vendor/go.uber.org/zap/global_go112.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,26 +0,0 @@
 | 
				
			|||||||
// Copyright (c) 2019 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// See #682 for more information.
 | 
					 | 
				
			||||||
// +build go1.12
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package zap
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const _stdLogDefaultDepth = 1
 | 
					 | 
				
			||||||
							
								
								
									
										26
									
								
								vendor/go.uber.org/zap/global_prego112.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								vendor/go.uber.org/zap/global_prego112.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,26 +0,0 @@
 | 
				
			|||||||
// Copyright (c) 2019 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// See #682 for more information.
 | 
					 | 
				
			||||||
// +build !go1.12
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package zap
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const _stdLogDefaultDepth = 2
 | 
					 | 
				
			||||||
							
								
								
									
										30
									
								
								vendor/go.uber.org/zap/http_handler.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								vendor/go.uber.org/zap/http_handler.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -22,6 +22,7 @@ package zap
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
@@ -32,12 +33,13 @@ import (
 | 
				
			|||||||
// ServeHTTP is a simple JSON endpoint that can report on or change the current
 | 
					// ServeHTTP is a simple JSON endpoint that can report on or change the current
 | 
				
			||||||
// logging level.
 | 
					// logging level.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// GET
 | 
					// # GET
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// The GET request returns a JSON description of the current logging level like:
 | 
					// The GET request returns a JSON description of the current logging level like:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
//	{"level":"info"}
 | 
					//	{"level":"info"}
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// PUT
 | 
					// # PUT
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// The PUT request changes the logging level. It is perfectly safe to change the
 | 
					// The PUT request changes the logging level. It is perfectly safe to change the
 | 
				
			||||||
// logging level while a program is running. Two content types are supported:
 | 
					// logging level while a program is running. Two content types are supported:
 | 
				
			||||||
@@ -66,8 +68,14 @@ import (
 | 
				
			|||||||
// An example curl request could look like this:
 | 
					// An example curl request could look like this:
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
//	curl -X PUT localhost:8080/log/level -H "Content-Type: application/json" -d '{"level":"debug"}'
 | 
					//	curl -X PUT localhost:8080/log/level -H "Content-Type: application/json" -d '{"level":"debug"}'
 | 
				
			||||||
//
 | 
					 | 
				
			||||||
func (lvl AtomicLevel) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 | 
					func (lvl AtomicLevel) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
 | 
						if err := lvl.serveHTTP(w, r); err != nil {
 | 
				
			||||||
 | 
							w.WriteHeader(http.StatusInternalServerError)
 | 
				
			||||||
 | 
							fmt.Fprintf(w, "internal error: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (lvl AtomicLevel) serveHTTP(w http.ResponseWriter, r *http.Request) error {
 | 
				
			||||||
	type errorResponse struct {
 | 
						type errorResponse struct {
 | 
				
			||||||
		Error string `json:"error"`
 | 
							Error string `json:"error"`
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -79,19 +87,20 @@ func (lvl AtomicLevel) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	switch r.Method {
 | 
						switch r.Method {
 | 
				
			||||||
	case http.MethodGet:
 | 
						case http.MethodGet:
 | 
				
			||||||
		enc.Encode(payload{Level: lvl.Level()})
 | 
							return enc.Encode(payload{Level: lvl.Level()})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	case http.MethodPut:
 | 
						case http.MethodPut:
 | 
				
			||||||
		requestedLvl, err := decodePutRequest(r.Header.Get("Content-Type"), r)
 | 
							requestedLvl, err := decodePutRequest(r.Header.Get("Content-Type"), r)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			w.WriteHeader(http.StatusBadRequest)
 | 
								w.WriteHeader(http.StatusBadRequest)
 | 
				
			||||||
			enc.Encode(errorResponse{Error: err.Error()})
 | 
								return enc.Encode(errorResponse{Error: err.Error()})
 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		lvl.SetLevel(requestedLvl)
 | 
							lvl.SetLevel(requestedLvl)
 | 
				
			||||||
		enc.Encode(payload{Level: lvl.Level()})
 | 
							return enc.Encode(payload{Level: lvl.Level()})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		w.WriteHeader(http.StatusMethodNotAllowed)
 | 
							w.WriteHeader(http.StatusMethodNotAllowed)
 | 
				
			||||||
		enc.Encode(errorResponse{
 | 
							return enc.Encode(errorResponse{
 | 
				
			||||||
			Error: "Only GET and PUT are supported.",
 | 
								Error: "Only GET and PUT are supported.",
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -108,7 +117,7 @@ func decodePutRequest(contentType string, r *http.Request) (zapcore.Level, error
 | 
				
			|||||||
func decodePutURL(r *http.Request) (zapcore.Level, error) {
 | 
					func decodePutURL(r *http.Request) (zapcore.Level, error) {
 | 
				
			||||||
	lvl := r.FormValue("level")
 | 
						lvl := r.FormValue("level")
 | 
				
			||||||
	if lvl == "" {
 | 
						if lvl == "" {
 | 
				
			||||||
		return 0, fmt.Errorf("must specify logging level")
 | 
							return 0, errors.New("must specify logging level")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	var l zapcore.Level
 | 
						var l zapcore.Level
 | 
				
			||||||
	if err := l.UnmarshalText([]byte(lvl)); err != nil {
 | 
						if err := l.UnmarshalText([]byte(lvl)); err != nil {
 | 
				
			||||||
@@ -125,8 +134,7 @@ func decodePutJSON(body io.Reader) (zapcore.Level, error) {
 | 
				
			|||||||
		return 0, fmt.Errorf("malformed request body: %v", err)
 | 
							return 0, fmt.Errorf("malformed request body: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if pld.Level == nil {
 | 
						if pld.Level == nil {
 | 
				
			||||||
		return 0, fmt.Errorf("must specify logging level")
 | 
							return 0, errors.New("must specify logging level")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return *pld.Level, nil
 | 
						return *pld.Level, nil
 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										22
									
								
								vendor/go.uber.org/zap/internal/exit/exit.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/go.uber.org/zap/internal/exit/exit.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -24,24 +24,25 @@ package exit
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import "os"
 | 
					import "os"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var real = func() { os.Exit(1) }
 | 
					var _exit = os.Exit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Exit normally terminates the process by calling os.Exit(1). If the package
 | 
					// With terminates the process by calling os.Exit(code). If the package is
 | 
				
			||||||
// is stubbed, it instead records a call in the testing spy.
 | 
					// stubbed, it instead records a call in the testing spy.
 | 
				
			||||||
func Exit() {
 | 
					func With(code int) {
 | 
				
			||||||
	real()
 | 
						_exit(code)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// A StubbedExit is a testing fake for os.Exit.
 | 
					// A StubbedExit is a testing fake for os.Exit.
 | 
				
			||||||
type StubbedExit struct {
 | 
					type StubbedExit struct {
 | 
				
			||||||
	Exited bool
 | 
						Exited bool
 | 
				
			||||||
	prev   func()
 | 
						Code   int
 | 
				
			||||||
 | 
						prev   func(code int)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Stub substitutes a fake for the call to os.Exit(1).
 | 
					// Stub substitutes a fake for the call to os.Exit(1).
 | 
				
			||||||
func Stub() *StubbedExit {
 | 
					func Stub() *StubbedExit {
 | 
				
			||||||
	s := &StubbedExit{prev: real}
 | 
						s := &StubbedExit{prev: _exit}
 | 
				
			||||||
	real = s.exit
 | 
						_exit = s.exit
 | 
				
			||||||
	return s
 | 
						return s
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -56,9 +57,10 @@ func WithStub(f func()) *StubbedExit {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Unstub restores the previous exit function.
 | 
					// Unstub restores the previous exit function.
 | 
				
			||||||
func (se *StubbedExit) Unstub() {
 | 
					func (se *StubbedExit) Unstub() {
 | 
				
			||||||
	real = se.prev
 | 
						_exit = se.prev
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (se *StubbedExit) exit() {
 | 
					func (se *StubbedExit) exit(code int) {
 | 
				
			||||||
	se.Exited = true
 | 
						se.Exited = true
 | 
				
			||||||
 | 
						se.Code = code
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										22
									
								
								vendor/go.uber.org/atomic/value.go → vendor/go.uber.org/zap/internal/level_enabler.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/go.uber.org/atomic/value.go → vendor/go.uber.org/zap/internal/level_enabler.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
// Copyright (c) 2020 Uber Technologies, Inc.
 | 
					// Copyright (c) 2022 Uber Technologies, Inc.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					// Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
// of this software and associated documentation files (the "Software"), to deal
 | 
					// of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
@@ -18,14 +18,20 @@
 | 
				
			|||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
					// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
				
			||||||
// THE SOFTWARE.
 | 
					// THE SOFTWARE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package atomic
 | 
					// Package internal and its subpackages hold types and functionality
 | 
				
			||||||
 | 
					// that are not part of Zap's public API.
 | 
				
			||||||
 | 
					package internal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import "sync/atomic"
 | 
					import "go.uber.org/zap/zapcore"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Value shadows the type of the same name from sync/atomic
 | 
					// LeveledEnabler is an interface satisfied by LevelEnablers that are able to
 | 
				
			||||||
// https://godoc.org/sync/atomic#Value
 | 
					// report their own level.
 | 
				
			||||||
type Value struct {
 | 
					//
 | 
				
			||||||
	_ nocmp // disallow non-atomic comparison
 | 
					// This interface is defined to use more conveniently in tests and non-zapcore
 | 
				
			||||||
 | 
					// packages.
 | 
				
			||||||
 | 
					// This cannot be imported from zapcore because of the cyclic dependency.
 | 
				
			||||||
 | 
					type LeveledEnabler interface {
 | 
				
			||||||
 | 
						zapcore.LevelEnabler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	atomic.Value
 | 
						Level() zapcore.Level
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										51
									
								
								vendor/go.uber.org/atomic/time.go → vendor/go.uber.org/zap/internal/pool/pool.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										51
									
								
								vendor/go.uber.org/atomic/time.go → vendor/go.uber.org/zap/internal/pool/pool.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,6 +1,4 @@
 | 
				
			|||||||
// @generated Code generated by gen-atomicwrapper.
 | 
					// Copyright (c) 2023 Uber Technologies, Inc.
 | 
				
			||||||
 | 
					 | 
				
			||||||
// Copyright (c) 2020-2022 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					// Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
// of this software and associated documentation files (the "Software"), to deal
 | 
					// of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
@@ -20,36 +18,41 @@
 | 
				
			|||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
					// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
				
			||||||
// THE SOFTWARE.
 | 
					// THE SOFTWARE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package atomic
 | 
					// Package pool provides internal pool utilities.
 | 
				
			||||||
 | 
					package pool
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"time"
 | 
						"sync"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Time is an atomic type-safe wrapper for time.Time values.
 | 
					// A Pool is a generic wrapper around [sync.Pool] to provide strongly-typed
 | 
				
			||||||
type Time struct {
 | 
					// object pooling.
 | 
				
			||||||
	_ nocmp // disallow non-atomic comparison
 | 
					//
 | 
				
			||||||
 | 
					// Note that SA6002 (ref: https://staticcheck.io/docs/checks/#SA6002) will
 | 
				
			||||||
	v Value
 | 
					// not be detected, so all internal pool use must take care to only store
 | 
				
			||||||
 | 
					// pointer types.
 | 
				
			||||||
 | 
					type Pool[T any] struct {
 | 
				
			||||||
 | 
						pool sync.Pool
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var _zeroTime time.Time
 | 
					// New returns a new [Pool] for T, and will use fn to construct new Ts when
 | 
				
			||||||
 | 
					// the pool is empty.
 | 
				
			||||||
// NewTime creates a new Time.
 | 
					func New[T any](fn func() T) *Pool[T] {
 | 
				
			||||||
func NewTime(val time.Time) *Time {
 | 
						return &Pool[T]{
 | 
				
			||||||
	x := &Time{}
 | 
							pool: sync.Pool{
 | 
				
			||||||
	if val != _zeroTime {
 | 
								New: func() any {
 | 
				
			||||||
		x.Store(val)
 | 
									return fn()
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return x
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Load atomically loads the wrapped time.Time.
 | 
					// Get gets a T from the pool, or creates a new one if the pool is empty.
 | 
				
			||||||
func (x *Time) Load() time.Time {
 | 
					func (p *Pool[T]) Get() T {
 | 
				
			||||||
	return unpackTime(x.v.Load())
 | 
						return p.pool.Get().(T)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Store atomically stores the passed time.Time.
 | 
					// Put returns x into the pool.
 | 
				
			||||||
func (x *Time) Store(val time.Time) {
 | 
					func (p *Pool[T]) Put(x T) {
 | 
				
			||||||
	x.v.Store(packTime(val))
 | 
						p.pool.Put(x)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										181
									
								
								vendor/go.uber.org/zap/internal/stacktrace/stack.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										181
									
								
								vendor/go.uber.org/zap/internal/stacktrace/stack.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,181 @@
 | 
				
			|||||||
 | 
					// Copyright (c) 2023 Uber Technologies, Inc.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Package stacktrace provides support for gathering stack traces
 | 
				
			||||||
 | 
					// efficiently.
 | 
				
			||||||
 | 
					package stacktrace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"runtime"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"go.uber.org/zap/buffer"
 | 
				
			||||||
 | 
						"go.uber.org/zap/internal/bufferpool"
 | 
				
			||||||
 | 
						"go.uber.org/zap/internal/pool"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var _stackPool = pool.New(func() *Stack {
 | 
				
			||||||
 | 
						return &Stack{
 | 
				
			||||||
 | 
							storage: make([]uintptr, 64),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Stack is a captured stack trace.
 | 
				
			||||||
 | 
					type Stack struct {
 | 
				
			||||||
 | 
						pcs    []uintptr // program counters; always a subslice of storage
 | 
				
			||||||
 | 
						frames *runtime.Frames
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// The size of pcs varies depending on requirements:
 | 
				
			||||||
 | 
						// it will be one if the only the first frame was requested,
 | 
				
			||||||
 | 
						// and otherwise it will reflect the depth of the call stack.
 | 
				
			||||||
 | 
						//
 | 
				
			||||||
 | 
						// storage decouples the slice we need (pcs) from the slice we pool.
 | 
				
			||||||
 | 
						// We will always allocate a reasonably large storage, but we'll use
 | 
				
			||||||
 | 
						// only as much of it as we need.
 | 
				
			||||||
 | 
						storage []uintptr
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Depth specifies how deep of a stack trace should be captured.
 | 
				
			||||||
 | 
					type Depth int
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						// First captures only the first frame.
 | 
				
			||||||
 | 
						First Depth = iota
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Full captures the entire call stack, allocating more
 | 
				
			||||||
 | 
						// storage for it if needed.
 | 
				
			||||||
 | 
						Full
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Capture captures a stack trace of the specified depth, skipping
 | 
				
			||||||
 | 
					// the provided number of frames. skip=0 identifies the caller of
 | 
				
			||||||
 | 
					// Capture.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// The caller must call Free on the returned stacktrace after using it.
 | 
				
			||||||
 | 
					func Capture(skip int, depth Depth) *Stack {
 | 
				
			||||||
 | 
						stack := _stackPool.Get()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch depth {
 | 
				
			||||||
 | 
						case First:
 | 
				
			||||||
 | 
							stack.pcs = stack.storage[:1]
 | 
				
			||||||
 | 
						case Full:
 | 
				
			||||||
 | 
							stack.pcs = stack.storage
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Unlike other "skip"-based APIs, skip=0 identifies runtime.Callers
 | 
				
			||||||
 | 
						// itself. +2 to skip captureStacktrace and runtime.Callers.
 | 
				
			||||||
 | 
						numFrames := runtime.Callers(
 | 
				
			||||||
 | 
							skip+2,
 | 
				
			||||||
 | 
							stack.pcs,
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// runtime.Callers truncates the recorded stacktrace if there is no
 | 
				
			||||||
 | 
						// room in the provided slice. For the full stack trace, keep expanding
 | 
				
			||||||
 | 
						// storage until there are fewer frames than there is room.
 | 
				
			||||||
 | 
						if depth == Full {
 | 
				
			||||||
 | 
							pcs := stack.pcs
 | 
				
			||||||
 | 
							for numFrames == len(pcs) {
 | 
				
			||||||
 | 
								pcs = make([]uintptr, len(pcs)*2)
 | 
				
			||||||
 | 
								numFrames = runtime.Callers(skip+2, pcs)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Discard old storage instead of returning it to the pool.
 | 
				
			||||||
 | 
							// This will adjust the pool size over time if stack traces are
 | 
				
			||||||
 | 
							// consistently very deep.
 | 
				
			||||||
 | 
							stack.storage = pcs
 | 
				
			||||||
 | 
							stack.pcs = pcs[:numFrames]
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							stack.pcs = stack.pcs[:numFrames]
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						stack.frames = runtime.CallersFrames(stack.pcs)
 | 
				
			||||||
 | 
						return stack
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Free releases resources associated with this stacktrace
 | 
				
			||||||
 | 
					// and returns it back to the pool.
 | 
				
			||||||
 | 
					func (st *Stack) Free() {
 | 
				
			||||||
 | 
						st.frames = nil
 | 
				
			||||||
 | 
						st.pcs = nil
 | 
				
			||||||
 | 
						_stackPool.Put(st)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Count reports the total number of frames in this stacktrace.
 | 
				
			||||||
 | 
					// Count DOES NOT change as Next is called.
 | 
				
			||||||
 | 
					func (st *Stack) Count() int {
 | 
				
			||||||
 | 
						return len(st.pcs)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Next returns the next frame in the stack trace,
 | 
				
			||||||
 | 
					// and a boolean indicating whether there are more after it.
 | 
				
			||||||
 | 
					func (st *Stack) Next() (_ runtime.Frame, more bool) {
 | 
				
			||||||
 | 
						return st.frames.Next()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Take returns a string representation of the current stacktrace.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// skip is the number of frames to skip before recording the stack trace.
 | 
				
			||||||
 | 
					// skip=0 identifies the caller of Take.
 | 
				
			||||||
 | 
					func Take(skip int) string {
 | 
				
			||||||
 | 
						stack := Capture(skip+1, Full)
 | 
				
			||||||
 | 
						defer stack.Free()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						buffer := bufferpool.Get()
 | 
				
			||||||
 | 
						defer buffer.Free()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						stackfmt := NewFormatter(buffer)
 | 
				
			||||||
 | 
						stackfmt.FormatStack(stack)
 | 
				
			||||||
 | 
						return buffer.String()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Formatter formats a stack trace into a readable string representation.
 | 
				
			||||||
 | 
					type Formatter struct {
 | 
				
			||||||
 | 
						b        *buffer.Buffer
 | 
				
			||||||
 | 
						nonEmpty bool // whehther we've written at least one frame already
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NewFormatter builds a new Formatter.
 | 
				
			||||||
 | 
					func NewFormatter(b *buffer.Buffer) Formatter {
 | 
				
			||||||
 | 
						return Formatter{b: b}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FormatStack formats all remaining frames in the provided stacktrace -- minus
 | 
				
			||||||
 | 
					// the final runtime.main/runtime.goexit frame.
 | 
				
			||||||
 | 
					func (sf *Formatter) FormatStack(stack *Stack) {
 | 
				
			||||||
 | 
						// Note: On the last iteration, frames.Next() returns false, with a valid
 | 
				
			||||||
 | 
						// frame, but we ignore this frame. The last frame is a runtime frame which
 | 
				
			||||||
 | 
						// adds noise, since it's only either runtime.main or runtime.goexit.
 | 
				
			||||||
 | 
						for frame, more := stack.Next(); more; frame, more = stack.Next() {
 | 
				
			||||||
 | 
							sf.FormatFrame(frame)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FormatFrame formats the given frame.
 | 
				
			||||||
 | 
					func (sf *Formatter) FormatFrame(frame runtime.Frame) {
 | 
				
			||||||
 | 
						if sf.nonEmpty {
 | 
				
			||||||
 | 
							sf.b.AppendByte('\n')
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						sf.nonEmpty = true
 | 
				
			||||||
 | 
						sf.b.AppendString(frame.Function)
 | 
				
			||||||
 | 
						sf.b.AppendByte('\n')
 | 
				
			||||||
 | 
						sf.b.AppendByte('\t')
 | 
				
			||||||
 | 
						sf.b.AppendString(frame.File)
 | 
				
			||||||
 | 
						sf.b.AppendByte(':')
 | 
				
			||||||
 | 
						sf.b.AppendInt(int64(frame.Line))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										153
									
								
								vendor/go.uber.org/zap/internal/ztest/clock.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										153
									
								
								vendor/go.uber.org/zap/internal/ztest/clock.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,153 @@
 | 
				
			|||||||
 | 
					// Copyright (c) 2023 Uber Technologies, Inc.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package ztest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"sort"
 | 
				
			||||||
 | 
						"sync"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// MockClock is a fake source of time.
 | 
				
			||||||
 | 
					// It implements standard time operations,
 | 
				
			||||||
 | 
					// but allows the user to control the passage of time.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Use the [Add] method to progress time.
 | 
				
			||||||
 | 
					type MockClock struct {
 | 
				
			||||||
 | 
						mu  sync.RWMutex
 | 
				
			||||||
 | 
						now time.Time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// The MockClock works by maintaining a list of waiters.
 | 
				
			||||||
 | 
						// Each waiter knows the time at which it should be resolved.
 | 
				
			||||||
 | 
						// When the clock advances, all waiters that are in range are resolved
 | 
				
			||||||
 | 
						// in chronological order.
 | 
				
			||||||
 | 
						waiters []waiter
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NewMockClock builds a new mock clock
 | 
				
			||||||
 | 
					// using the current actual time as the initial time.
 | 
				
			||||||
 | 
					func NewMockClock() *MockClock {
 | 
				
			||||||
 | 
						return &MockClock{
 | 
				
			||||||
 | 
							now: time.Now(),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Now reports the current time.
 | 
				
			||||||
 | 
					func (c *MockClock) Now() time.Time {
 | 
				
			||||||
 | 
						c.mu.RLock()
 | 
				
			||||||
 | 
						defer c.mu.RUnlock()
 | 
				
			||||||
 | 
						return c.now
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NewTicker returns a time.Ticker that ticks at the specified frequency.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// As with [time.NewTicker],
 | 
				
			||||||
 | 
					// the ticker will drop ticks if the receiver is slow,
 | 
				
			||||||
 | 
					// and the channel is never closed.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Calling Stop on the returned ticker is a no-op.
 | 
				
			||||||
 | 
					// The ticker only runs when the clock is advanced.
 | 
				
			||||||
 | 
					func (c *MockClock) NewTicker(d time.Duration) *time.Ticker {
 | 
				
			||||||
 | 
						ch := make(chan time.Time, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var tick func(time.Time)
 | 
				
			||||||
 | 
						tick = func(now time.Time) {
 | 
				
			||||||
 | 
							next := now.Add(d)
 | 
				
			||||||
 | 
							c.runAt(next, func() {
 | 
				
			||||||
 | 
								defer tick(next)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								select {
 | 
				
			||||||
 | 
								case ch <- next:
 | 
				
			||||||
 | 
									// ok
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									// The receiver is slow.
 | 
				
			||||||
 | 
									// Drop the tick and continue.
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						tick(c.Now())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &time.Ticker{C: ch}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// runAt schedules the given function to be run at the given time.
 | 
				
			||||||
 | 
					// The function runs without a lock held, so it may schedule more work.
 | 
				
			||||||
 | 
					func (c *MockClock) runAt(t time.Time, fn func()) {
 | 
				
			||||||
 | 
						c.mu.Lock()
 | 
				
			||||||
 | 
						defer c.mu.Unlock()
 | 
				
			||||||
 | 
						c.waiters = append(c.waiters, waiter{until: t, fn: fn})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type waiter struct {
 | 
				
			||||||
 | 
						until time.Time
 | 
				
			||||||
 | 
						fn    func()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Add progresses time by the given duration.
 | 
				
			||||||
 | 
					// Other operations waiting for the time to advance
 | 
				
			||||||
 | 
					// will be resolved if they are within range.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Side effects of operations waiting for the time to advance
 | 
				
			||||||
 | 
					// will take effect on a best-effort basis.
 | 
				
			||||||
 | 
					// Avoid racing with operations that have side effects.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Panics if the duration is negative.
 | 
				
			||||||
 | 
					func (c *MockClock) Add(d time.Duration) {
 | 
				
			||||||
 | 
						if d < 0 {
 | 
				
			||||||
 | 
							panic("cannot add negative duration")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						c.mu.Lock()
 | 
				
			||||||
 | 
						defer c.mu.Unlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sort.Slice(c.waiters, func(i, j int) bool {
 | 
				
			||||||
 | 
							return c.waiters[i].until.Before(c.waiters[j].until)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						newTime := c.now.Add(d)
 | 
				
			||||||
 | 
						// newTime won't be recorded until the end of this method.
 | 
				
			||||||
 | 
						// This ensures that any waiters that are resolved
 | 
				
			||||||
 | 
						// are resolved at the time they were expecting.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for len(c.waiters) > 0 {
 | 
				
			||||||
 | 
							w := c.waiters[0]
 | 
				
			||||||
 | 
							if w.until.After(newTime) {
 | 
				
			||||||
 | 
								break
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							c.waiters[0] = waiter{} // avoid memory leak
 | 
				
			||||||
 | 
							c.waiters = c.waiters[1:]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// The waiter is within range.
 | 
				
			||||||
 | 
							// Travel to the time of the waiter and resolve it.
 | 
				
			||||||
 | 
							c.now = w.until
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// The waiter may schedule more work
 | 
				
			||||||
 | 
							// so we must release the lock.
 | 
				
			||||||
 | 
							c.mu.Unlock()
 | 
				
			||||||
 | 
							w.fn()
 | 
				
			||||||
 | 
							// Sleeping here is necessary to let the side effects of waiters
 | 
				
			||||||
 | 
							// take effect before we continue.
 | 
				
			||||||
 | 
							time.Sleep(1 * time.Millisecond)
 | 
				
			||||||
 | 
							c.mu.Lock()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						c.now = newTime
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										2
									
								
								vendor/go.uber.org/zap/internal/ztest/timeout.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/go.uber.org/zap/internal/ztest/timeout.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -42,11 +42,11 @@ func Sleep(base time.Duration) {
 | 
				
			|||||||
// Initialize checks the environment and alters the timeout scale accordingly.
 | 
					// Initialize checks the environment and alters the timeout scale accordingly.
 | 
				
			||||||
// It returns a function to undo the scaling.
 | 
					// It returns a function to undo the scaling.
 | 
				
			||||||
func Initialize(factor string) func() {
 | 
					func Initialize(factor string) func() {
 | 
				
			||||||
	original := _timeoutScale
 | 
					 | 
				
			||||||
	fv, err := strconv.ParseFloat(factor, 64)
 | 
						fv, err := strconv.ParseFloat(factor, 64)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		panic(err)
 | 
							panic(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						original := _timeoutScale
 | 
				
			||||||
	_timeoutScale = fv
 | 
						_timeoutScale = fv
 | 
				
			||||||
	return func() { _timeoutScale = original }
 | 
						return func() { _timeoutScale = original }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								vendor/go.uber.org/zap/internal/ztest/writer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/go.uber.org/zap/internal/ztest/writer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -23,7 +23,7 @@ package ztest
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"bytes"
 | 
						"bytes"
 | 
				
			||||||
	"errors"
 | 
						"errors"
 | 
				
			||||||
	"io/ioutil"
 | 
						"io"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -50,12 +50,12 @@ func (s *Syncer) Called() bool {
 | 
				
			|||||||
	return s.called
 | 
						return s.called
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// A Discarder sends all writes to ioutil.Discard.
 | 
					// A Discarder sends all writes to io.Discard.
 | 
				
			||||||
type Discarder struct{ Syncer }
 | 
					type Discarder struct{ Syncer }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Write implements io.Writer.
 | 
					// Write implements io.Writer.
 | 
				
			||||||
func (d *Discarder) Write(b []byte) (int, error) {
 | 
					func (d *Discarder) Write(b []byte) (int, error) {
 | 
				
			||||||
	return ioutil.Discard.Write(b)
 | 
						return io.Discard.Write(b)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// FailWriter is a WriteSyncer that always returns an error on writes.
 | 
					// FailWriter is a WriteSyncer that always returns an error on writes.
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										29
									
								
								vendor/go.uber.org/zap/level.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								vendor/go.uber.org/zap/level.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -21,7 +21,9 @@
 | 
				
			|||||||
package zap
 | 
					package zap
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"go.uber.org/atomic"
 | 
						"sync/atomic"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"go.uber.org/zap/internal"
 | 
				
			||||||
	"go.uber.org/zap/zapcore"
 | 
						"go.uber.org/zap/zapcore"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -70,12 +72,14 @@ type AtomicLevel struct {
 | 
				
			|||||||
	l *atomic.Int32
 | 
						l *atomic.Int32
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var _ internal.LeveledEnabler = AtomicLevel{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewAtomicLevel creates an AtomicLevel with InfoLevel and above logging
 | 
					// NewAtomicLevel creates an AtomicLevel with InfoLevel and above logging
 | 
				
			||||||
// enabled.
 | 
					// enabled.
 | 
				
			||||||
func NewAtomicLevel() AtomicLevel {
 | 
					func NewAtomicLevel() AtomicLevel {
 | 
				
			||||||
	return AtomicLevel{
 | 
						lvl := AtomicLevel{l: new(atomic.Int32)}
 | 
				
			||||||
		l: atomic.NewInt32(int32(InfoLevel)),
 | 
						lvl.l.Store(int32(InfoLevel))
 | 
				
			||||||
	}
 | 
						return lvl
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewAtomicLevelAt is a convenience function that creates an AtomicLevel
 | 
					// NewAtomicLevelAt is a convenience function that creates an AtomicLevel
 | 
				
			||||||
@@ -86,6 +90,23 @@ func NewAtomicLevelAt(l zapcore.Level) AtomicLevel {
 | 
				
			|||||||
	return a
 | 
						return a
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ParseAtomicLevel parses an AtomicLevel based on a lowercase or all-caps ASCII
 | 
				
			||||||
 | 
					// representation of the log level. If the provided ASCII representation is
 | 
				
			||||||
 | 
					// invalid an error is returned.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// This is particularly useful when dealing with text input to configure log
 | 
				
			||||||
 | 
					// levels.
 | 
				
			||||||
 | 
					func ParseAtomicLevel(text string) (AtomicLevel, error) {
 | 
				
			||||||
 | 
						a := NewAtomicLevel()
 | 
				
			||||||
 | 
						l, err := zapcore.ParseLevel(text)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return a, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						a.SetLevel(l)
 | 
				
			||||||
 | 
						return a, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Enabled implements the zapcore.LevelEnabler interface, which allows the
 | 
					// Enabled implements the zapcore.LevelEnabler interface, which allows the
 | 
				
			||||||
// AtomicLevel to be used in place of traditional static levels.
 | 
					// AtomicLevel to be used in place of traditional static levels.
 | 
				
			||||||
func (lvl AtomicLevel) Enabled(l zapcore.Level) bool {
 | 
					func (lvl AtomicLevel) Enabled(l zapcore.Level) bool {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										168
									
								
								vendor/go.uber.org/zap/logger.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										168
									
								
								vendor/go.uber.org/zap/logger.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -22,11 +22,12 @@ package zap
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io/ioutil"
 | 
						"io"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
	"runtime"
 | 
					 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"go.uber.org/zap/internal/bufferpool"
 | 
				
			||||||
 | 
						"go.uber.org/zap/internal/stacktrace"
 | 
				
			||||||
	"go.uber.org/zap/zapcore"
 | 
						"go.uber.org/zap/zapcore"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -42,7 +43,7 @@ type Logger struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	development bool
 | 
						development bool
 | 
				
			||||||
	addCaller   bool
 | 
						addCaller   bool
 | 
				
			||||||
	onFatal     zapcore.CheckWriteAction // default is WriteThenFatal
 | 
						onFatal     zapcore.CheckWriteHook // default is WriteThenFatal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	name        string
 | 
						name        string
 | 
				
			||||||
	errorOutput zapcore.WriteSyncer
 | 
						errorOutput zapcore.WriteSyncer
 | 
				
			||||||
@@ -85,7 +86,7 @@ func New(core zapcore.Core, options ...Option) *Logger {
 | 
				
			|||||||
func NewNop() *Logger {
 | 
					func NewNop() *Logger {
 | 
				
			||||||
	return &Logger{
 | 
						return &Logger{
 | 
				
			||||||
		core:        zapcore.NewNopCore(),
 | 
							core:        zapcore.NewNopCore(),
 | 
				
			||||||
		errorOutput: zapcore.AddSync(ioutil.Discard),
 | 
							errorOutput: zapcore.AddSync(io.Discard),
 | 
				
			||||||
		addStack:    zapcore.FatalLevel + 1,
 | 
							addStack:    zapcore.FatalLevel + 1,
 | 
				
			||||||
		clock:       zapcore.DefaultClock,
 | 
							clock:       zapcore.DefaultClock,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -107,6 +108,19 @@ func NewDevelopment(options ...Option) (*Logger, error) {
 | 
				
			|||||||
	return NewDevelopmentConfig().Build(options...)
 | 
						return NewDevelopmentConfig().Build(options...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Must is a helper that wraps a call to a function returning (*Logger, error)
 | 
				
			||||||
 | 
					// and panics if the error is non-nil. It is intended for use in variable
 | 
				
			||||||
 | 
					// initialization such as:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	var logger = zap.Must(zap.NewProduction())
 | 
				
			||||||
 | 
					func Must(logger *Logger, err error) *Logger {
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							panic(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return logger
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewExample builds a Logger that's designed for use in zap's testable
 | 
					// NewExample builds a Logger that's designed for use in zap's testable
 | 
				
			||||||
// examples. It writes DebugLevel and above logs to standard out as JSON, but
 | 
					// examples. It writes DebugLevel and above logs to standard out as JSON, but
 | 
				
			||||||
// omits the timestamp and calling function to keep example output
 | 
					// omits the timestamp and calling function to keep example output
 | 
				
			||||||
@@ -160,7 +174,8 @@ func (log *Logger) WithOptions(opts ...Option) *Logger {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// With creates a child logger and adds structured context to it. Fields added
 | 
					// With creates a child logger and adds structured context to it. Fields added
 | 
				
			||||||
// to the child don't affect the parent, and vice versa.
 | 
					// to the child don't affect the parent, and vice versa. Any fields that
 | 
				
			||||||
 | 
					// require evaluation (such as Objects) are evaluated upon invocation of With.
 | 
				
			||||||
func (log *Logger) With(fields ...Field) *Logger {
 | 
					func (log *Logger) With(fields ...Field) *Logger {
 | 
				
			||||||
	if len(fields) == 0 {
 | 
						if len(fields) == 0 {
 | 
				
			||||||
		return log
 | 
							return log
 | 
				
			||||||
@@ -170,6 +185,35 @@ func (log *Logger) With(fields ...Field) *Logger {
 | 
				
			|||||||
	return l
 | 
						return l
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// WithLazy creates a child logger and adds structured context to it lazily.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// The fields are evaluated only if the logger is further chained with [With]
 | 
				
			||||||
 | 
					// or is written to with any of the log level methods.
 | 
				
			||||||
 | 
					// Until that occurs, the logger may retain references to objects inside the fields,
 | 
				
			||||||
 | 
					// and logging will reflect the state of an object at the time of logging,
 | 
				
			||||||
 | 
					// not the time of WithLazy().
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// WithLazy provides a worthwhile performance optimization for contextual loggers
 | 
				
			||||||
 | 
					// when the likelihood of using the child logger is low,
 | 
				
			||||||
 | 
					// such as error paths and rarely taken branches.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Similar to [With], fields added to the child don't affect the parent, and vice versa.
 | 
				
			||||||
 | 
					func (log *Logger) WithLazy(fields ...Field) *Logger {
 | 
				
			||||||
 | 
						if len(fields) == 0 {
 | 
				
			||||||
 | 
							return log
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return log.WithOptions(WrapCore(func(core zapcore.Core) zapcore.Core {
 | 
				
			||||||
 | 
							return zapcore.NewLazyWith(core, fields)
 | 
				
			||||||
 | 
						}))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Level reports the minimum enabled level for this logger.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// For NopLoggers, this is [zapcore.InvalidLevel].
 | 
				
			||||||
 | 
					func (log *Logger) Level() zapcore.Level {
 | 
				
			||||||
 | 
						return zapcore.LevelOf(log.core)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Check returns a CheckedEntry if logging a message at the specified level
 | 
					// Check returns a CheckedEntry if logging a message at the specified level
 | 
				
			||||||
// is enabled. It's a completely optional optimization; in high-performance
 | 
					// is enabled. It's a completely optional optimization; in high-performance
 | 
				
			||||||
// applications, Check can help avoid allocating a slice to hold fields.
 | 
					// applications, Check can help avoid allocating a slice to hold fields.
 | 
				
			||||||
@@ -177,6 +221,16 @@ func (log *Logger) Check(lvl zapcore.Level, msg string) *zapcore.CheckedEntry {
 | 
				
			|||||||
	return log.check(lvl, msg)
 | 
						return log.check(lvl, msg)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Log logs a message at the specified level. The message includes any fields
 | 
				
			||||||
 | 
					// passed at the log site, as well as any fields accumulated on the logger.
 | 
				
			||||||
 | 
					// Any Fields that require  evaluation (such as Objects) are evaluated upon
 | 
				
			||||||
 | 
					// invocation of Log.
 | 
				
			||||||
 | 
					func (log *Logger) Log(lvl zapcore.Level, msg string, fields ...Field) {
 | 
				
			||||||
 | 
						if ce := log.check(lvl, msg); ce != nil {
 | 
				
			||||||
 | 
							ce.Write(fields...)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Debug logs a message at DebugLevel. The message includes any fields passed
 | 
					// Debug logs a message at DebugLevel. The message includes any fields passed
 | 
				
			||||||
// at the log site, as well as any fields accumulated on the logger.
 | 
					// at the log site, as well as any fields accumulated on the logger.
 | 
				
			||||||
func (log *Logger) Debug(msg string, fields ...Field) {
 | 
					func (log *Logger) Debug(msg string, fields ...Field) {
 | 
				
			||||||
@@ -253,14 +307,22 @@ func (log *Logger) Core() zapcore.Core {
 | 
				
			|||||||
	return log.core
 | 
						return log.core
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Name returns the Logger's underlying name,
 | 
				
			||||||
 | 
					// or an empty string if the logger is unnamed.
 | 
				
			||||||
 | 
					func (log *Logger) Name() string {
 | 
				
			||||||
 | 
						return log.name
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (log *Logger) clone() *Logger {
 | 
					func (log *Logger) clone() *Logger {
 | 
				
			||||||
	copy := *log
 | 
						clone := *log
 | 
				
			||||||
	return ©
 | 
						return &clone
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (log *Logger) check(lvl zapcore.Level, msg string) *zapcore.CheckedEntry {
 | 
					func (log *Logger) check(lvl zapcore.Level, msg string) *zapcore.CheckedEntry {
 | 
				
			||||||
	// check must always be called directly by a method in the Logger interface
 | 
						// Logger.check must always be called directly by a method in the
 | 
				
			||||||
	// (e.g., Check, Info, Fatal).
 | 
						// Logger interface (e.g., Check, Info, Fatal).
 | 
				
			||||||
 | 
						// This skips Logger.check and the Info/Fatal/Check/etc. method that
 | 
				
			||||||
 | 
						// called it.
 | 
				
			||||||
	const callerSkipOffset = 2
 | 
						const callerSkipOffset = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check the level first to reduce the cost of disabled log calls.
 | 
						// Check the level first to reduce the cost of disabled log calls.
 | 
				
			||||||
@@ -283,18 +345,27 @@ func (log *Logger) check(lvl zapcore.Level, msg string) *zapcore.CheckedEntry {
 | 
				
			|||||||
	// Set up any required terminal behavior.
 | 
						// Set up any required terminal behavior.
 | 
				
			||||||
	switch ent.Level {
 | 
						switch ent.Level {
 | 
				
			||||||
	case zapcore.PanicLevel:
 | 
						case zapcore.PanicLevel:
 | 
				
			||||||
		ce = ce.Should(ent, zapcore.WriteThenPanic)
 | 
							ce = ce.After(ent, zapcore.WriteThenPanic)
 | 
				
			||||||
	case zapcore.FatalLevel:
 | 
						case zapcore.FatalLevel:
 | 
				
			||||||
		onFatal := log.onFatal
 | 
							onFatal := log.onFatal
 | 
				
			||||||
		// Noop is the default value for CheckWriteAction, and it leads to
 | 
							// nil or WriteThenNoop will lead to continued execution after
 | 
				
			||||||
		// continued execution after a Fatal which is unexpected.
 | 
							// a Fatal log entry, which is unexpected. For example,
 | 
				
			||||||
		if onFatal == zapcore.WriteThenNoop {
 | 
							//
 | 
				
			||||||
 | 
							//   f, err := os.Open(..)
 | 
				
			||||||
 | 
							//   if err != nil {
 | 
				
			||||||
 | 
							//     log.Fatal("cannot open", zap.Error(err))
 | 
				
			||||||
 | 
							//   }
 | 
				
			||||||
 | 
							//   fmt.Println(f.Name())
 | 
				
			||||||
 | 
							//
 | 
				
			||||||
 | 
							// The f.Name() will panic if we continue execution after the
 | 
				
			||||||
 | 
							// log.Fatal.
 | 
				
			||||||
 | 
							if onFatal == nil || onFatal == zapcore.WriteThenNoop {
 | 
				
			||||||
			onFatal = zapcore.WriteThenFatal
 | 
								onFatal = zapcore.WriteThenFatal
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		ce = ce.Should(ent, onFatal)
 | 
							ce = ce.After(ent, onFatal)
 | 
				
			||||||
	case zapcore.DPanicLevel:
 | 
						case zapcore.DPanicLevel:
 | 
				
			||||||
		if log.development {
 | 
							if log.development {
 | 
				
			||||||
			ce = ce.Should(ent, zapcore.WriteThenPanic)
 | 
								ce = ce.After(ent, zapcore.WriteThenPanic)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -307,42 +378,55 @@ func (log *Logger) check(lvl zapcore.Level, msg string) *zapcore.CheckedEntry {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// Thread the error output through to the CheckedEntry.
 | 
						// Thread the error output through to the CheckedEntry.
 | 
				
			||||||
	ce.ErrorOutput = log.errorOutput
 | 
						ce.ErrorOutput = log.errorOutput
 | 
				
			||||||
	if log.addCaller {
 | 
					
 | 
				
			||||||
		frame, defined := getCallerFrame(log.callerSkip + callerSkipOffset)
 | 
						addStack := log.addStack.Enabled(ce.Level)
 | 
				
			||||||
		if !defined {
 | 
						if !log.addCaller && !addStack {
 | 
				
			||||||
			fmt.Fprintf(log.errorOutput, "%v Logger.check error: failed to get caller\n", ent.Time.UTC())
 | 
							return ce
 | 
				
			||||||
			log.errorOutput.Sync()
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		ce.Entry.Caller = zapcore.EntryCaller{
 | 
						// Adding the caller or stack trace requires capturing the callers of
 | 
				
			||||||
			Defined:  defined,
 | 
						// this function. We'll share information between these two.
 | 
				
			||||||
 | 
						stackDepth := stacktrace.First
 | 
				
			||||||
 | 
						if addStack {
 | 
				
			||||||
 | 
							stackDepth = stacktrace.Full
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						stack := stacktrace.Capture(log.callerSkip+callerSkipOffset, stackDepth)
 | 
				
			||||||
 | 
						defer stack.Free()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if stack.Count() == 0 {
 | 
				
			||||||
 | 
							if log.addCaller {
 | 
				
			||||||
 | 
								fmt.Fprintf(log.errorOutput, "%v Logger.check error: failed to get caller\n", ent.Time.UTC())
 | 
				
			||||||
 | 
								_ = log.errorOutput.Sync()
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ce
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						frame, more := stack.Next()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if log.addCaller {
 | 
				
			||||||
 | 
							ce.Caller = zapcore.EntryCaller{
 | 
				
			||||||
 | 
								Defined:  frame.PC != 0,
 | 
				
			||||||
			PC:       frame.PC,
 | 
								PC:       frame.PC,
 | 
				
			||||||
			File:     frame.File,
 | 
								File:     frame.File,
 | 
				
			||||||
			Line:     frame.Line,
 | 
								Line:     frame.Line,
 | 
				
			||||||
			Function: frame.Function,
 | 
								Function: frame.Function,
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if log.addStack.Enabled(ce.Entry.Level) {
 | 
					
 | 
				
			||||||
		ce.Entry.Stack = StackSkip("", log.callerSkip+callerSkipOffset).String
 | 
						if addStack {
 | 
				
			||||||
 | 
							buffer := bufferpool.Get()
 | 
				
			||||||
 | 
							defer buffer.Free()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							stackfmt := stacktrace.NewFormatter(buffer)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// We've already extracted the first frame, so format that
 | 
				
			||||||
 | 
							// separately and defer to stackfmt for the rest.
 | 
				
			||||||
 | 
							stackfmt.FormatFrame(frame)
 | 
				
			||||||
 | 
							if more {
 | 
				
			||||||
 | 
								stackfmt.FormatStack(stack)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							ce.Stack = buffer.String()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return ce
 | 
						return ce
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
// getCallerFrame gets caller frame. The argument skip is the number of stack
 | 
					 | 
				
			||||||
// frames to ascend, with 0 identifying the caller of getCallerFrame. The
 | 
					 | 
				
			||||||
// boolean ok is false if it was not possible to recover the information.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Note: This implementation is similar to runtime.Caller, but it returns the whole frame.
 | 
					 | 
				
			||||||
func getCallerFrame(skip int) (frame runtime.Frame, ok bool) {
 | 
					 | 
				
			||||||
	const skipOffset = 2 // skip getCallerFrame and Callers
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	pc := make([]uintptr, 1)
 | 
					 | 
				
			||||||
	numFrames := runtime.Callers(skip+skipOffset, pc)
 | 
					 | 
				
			||||||
	if numFrames < 1 {
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	frame, _ = runtime.CallersFrames(pc).Next()
 | 
					 | 
				
			||||||
	return frame, frame.PC != 0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										21
									
								
								vendor/go.uber.org/zap/options.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								vendor/go.uber.org/zap/options.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -133,9 +133,28 @@ func IncreaseLevel(lvl zapcore.LevelEnabler) Option {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// OnFatal sets the action to take on fatal logs.
 | 
					// OnFatal sets the action to take on fatal logs.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Deprecated: Use [WithFatalHook] instead.
 | 
				
			||||||
func OnFatal(action zapcore.CheckWriteAction) Option {
 | 
					func OnFatal(action zapcore.CheckWriteAction) Option {
 | 
				
			||||||
 | 
						return WithFatalHook(action)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// WithFatalHook sets a CheckWriteHook to run on fatal logs.
 | 
				
			||||||
 | 
					// Zap will call this hook after writing a log statement with a Fatal level.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// For example, the following builds a logger that will exit the current
 | 
				
			||||||
 | 
					// goroutine after writing a fatal log message, but it will not exit the
 | 
				
			||||||
 | 
					// program.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	zap.New(core, zap.WithFatalHook(zapcore.WriteThenGoexit))
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// It is important that the provided CheckWriteHook stops the control flow at
 | 
				
			||||||
 | 
					// the current statement to meet expectations of callers of the logger.
 | 
				
			||||||
 | 
					// We recommend calling os.Exit or runtime.Goexit inside custom hooks at
 | 
				
			||||||
 | 
					// minimum.
 | 
				
			||||||
 | 
					func WithFatalHook(hook zapcore.CheckWriteHook) Option {
 | 
				
			||||||
	return optionFunc(func(log *Logger) {
 | 
						return optionFunc(func(log *Logger) {
 | 
				
			||||||
		log.onFatal = action
 | 
							log.onFatal = hook
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										101
									
								
								vendor/go.uber.org/zap/sink.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										101
									
								
								vendor/go.uber.org/zap/sink.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
// Copyright (c) 2016 Uber Technologies, Inc.
 | 
					// Copyright (c) 2016-2022 Uber Technologies, Inc.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					// Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
// of this software and associated documentation files (the "Software"), to deal
 | 
					// of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
@@ -26,6 +26,7 @@ import (
 | 
				
			|||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
 | 
						"path/filepath"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"sync"
 | 
						"sync"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -34,23 +35,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
const schemeFile = "file"
 | 
					const schemeFile = "file"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var _sinkRegistry = newSinkRegistry()
 | 
				
			||||||
	_sinkMutex     sync.RWMutex
 | 
					 | 
				
			||||||
	_sinkFactories map[string]func(*url.URL) (Sink, error) // keyed by scheme
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func init() {
 | 
					 | 
				
			||||||
	resetSinkRegistry()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func resetSinkRegistry() {
 | 
					 | 
				
			||||||
	_sinkMutex.Lock()
 | 
					 | 
				
			||||||
	defer _sinkMutex.Unlock()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	_sinkFactories = map[string]func(*url.URL) (Sink, error){
 | 
					 | 
				
			||||||
		schemeFile: newFileSink,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Sink defines the interface to write to and close logger destinations.
 | 
					// Sink defines the interface to write to and close logger destinations.
 | 
				
			||||||
type Sink interface {
 | 
					type Sink interface {
 | 
				
			||||||
@@ -58,10 +43,6 @@ type Sink interface {
 | 
				
			|||||||
	io.Closer
 | 
						io.Closer
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type nopCloserSink struct{ zapcore.WriteSyncer }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (nopCloserSink) Close() error { return nil }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type errSinkNotFound struct {
 | 
					type errSinkNotFound struct {
 | 
				
			||||||
	scheme string
 | 
						scheme string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -70,16 +51,30 @@ func (e *errSinkNotFound) Error() string {
 | 
				
			|||||||
	return fmt.Sprintf("no sink found for scheme %q", e.scheme)
 | 
						return fmt.Sprintf("no sink found for scheme %q", e.scheme)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// RegisterSink registers a user-supplied factory for all sinks with a
 | 
					type nopCloserSink struct{ zapcore.WriteSyncer }
 | 
				
			||||||
// particular scheme.
 | 
					
 | 
				
			||||||
//
 | 
					func (nopCloserSink) Close() error { return nil }
 | 
				
			||||||
// All schemes must be ASCII, valid under section 3.1 of RFC 3986
 | 
					
 | 
				
			||||||
// (https://tools.ietf.org/html/rfc3986#section-3.1), and must not already
 | 
					type sinkRegistry struct {
 | 
				
			||||||
// have a factory registered. Zap automatically registers a factory for the
 | 
						mu        sync.Mutex
 | 
				
			||||||
// "file" scheme.
 | 
						factories map[string]func(*url.URL) (Sink, error)          // keyed by scheme
 | 
				
			||||||
func RegisterSink(scheme string, factory func(*url.URL) (Sink, error)) error {
 | 
						openFile  func(string, int, os.FileMode) (*os.File, error) // type matches os.OpenFile
 | 
				
			||||||
	_sinkMutex.Lock()
 | 
					}
 | 
				
			||||||
	defer _sinkMutex.Unlock()
 | 
					
 | 
				
			||||||
 | 
					func newSinkRegistry() *sinkRegistry {
 | 
				
			||||||
 | 
						sr := &sinkRegistry{
 | 
				
			||||||
 | 
							factories: make(map[string]func(*url.URL) (Sink, error)),
 | 
				
			||||||
 | 
							openFile:  os.OpenFile,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						// Infallible operation: the registry is empty, so we can't have a conflict.
 | 
				
			||||||
 | 
						_ = sr.RegisterSink(schemeFile, sr.newFileSinkFromURL)
 | 
				
			||||||
 | 
						return sr
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RegisterScheme registers the given factory for the specific scheme.
 | 
				
			||||||
 | 
					func (sr *sinkRegistry) RegisterSink(scheme string, factory func(*url.URL) (Sink, error)) error {
 | 
				
			||||||
 | 
						sr.mu.Lock()
 | 
				
			||||||
 | 
						defer sr.mu.Unlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if scheme == "" {
 | 
						if scheme == "" {
 | 
				
			||||||
		return errors.New("can't register a sink factory for empty string")
 | 
							return errors.New("can't register a sink factory for empty string")
 | 
				
			||||||
@@ -88,14 +83,22 @@ func RegisterSink(scheme string, factory func(*url.URL) (Sink, error)) error {
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return fmt.Errorf("%q is not a valid scheme: %v", scheme, err)
 | 
							return fmt.Errorf("%q is not a valid scheme: %v", scheme, err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if _, ok := _sinkFactories[normalized]; ok {
 | 
						if _, ok := sr.factories[normalized]; ok {
 | 
				
			||||||
		return fmt.Errorf("sink factory already registered for scheme %q", normalized)
 | 
							return fmt.Errorf("sink factory already registered for scheme %q", normalized)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	_sinkFactories[normalized] = factory
 | 
						sr.factories[normalized] = factory
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func newSink(rawURL string) (Sink, error) {
 | 
					func (sr *sinkRegistry) newSink(rawURL string) (Sink, error) {
 | 
				
			||||||
 | 
						// URL parsing doesn't work well for Windows paths such as `c:\log.txt`, as scheme is set to
 | 
				
			||||||
 | 
						// the drive, and path is unset unless `c:/log.txt` is used.
 | 
				
			||||||
 | 
						// To avoid Windows-specific URL handling, we instead check IsAbs to open as a file.
 | 
				
			||||||
 | 
						// filepath.IsAbs is OS-specific, so IsAbs('c:/log.txt') is false outside of Windows.
 | 
				
			||||||
 | 
						if filepath.IsAbs(rawURL) {
 | 
				
			||||||
 | 
							return sr.newFileSinkFromPath(rawURL)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	u, err := url.Parse(rawURL)
 | 
						u, err := url.Parse(rawURL)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, fmt.Errorf("can't parse %q as a URL: %v", rawURL, err)
 | 
							return nil, fmt.Errorf("can't parse %q as a URL: %v", rawURL, err)
 | 
				
			||||||
@@ -104,16 +107,27 @@ func newSink(rawURL string) (Sink, error) {
 | 
				
			|||||||
		u.Scheme = schemeFile
 | 
							u.Scheme = schemeFile
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_sinkMutex.RLock()
 | 
						sr.mu.Lock()
 | 
				
			||||||
	factory, ok := _sinkFactories[u.Scheme]
 | 
						factory, ok := sr.factories[u.Scheme]
 | 
				
			||||||
	_sinkMutex.RUnlock()
 | 
						sr.mu.Unlock()
 | 
				
			||||||
	if !ok {
 | 
						if !ok {
 | 
				
			||||||
		return nil, &errSinkNotFound{u.Scheme}
 | 
							return nil, &errSinkNotFound{u.Scheme}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return factory(u)
 | 
						return factory(u)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func newFileSink(u *url.URL) (Sink, error) {
 | 
					// RegisterSink registers a user-supplied factory for all sinks with a
 | 
				
			||||||
 | 
					// particular scheme.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// All schemes must be ASCII, valid under section 0.1 of RFC 3986
 | 
				
			||||||
 | 
					// (https://tools.ietf.org/html/rfc3983#section-3.1), and must not already
 | 
				
			||||||
 | 
					// have a factory registered. Zap automatically registers a factory for the
 | 
				
			||||||
 | 
					// "file" scheme.
 | 
				
			||||||
 | 
					func RegisterSink(scheme string, factory func(*url.URL) (Sink, error)) error {
 | 
				
			||||||
 | 
						return _sinkRegistry.RegisterSink(scheme, factory)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (sr *sinkRegistry) newFileSinkFromURL(u *url.URL) (Sink, error) {
 | 
				
			||||||
	if u.User != nil {
 | 
						if u.User != nil {
 | 
				
			||||||
		return nil, fmt.Errorf("user and password not allowed with file URLs: got %v", u)
 | 
							return nil, fmt.Errorf("user and password not allowed with file URLs: got %v", u)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -130,13 +144,18 @@ func newFileSink(u *url.URL) (Sink, error) {
 | 
				
			|||||||
	if hn := u.Hostname(); hn != "" && hn != "localhost" {
 | 
						if hn := u.Hostname(); hn != "" && hn != "localhost" {
 | 
				
			||||||
		return nil, fmt.Errorf("file URLs must leave host empty or use localhost: got %v", u)
 | 
							return nil, fmt.Errorf("file URLs must leave host empty or use localhost: got %v", u)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	switch u.Path {
 | 
					
 | 
				
			||||||
 | 
						return sr.newFileSinkFromPath(u.Path)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (sr *sinkRegistry) newFileSinkFromPath(path string) (Sink, error) {
 | 
				
			||||||
 | 
						switch path {
 | 
				
			||||||
	case "stdout":
 | 
						case "stdout":
 | 
				
			||||||
		return nopCloserSink{os.Stdout}, nil
 | 
							return nopCloserSink{os.Stdout}, nil
 | 
				
			||||||
	case "stderr":
 | 
						case "stderr":
 | 
				
			||||||
		return nopCloserSink{os.Stderr}, nil
 | 
							return nopCloserSink{os.Stderr}, nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return os.OpenFile(u.Path, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0666)
 | 
						return sr.openFile(path, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0o666)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func normalizeScheme(s string) (string, error) {
 | 
					func normalizeScheme(s string) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										85
									
								
								vendor/go.uber.org/zap/stacktrace.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										85
									
								
								vendor/go.uber.org/zap/stacktrace.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,85 +0,0 @@
 | 
				
			|||||||
// Copyright (c) 2016 Uber Technologies, Inc.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package zap
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"runtime"
 | 
					 | 
				
			||||||
	"sync"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	"go.uber.org/zap/internal/bufferpool"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var (
 | 
					 | 
				
			||||||
	_stacktracePool = sync.Pool{
 | 
					 | 
				
			||||||
		New: func() interface{} {
 | 
					 | 
				
			||||||
			return newProgramCounters(64)
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func takeStacktrace(skip int) string {
 | 
					 | 
				
			||||||
	buffer := bufferpool.Get()
 | 
					 | 
				
			||||||
	defer buffer.Free()
 | 
					 | 
				
			||||||
	programCounters := _stacktracePool.Get().(*programCounters)
 | 
					 | 
				
			||||||
	defer _stacktracePool.Put(programCounters)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var numFrames int
 | 
					 | 
				
			||||||
	for {
 | 
					 | 
				
			||||||
		// Skip the call to runtime.Callers and takeStacktrace so that the
 | 
					 | 
				
			||||||
		// program counters start at the caller of takeStacktrace.
 | 
					 | 
				
			||||||
		numFrames = runtime.Callers(skip+2, programCounters.pcs)
 | 
					 | 
				
			||||||
		if numFrames < len(programCounters.pcs) {
 | 
					 | 
				
			||||||
			break
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		// Don't put the too-short counter slice back into the pool; this lets
 | 
					 | 
				
			||||||
		// the pool adjust if we consistently take deep stacktraces.
 | 
					 | 
				
			||||||
		programCounters = newProgramCounters(len(programCounters.pcs) * 2)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	i := 0
 | 
					 | 
				
			||||||
	frames := runtime.CallersFrames(programCounters.pcs[:numFrames])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Note: On the last iteration, frames.Next() returns false, with a valid
 | 
					 | 
				
			||||||
	// frame, but we ignore this frame. The last frame is a a runtime frame which
 | 
					 | 
				
			||||||
	// adds noise, since it's only either runtime.main or runtime.goexit.
 | 
					 | 
				
			||||||
	for frame, more := frames.Next(); more; frame, more = frames.Next() {
 | 
					 | 
				
			||||||
		if i != 0 {
 | 
					 | 
				
			||||||
			buffer.AppendByte('\n')
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		i++
 | 
					 | 
				
			||||||
		buffer.AppendString(frame.Function)
 | 
					 | 
				
			||||||
		buffer.AppendByte('\n')
 | 
					 | 
				
			||||||
		buffer.AppendByte('\t')
 | 
					 | 
				
			||||||
		buffer.AppendString(frame.File)
 | 
					 | 
				
			||||||
		buffer.AppendByte(':')
 | 
					 | 
				
			||||||
		buffer.AppendInt(int64(frame.Line))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return buffer.String()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type programCounters struct {
 | 
					 | 
				
			||||||
	pcs []uintptr
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func newProgramCounters(size int) *programCounters {
 | 
					 | 
				
			||||||
	return &programCounters{make([]uintptr, size)}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										166
									
								
								vendor/go.uber.org/zap/sugar.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										166
									
								
								vendor/go.uber.org/zap/sugar.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -31,6 +31,7 @@ import (
 | 
				
			|||||||
const (
 | 
					const (
 | 
				
			||||||
	_oddNumberErrMsg    = "Ignored key without a value."
 | 
						_oddNumberErrMsg    = "Ignored key without a value."
 | 
				
			||||||
	_nonStringKeyErrMsg = "Ignored key-value pairs with non-string keys."
 | 
						_nonStringKeyErrMsg = "Ignored key-value pairs with non-string keys."
 | 
				
			||||||
 | 
						_multipleErrMsg     = "Multiple errors without a key."
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// A SugaredLogger wraps the base Logger functionality in a slower, but less
 | 
					// A SugaredLogger wraps the base Logger functionality in a slower, but less
 | 
				
			||||||
@@ -38,10 +39,19 @@ const (
 | 
				
			|||||||
// method.
 | 
					// method.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Unlike the Logger, the SugaredLogger doesn't insist on structured logging.
 | 
					// Unlike the Logger, the SugaredLogger doesn't insist on structured logging.
 | 
				
			||||||
// For each log level, it exposes three methods: one for loosely-typed
 | 
					// For each log level, it exposes four methods:
 | 
				
			||||||
// structured logging, one for println-style formatting, and one for
 | 
					//
 | 
				
			||||||
// printf-style formatting. For example, SugaredLoggers can produce InfoLevel
 | 
					//   - methods named after the log level for log.Print-style logging
 | 
				
			||||||
// output with Infow ("info with" structured context), Info, or Infof.
 | 
					//   - methods ending in "w" for loosely-typed structured logging
 | 
				
			||||||
 | 
					//   - methods ending in "f" for log.Printf-style logging
 | 
				
			||||||
 | 
					//   - methods ending in "ln" for log.Println-style logging
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// For example, the methods for InfoLevel are:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	Info(...any)           Print-style logging
 | 
				
			||||||
 | 
					//	Infow(...any)          Structured logging (read as "info with")
 | 
				
			||||||
 | 
					//	Infof(string, ...any)  Printf-style logging
 | 
				
			||||||
 | 
					//	Infoln(...any)         Println-style logging
 | 
				
			||||||
type SugaredLogger struct {
 | 
					type SugaredLogger struct {
 | 
				
			||||||
	base *Logger
 | 
						base *Logger
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -61,12 +71,23 @@ func (s *SugaredLogger) Named(name string) *SugaredLogger {
 | 
				
			|||||||
	return &SugaredLogger{base: s.base.Named(name)}
 | 
						return &SugaredLogger{base: s.base.Named(name)}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// WithOptions clones the current SugaredLogger, applies the supplied Options,
 | 
				
			||||||
 | 
					// and returns the result. It's safe to use concurrently.
 | 
				
			||||||
 | 
					func (s *SugaredLogger) WithOptions(opts ...Option) *SugaredLogger {
 | 
				
			||||||
 | 
						base := s.base.clone()
 | 
				
			||||||
 | 
						for _, opt := range opts {
 | 
				
			||||||
 | 
							opt.apply(base)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return &SugaredLogger{base: base}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// With adds a variadic number of fields to the logging context. It accepts a
 | 
					// With adds a variadic number of fields to the logging context. It accepts a
 | 
				
			||||||
// mix of strongly-typed Field objects and loosely-typed key-value pairs. When
 | 
					// mix of strongly-typed Field objects and loosely-typed key-value pairs. When
 | 
				
			||||||
// processing pairs, the first element of the pair is used as the field key
 | 
					// processing pairs, the first element of the pair is used as the field key
 | 
				
			||||||
// and the second as the field value.
 | 
					// and the second as the field value.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// For example,
 | 
					// For example,
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
//	 sugaredLogger.With(
 | 
					//	 sugaredLogger.With(
 | 
				
			||||||
//	   "hello", "world",
 | 
					//	   "hello", "world",
 | 
				
			||||||
//	   "failure", errors.New("oh no"),
 | 
					//	   "failure", errors.New("oh no"),
 | 
				
			||||||
@@ -74,7 +95,9 @@ func (s *SugaredLogger) Named(name string) *SugaredLogger {
 | 
				
			|||||||
//	   "count", 42,
 | 
					//	   "count", 42,
 | 
				
			||||||
//	   "user", User{Name: "alice"},
 | 
					//	   "user", User{Name: "alice"},
 | 
				
			||||||
//	)
 | 
					//	)
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
// is the equivalent of
 | 
					// is the equivalent of
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
//	unsugared.With(
 | 
					//	unsugared.With(
 | 
				
			||||||
//	  String("hello", "world"),
 | 
					//	  String("hello", "world"),
 | 
				
			||||||
//	  String("failure", "oh no"),
 | 
					//	  String("failure", "oh no"),
 | 
				
			||||||
@@ -92,74 +115,95 @@ func (s *SugaredLogger) With(args ...interface{}) *SugaredLogger {
 | 
				
			|||||||
	return &SugaredLogger{base: s.base.With(s.sweetenFields(args)...)}
 | 
						return &SugaredLogger{base: s.base.With(s.sweetenFields(args)...)}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Debug uses fmt.Sprint to construct and log a message.
 | 
					// Level reports the minimum enabled level for this logger.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// For NopLoggers, this is [zapcore.InvalidLevel].
 | 
				
			||||||
 | 
					func (s *SugaredLogger) Level() zapcore.Level {
 | 
				
			||||||
 | 
						return zapcore.LevelOf(s.base.core)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Debug logs the provided arguments at [DebugLevel].
 | 
				
			||||||
 | 
					// Spaces are added between arguments when neither is a string.
 | 
				
			||||||
func (s *SugaredLogger) Debug(args ...interface{}) {
 | 
					func (s *SugaredLogger) Debug(args ...interface{}) {
 | 
				
			||||||
	s.log(DebugLevel, "", args, nil)
 | 
						s.log(DebugLevel, "", args, nil)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Info uses fmt.Sprint to construct and log a message.
 | 
					// Info logs the provided arguments at [InfoLevel].
 | 
				
			||||||
 | 
					// Spaces are added between arguments when neither is a string.
 | 
				
			||||||
func (s *SugaredLogger) Info(args ...interface{}) {
 | 
					func (s *SugaredLogger) Info(args ...interface{}) {
 | 
				
			||||||
	s.log(InfoLevel, "", args, nil)
 | 
						s.log(InfoLevel, "", args, nil)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Warn uses fmt.Sprint to construct and log a message.
 | 
					// Warn logs the provided arguments at [WarnLevel].
 | 
				
			||||||
 | 
					// Spaces are added between arguments when neither is a string.
 | 
				
			||||||
func (s *SugaredLogger) Warn(args ...interface{}) {
 | 
					func (s *SugaredLogger) Warn(args ...interface{}) {
 | 
				
			||||||
	s.log(WarnLevel, "", args, nil)
 | 
						s.log(WarnLevel, "", args, nil)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Error uses fmt.Sprint to construct and log a message.
 | 
					// Error logs the provided arguments at [ErrorLevel].
 | 
				
			||||||
 | 
					// Spaces are added between arguments when neither is a string.
 | 
				
			||||||
func (s *SugaredLogger) Error(args ...interface{}) {
 | 
					func (s *SugaredLogger) Error(args ...interface{}) {
 | 
				
			||||||
	s.log(ErrorLevel, "", args, nil)
 | 
						s.log(ErrorLevel, "", args, nil)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DPanic uses fmt.Sprint to construct and log a message. In development, the
 | 
					// DPanic logs the provided arguments at [DPanicLevel].
 | 
				
			||||||
// logger then panics. (See DPanicLevel for details.)
 | 
					// In development, the logger then panics. (See [DPanicLevel] for details.)
 | 
				
			||||||
 | 
					// Spaces are added between arguments when neither is a string.
 | 
				
			||||||
func (s *SugaredLogger) DPanic(args ...interface{}) {
 | 
					func (s *SugaredLogger) DPanic(args ...interface{}) {
 | 
				
			||||||
	s.log(DPanicLevel, "", args, nil)
 | 
						s.log(DPanicLevel, "", args, nil)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Panic uses fmt.Sprint to construct and log a message, then panics.
 | 
					// Panic constructs a message with the provided arguments and panics.
 | 
				
			||||||
 | 
					// Spaces are added between arguments when neither is a string.
 | 
				
			||||||
func (s *SugaredLogger) Panic(args ...interface{}) {
 | 
					func (s *SugaredLogger) Panic(args ...interface{}) {
 | 
				
			||||||
	s.log(PanicLevel, "", args, nil)
 | 
						s.log(PanicLevel, "", args, nil)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Fatal uses fmt.Sprint to construct and log a message, then calls os.Exit.
 | 
					// Fatal constructs a message with the provided arguments and calls os.Exit.
 | 
				
			||||||
 | 
					// Spaces are added between arguments when neither is a string.
 | 
				
			||||||
func (s *SugaredLogger) Fatal(args ...interface{}) {
 | 
					func (s *SugaredLogger) Fatal(args ...interface{}) {
 | 
				
			||||||
	s.log(FatalLevel, "", args, nil)
 | 
						s.log(FatalLevel, "", args, nil)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Debugf uses fmt.Sprintf to log a templated message.
 | 
					// Debugf formats the message according to the format specifier
 | 
				
			||||||
 | 
					// and logs it at [DebugLevel].
 | 
				
			||||||
func (s *SugaredLogger) Debugf(template string, args ...interface{}) {
 | 
					func (s *SugaredLogger) Debugf(template string, args ...interface{}) {
 | 
				
			||||||
	s.log(DebugLevel, template, args, nil)
 | 
						s.log(DebugLevel, template, args, nil)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Infof uses fmt.Sprintf to log a templated message.
 | 
					// Infof formats the message according to the format specifier
 | 
				
			||||||
 | 
					// and logs it at [InfoLevel].
 | 
				
			||||||
func (s *SugaredLogger) Infof(template string, args ...interface{}) {
 | 
					func (s *SugaredLogger) Infof(template string, args ...interface{}) {
 | 
				
			||||||
	s.log(InfoLevel, template, args, nil)
 | 
						s.log(InfoLevel, template, args, nil)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Warnf uses fmt.Sprintf to log a templated message.
 | 
					// Warnf formats the message according to the format specifier
 | 
				
			||||||
 | 
					// and logs it at [WarnLevel].
 | 
				
			||||||
func (s *SugaredLogger) Warnf(template string, args ...interface{}) {
 | 
					func (s *SugaredLogger) Warnf(template string, args ...interface{}) {
 | 
				
			||||||
	s.log(WarnLevel, template, args, nil)
 | 
						s.log(WarnLevel, template, args, nil)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Errorf uses fmt.Sprintf to log a templated message.
 | 
					// Errorf formats the message according to the format specifier
 | 
				
			||||||
 | 
					// and logs it at [ErrorLevel].
 | 
				
			||||||
func (s *SugaredLogger) Errorf(template string, args ...interface{}) {
 | 
					func (s *SugaredLogger) Errorf(template string, args ...interface{}) {
 | 
				
			||||||
	s.log(ErrorLevel, template, args, nil)
 | 
						s.log(ErrorLevel, template, args, nil)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DPanicf uses fmt.Sprintf to log a templated message. In development, the
 | 
					// DPanicf formats the message according to the format specifier
 | 
				
			||||||
// logger then panics. (See DPanicLevel for details.)
 | 
					// and logs it at [DPanicLevel].
 | 
				
			||||||
 | 
					// In development, the logger then panics. (See [DPanicLevel] for details.)
 | 
				
			||||||
func (s *SugaredLogger) DPanicf(template string, args ...interface{}) {
 | 
					func (s *SugaredLogger) DPanicf(template string, args ...interface{}) {
 | 
				
			||||||
	s.log(DPanicLevel, template, args, nil)
 | 
						s.log(DPanicLevel, template, args, nil)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Panicf uses fmt.Sprintf to log a templated message, then panics.
 | 
					// Panicf formats the message according to the format specifier
 | 
				
			||||||
 | 
					// and panics.
 | 
				
			||||||
func (s *SugaredLogger) Panicf(template string, args ...interface{}) {
 | 
					func (s *SugaredLogger) Panicf(template string, args ...interface{}) {
 | 
				
			||||||
	s.log(PanicLevel, template, args, nil)
 | 
						s.log(PanicLevel, template, args, nil)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Fatalf uses fmt.Sprintf to log a templated message, then calls os.Exit.
 | 
					// Fatalf formats the message according to the format specifier
 | 
				
			||||||
 | 
					// and calls os.Exit.
 | 
				
			||||||
func (s *SugaredLogger) Fatalf(template string, args ...interface{}) {
 | 
					func (s *SugaredLogger) Fatalf(template string, args ...interface{}) {
 | 
				
			||||||
	s.log(FatalLevel, template, args, nil)
 | 
						s.log(FatalLevel, template, args, nil)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -168,6 +212,7 @@ func (s *SugaredLogger) Fatalf(template string, args ...interface{}) {
 | 
				
			|||||||
// pairs are treated as they are in With.
 | 
					// pairs are treated as they are in With.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// When debug-level logging is disabled, this is much faster than
 | 
					// When debug-level logging is disabled, this is much faster than
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
//	s.With(keysAndValues).Debug(msg)
 | 
					//	s.With(keysAndValues).Debug(msg)
 | 
				
			||||||
func (s *SugaredLogger) Debugw(msg string, keysAndValues ...interface{}) {
 | 
					func (s *SugaredLogger) Debugw(msg string, keysAndValues ...interface{}) {
 | 
				
			||||||
	s.log(DebugLevel, msg, nil, keysAndValues)
 | 
						s.log(DebugLevel, msg, nil, keysAndValues)
 | 
				
			||||||
@@ -210,11 +255,55 @@ func (s *SugaredLogger) Fatalw(msg string, keysAndValues ...interface{}) {
 | 
				
			|||||||
	s.log(FatalLevel, msg, nil, keysAndValues)
 | 
						s.log(FatalLevel, msg, nil, keysAndValues)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Debugln logs a message at [DebugLevel].
 | 
				
			||||||
 | 
					// Spaces are always added between arguments.
 | 
				
			||||||
 | 
					func (s *SugaredLogger) Debugln(args ...interface{}) {
 | 
				
			||||||
 | 
						s.logln(DebugLevel, args, nil)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Infoln logs a message at [InfoLevel].
 | 
				
			||||||
 | 
					// Spaces are always added between arguments.
 | 
				
			||||||
 | 
					func (s *SugaredLogger) Infoln(args ...interface{}) {
 | 
				
			||||||
 | 
						s.logln(InfoLevel, args, nil)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Warnln logs a message at [WarnLevel].
 | 
				
			||||||
 | 
					// Spaces are always added between arguments.
 | 
				
			||||||
 | 
					func (s *SugaredLogger) Warnln(args ...interface{}) {
 | 
				
			||||||
 | 
						s.logln(WarnLevel, args, nil)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Errorln logs a message at [ErrorLevel].
 | 
				
			||||||
 | 
					// Spaces are always added between arguments.
 | 
				
			||||||
 | 
					func (s *SugaredLogger) Errorln(args ...interface{}) {
 | 
				
			||||||
 | 
						s.logln(ErrorLevel, args, nil)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DPanicln logs a message at [DPanicLevel].
 | 
				
			||||||
 | 
					// In development, the logger then panics. (See [DPanicLevel] for details.)
 | 
				
			||||||
 | 
					// Spaces are always added between arguments.
 | 
				
			||||||
 | 
					func (s *SugaredLogger) DPanicln(args ...interface{}) {
 | 
				
			||||||
 | 
						s.logln(DPanicLevel, args, nil)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Panicln logs a message at [PanicLevel] and panics.
 | 
				
			||||||
 | 
					// Spaces are always added between arguments.
 | 
				
			||||||
 | 
					func (s *SugaredLogger) Panicln(args ...interface{}) {
 | 
				
			||||||
 | 
						s.logln(PanicLevel, args, nil)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Fatalln logs a message at [FatalLevel] and calls os.Exit.
 | 
				
			||||||
 | 
					// Spaces are always added between arguments.
 | 
				
			||||||
 | 
					func (s *SugaredLogger) Fatalln(args ...interface{}) {
 | 
				
			||||||
 | 
						s.logln(FatalLevel, args, nil)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Sync flushes any buffered log entries.
 | 
					// Sync flushes any buffered log entries.
 | 
				
			||||||
func (s *SugaredLogger) Sync() error {
 | 
					func (s *SugaredLogger) Sync() error {
 | 
				
			||||||
	return s.base.Sync()
 | 
						return s.base.Sync()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// log message with Sprint, Sprintf, or neither.
 | 
				
			||||||
func (s *SugaredLogger) log(lvl zapcore.Level, template string, fmtArgs []interface{}, context []interface{}) {
 | 
					func (s *SugaredLogger) log(lvl zapcore.Level, template string, fmtArgs []interface{}, context []interface{}) {
 | 
				
			||||||
	// If logging at this level is completely disabled, skip the overhead of
 | 
						// If logging at this level is completely disabled, skip the overhead of
 | 
				
			||||||
	// string formatting.
 | 
						// string formatting.
 | 
				
			||||||
@@ -228,6 +317,18 @@ func (s *SugaredLogger) log(lvl zapcore.Level, template string, fmtArgs []interf
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// logln message with Sprintln
 | 
				
			||||||
 | 
					func (s *SugaredLogger) logln(lvl zapcore.Level, fmtArgs []interface{}, context []interface{}) {
 | 
				
			||||||
 | 
						if lvl < DPanicLevel && !s.base.Core().Enabled(lvl) {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						msg := getMessageln(fmtArgs)
 | 
				
			||||||
 | 
						if ce := s.base.Check(lvl, msg); ce != nil {
 | 
				
			||||||
 | 
							ce.Write(s.sweetenFields(context)...)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// getMessage format with Sprint, Sprintf, or neither.
 | 
					// getMessage format with Sprint, Sprintf, or neither.
 | 
				
			||||||
func getMessage(template string, fmtArgs []interface{}) string {
 | 
					func getMessage(template string, fmtArgs []interface{}) string {
 | 
				
			||||||
	if len(fmtArgs) == 0 {
 | 
						if len(fmtArgs) == 0 {
 | 
				
			||||||
@@ -246,15 +347,24 @@ func getMessage(template string, fmtArgs []interface{}) string {
 | 
				
			|||||||
	return fmt.Sprint(fmtArgs...)
 | 
						return fmt.Sprint(fmtArgs...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// getMessageln format with Sprintln.
 | 
				
			||||||
 | 
					func getMessageln(fmtArgs []interface{}) string {
 | 
				
			||||||
 | 
						msg := fmt.Sprintln(fmtArgs...)
 | 
				
			||||||
 | 
						return msg[:len(msg)-1]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s *SugaredLogger) sweetenFields(args []interface{}) []Field {
 | 
					func (s *SugaredLogger) sweetenFields(args []interface{}) []Field {
 | 
				
			||||||
	if len(args) == 0 {
 | 
						if len(args) == 0 {
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var (
 | 
				
			||||||
		// Allocate enough space for the worst case; if users pass only structured
 | 
							// Allocate enough space for the worst case; if users pass only structured
 | 
				
			||||||
		// fields, we shouldn't penalize them with extra allocations.
 | 
							// fields, we shouldn't penalize them with extra allocations.
 | 
				
			||||||
	fields := make([]Field, 0, len(args))
 | 
							fields    = make([]Field, 0, len(args))
 | 
				
			||||||
	var invalid invalidPairs
 | 
							invalid   invalidPairs
 | 
				
			||||||
 | 
							seenError bool
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for i := 0; i < len(args); {
 | 
						for i := 0; i < len(args); {
 | 
				
			||||||
		// This is a strongly-typed field. Consume it and move on.
 | 
							// This is a strongly-typed field. Consume it and move on.
 | 
				
			||||||
@@ -264,6 +374,18 @@ func (s *SugaredLogger) sweetenFields(args []interface{}) []Field {
 | 
				
			|||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// If it is an error, consume it and move on.
 | 
				
			||||||
 | 
							if err, ok := args[i].(error); ok {
 | 
				
			||||||
 | 
								if !seenError {
 | 
				
			||||||
 | 
									seenError = true
 | 
				
			||||||
 | 
									fields = append(fields, Error(err))
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									s.base.Error(_multipleErrMsg, Error(err))
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								i++
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Make sure this element isn't a dangling key.
 | 
							// Make sure this element isn't a dangling key.
 | 
				
			||||||
		if i == len(args)-1 {
 | 
							if i == len(args)-1 {
 | 
				
			||||||
			s.base.Error(_oddNumberErrMsg, Any("ignored", args[i]))
 | 
								s.base.Error(_oddNumberErrMsg, Any("ignored", args[i]))
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										23
									
								
								vendor/go.uber.org/zap/writer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								vendor/go.uber.org/zap/writer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
// Copyright (c) 2016 Uber Technologies, Inc.
 | 
					// Copyright (c) 2016-2022 Uber Technologies, Inc.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					// Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
// of this software and associated documentation files (the "Software"), to deal
 | 
					// of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
@@ -23,7 +23,6 @@ package zap
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"io/ioutil"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"go.uber.org/zap/zapcore"
 | 
						"go.uber.org/zap/zapcore"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -49,40 +48,40 @@ import (
 | 
				
			|||||||
// os.Stdout and os.Stderr. When specified without a scheme, relative file
 | 
					// os.Stdout and os.Stderr. When specified without a scheme, relative file
 | 
				
			||||||
// paths also work.
 | 
					// paths also work.
 | 
				
			||||||
func Open(paths ...string) (zapcore.WriteSyncer, func(), error) {
 | 
					func Open(paths ...string) (zapcore.WriteSyncer, func(), error) {
 | 
				
			||||||
	writers, close, err := open(paths)
 | 
						writers, closeAll, err := open(paths)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, nil, err
 | 
							return nil, nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	writer := CombineWriteSyncers(writers...)
 | 
						writer := CombineWriteSyncers(writers...)
 | 
				
			||||||
	return writer, close, nil
 | 
						return writer, closeAll, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func open(paths []string) ([]zapcore.WriteSyncer, func(), error) {
 | 
					func open(paths []string) ([]zapcore.WriteSyncer, func(), error) {
 | 
				
			||||||
	writers := make([]zapcore.WriteSyncer, 0, len(paths))
 | 
						writers := make([]zapcore.WriteSyncer, 0, len(paths))
 | 
				
			||||||
	closers := make([]io.Closer, 0, len(paths))
 | 
						closers := make([]io.Closer, 0, len(paths))
 | 
				
			||||||
	close := func() {
 | 
						closeAll := func() {
 | 
				
			||||||
		for _, c := range closers {
 | 
							for _, c := range closers {
 | 
				
			||||||
			c.Close()
 | 
								_ = c.Close()
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var openErr error
 | 
						var openErr error
 | 
				
			||||||
	for _, path := range paths {
 | 
						for _, path := range paths {
 | 
				
			||||||
		sink, err := newSink(path)
 | 
							sink, err := _sinkRegistry.newSink(path)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			openErr = multierr.Append(openErr, fmt.Errorf("couldn't open sink %q: %v", path, err))
 | 
								openErr = multierr.Append(openErr, fmt.Errorf("open sink %q: %w", path, err))
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		writers = append(writers, sink)
 | 
							writers = append(writers, sink)
 | 
				
			||||||
		closers = append(closers, sink)
 | 
							closers = append(closers, sink)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if openErr != nil {
 | 
						if openErr != nil {
 | 
				
			||||||
		close()
 | 
							closeAll()
 | 
				
			||||||
		return writers, nil, openErr
 | 
							return nil, nil, openErr
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return writers, close, nil
 | 
						return writers, closeAll, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CombineWriteSyncers is a utility that combines multiple WriteSyncers into a
 | 
					// CombineWriteSyncers is a utility that combines multiple WriteSyncers into a
 | 
				
			||||||
@@ -93,7 +92,7 @@ func open(paths []string) ([]zapcore.WriteSyncer, func(), error) {
 | 
				
			|||||||
// using zapcore.NewMultiWriteSyncer and zapcore.Lock individually.
 | 
					// using zapcore.NewMultiWriteSyncer and zapcore.Lock individually.
 | 
				
			||||||
func CombineWriteSyncers(writers ...zapcore.WriteSyncer) zapcore.WriteSyncer {
 | 
					func CombineWriteSyncers(writers ...zapcore.WriteSyncer) zapcore.WriteSyncer {
 | 
				
			||||||
	if len(writers) == 0 {
 | 
						if len(writers) == 0 {
 | 
				
			||||||
		return zapcore.AddSync(ioutil.Discard)
 | 
							return zapcore.AddSync(io.Discard)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return zapcore.Lock(zapcore.NewMultiWriteSyncer(writers...))
 | 
						return zapcore.Lock(zapcore.NewMultiWriteSyncer(writers...))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										31
									
								
								vendor/go.uber.org/zap/zapcore/buffered_write_syncer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								vendor/go.uber.org/zap/zapcore/buffered_write_syncer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -43,6 +43,37 @@ const (
 | 
				
			|||||||
//
 | 
					//
 | 
				
			||||||
// BufferedWriteSyncer is safe for concurrent use. You don't need to use
 | 
					// BufferedWriteSyncer is safe for concurrent use. You don't need to use
 | 
				
			||||||
// zapcore.Lock for WriteSyncers with BufferedWriteSyncer.
 | 
					// zapcore.Lock for WriteSyncers with BufferedWriteSyncer.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// To set up a BufferedWriteSyncer, construct a WriteSyncer for your log
 | 
				
			||||||
 | 
					// destination (*os.File is a valid WriteSyncer), wrap it with
 | 
				
			||||||
 | 
					// BufferedWriteSyncer, and defer a Stop() call for when you no longer need the
 | 
				
			||||||
 | 
					// object.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	 func main() {
 | 
				
			||||||
 | 
					//	   ws := ... // your log destination
 | 
				
			||||||
 | 
					//	   bws := &zapcore.BufferedWriteSyncer{WS: ws}
 | 
				
			||||||
 | 
					//	   defer bws.Stop()
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	   // ...
 | 
				
			||||||
 | 
					//	   core := zapcore.NewCore(enc, bws, lvl)
 | 
				
			||||||
 | 
					//	   logger := zap.New(core)
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	   // ...
 | 
				
			||||||
 | 
					//	}
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// By default, a BufferedWriteSyncer will buffer up to 256 kilobytes of logs,
 | 
				
			||||||
 | 
					// waiting at most 30 seconds between flushes.
 | 
				
			||||||
 | 
					// You can customize these parameters by setting the Size or FlushInterval
 | 
				
			||||||
 | 
					// fields.
 | 
				
			||||||
 | 
					// For example, the following buffers up to 512 kB of logs before flushing them
 | 
				
			||||||
 | 
					// to Stderr, with a maximum of one minute between each flush.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	ws := &BufferedWriteSyncer{
 | 
				
			||||||
 | 
					//	  WS:            os.Stderr,
 | 
				
			||||||
 | 
					//	  Size:          512 * 1024, // 512 kB
 | 
				
			||||||
 | 
					//	  FlushInterval: time.Minute,
 | 
				
			||||||
 | 
					//	}
 | 
				
			||||||
 | 
					//	defer ws.Stop()
 | 
				
			||||||
type BufferedWriteSyncer struct {
 | 
					type BufferedWriteSyncer struct {
 | 
				
			||||||
	// WS is the WriteSyncer around which BufferedWriteSyncer will buffer
 | 
						// WS is the WriteSyncer around which BufferedWriteSyncer will buffer
 | 
				
			||||||
	// writes.
 | 
						// writes.
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								vendor/go.uber.org/zap/zapcore/clock.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/go.uber.org/zap/zapcore/clock.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -20,9 +20,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package zapcore
 | 
					package zapcore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import "time"
 | 
				
			||||||
	"time"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DefaultClock is the default clock used by Zap in operations that require
 | 
					// DefaultClock is the default clock used by Zap in operations that require
 | 
				
			||||||
// time. This clock uses the system clock for all operations.
 | 
					// time. This clock uses the system clock for all operations.
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										16
									
								
								vendor/go.uber.org/zap/zapcore/console_encoder.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								vendor/go.uber.org/zap/zapcore/console_encoder.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -22,20 +22,20 @@ package zapcore
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"sync"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"go.uber.org/zap/buffer"
 | 
						"go.uber.org/zap/buffer"
 | 
				
			||||||
	"go.uber.org/zap/internal/bufferpool"
 | 
						"go.uber.org/zap/internal/bufferpool"
 | 
				
			||||||
 | 
						"go.uber.org/zap/internal/pool"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var _sliceEncoderPool = sync.Pool{
 | 
					var _sliceEncoderPool = pool.New(func() *sliceArrayEncoder {
 | 
				
			||||||
	New: func() interface{} {
 | 
						return &sliceArrayEncoder{
 | 
				
			||||||
		return &sliceArrayEncoder{elems: make([]interface{}, 0, 2)}
 | 
							elems: make([]interface{}, 0, 2),
 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getSliceEncoder() *sliceArrayEncoder {
 | 
					func getSliceEncoder() *sliceArrayEncoder {
 | 
				
			||||||
	return _sliceEncoderPool.Get().(*sliceArrayEncoder)
 | 
						return _sliceEncoderPool.Get()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func putSliceEncoder(e *sliceArrayEncoder) {
 | 
					func putSliceEncoder(e *sliceArrayEncoder) {
 | 
				
			||||||
@@ -125,11 +125,7 @@ func (c consoleEncoder) EncodeEntry(ent Entry, fields []Field) (*buffer.Buffer,
 | 
				
			|||||||
		line.AppendString(ent.Stack)
 | 
							line.AppendString(ent.Stack)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if c.LineEnding != "" {
 | 
					 | 
				
			||||||
	line.AppendString(c.LineEnding)
 | 
						line.AppendString(c.LineEnding)
 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		line.AppendString(DefaultLineEnding)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return line, nil
 | 
						return line, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										15
									
								
								vendor/go.uber.org/zap/zapcore/core.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								vendor/go.uber.org/zap/zapcore/core.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -69,6 +69,15 @@ type ioCore struct {
 | 
				
			|||||||
	out WriteSyncer
 | 
						out WriteSyncer
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var (
 | 
				
			||||||
 | 
						_ Core           = (*ioCore)(nil)
 | 
				
			||||||
 | 
						_ leveledEnabler = (*ioCore)(nil)
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *ioCore) Level() Level {
 | 
				
			||||||
 | 
						return LevelOf(c.LevelEnabler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *ioCore) With(fields []Field) Core {
 | 
					func (c *ioCore) With(fields []Field) Core {
 | 
				
			||||||
	clone := c.clone()
 | 
						clone := c.clone()
 | 
				
			||||||
	addFields(clone.enc, fields)
 | 
						addFields(clone.enc, fields)
 | 
				
			||||||
@@ -93,9 +102,9 @@ func (c *ioCore) Write(ent Entry, fields []Field) error {
 | 
				
			|||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if ent.Level > ErrorLevel {
 | 
						if ent.Level > ErrorLevel {
 | 
				
			||||||
		// Since we may be crashing the program, sync the output. Ignore Sync
 | 
							// Since we may be crashing the program, sync the output.
 | 
				
			||||||
		// errors, pending a clean solution to issue #370.
 | 
							// Ignore Sync errors, pending a clean solution to issue #370.
 | 
				
			||||||
		c.Sync()
 | 
							_ = c.Sync()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										8
									
								
								vendor/go.uber.org/zap/zapcore/encoder.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/go.uber.org/zap/zapcore/encoder.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -22,6 +22,7 @@ package zapcore
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
 | 
						"io"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"go.uber.org/zap/buffer"
 | 
						"go.uber.org/zap/buffer"
 | 
				
			||||||
@@ -187,9 +188,12 @@ func (e *TimeEncoder) UnmarshalText(text []byte) error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// UnmarshalYAML unmarshals YAML to a TimeEncoder.
 | 
					// UnmarshalYAML unmarshals YAML to a TimeEncoder.
 | 
				
			||||||
// If value is an object with a "layout" field, it will be unmarshaled to  TimeEncoder with given layout.
 | 
					// If value is an object with a "layout" field, it will be unmarshaled to  TimeEncoder with given layout.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
//	timeEncoder:
 | 
					//	timeEncoder:
 | 
				
			||||||
//	  layout: 06/01/02 03:04pm
 | 
					//	  layout: 06/01/02 03:04pm
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
// If value is string, it uses UnmarshalText.
 | 
					// If value is string, it uses UnmarshalText.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
//	timeEncoder: iso8601
 | 
					//	timeEncoder: iso8601
 | 
				
			||||||
func (e *TimeEncoder) UnmarshalYAML(unmarshal func(interface{}) error) error {
 | 
					func (e *TimeEncoder) UnmarshalYAML(unmarshal func(interface{}) error) error {
 | 
				
			||||||
	var o struct {
 | 
						var o struct {
 | 
				
			||||||
@@ -319,6 +323,7 @@ type EncoderConfig struct {
 | 
				
			|||||||
	CallerKey      string `json:"callerKey" yaml:"callerKey"`
 | 
						CallerKey      string `json:"callerKey" yaml:"callerKey"`
 | 
				
			||||||
	FunctionKey    string `json:"functionKey" yaml:"functionKey"`
 | 
						FunctionKey    string `json:"functionKey" yaml:"functionKey"`
 | 
				
			||||||
	StacktraceKey  string `json:"stacktraceKey" yaml:"stacktraceKey"`
 | 
						StacktraceKey  string `json:"stacktraceKey" yaml:"stacktraceKey"`
 | 
				
			||||||
 | 
						SkipLineEnding bool   `json:"skipLineEnding" yaml:"skipLineEnding"`
 | 
				
			||||||
	LineEnding     string `json:"lineEnding" yaml:"lineEnding"`
 | 
						LineEnding     string `json:"lineEnding" yaml:"lineEnding"`
 | 
				
			||||||
	// Configure the primitive representations of common complex types. For
 | 
						// Configure the primitive representations of common complex types. For
 | 
				
			||||||
	// example, some users may want all time.Times serialized as floating-point
 | 
						// example, some users may want all time.Times serialized as floating-point
 | 
				
			||||||
@@ -330,6 +335,9 @@ type EncoderConfig struct {
 | 
				
			|||||||
	// Unlike the other primitive type encoders, EncodeName is optional. The
 | 
						// Unlike the other primitive type encoders, EncodeName is optional. The
 | 
				
			||||||
	// zero value falls back to FullNameEncoder.
 | 
						// zero value falls back to FullNameEncoder.
 | 
				
			||||||
	EncodeName NameEncoder `json:"nameEncoder" yaml:"nameEncoder"`
 | 
						EncodeName NameEncoder `json:"nameEncoder" yaml:"nameEncoder"`
 | 
				
			||||||
 | 
						// Configure the encoder for interface{} type objects.
 | 
				
			||||||
 | 
						// If not provided, objects are encoded using json.Encoder
 | 
				
			||||||
 | 
						NewReflectedEncoder func(io.Writer) ReflectedEncoder `json:"-" yaml:"-"`
 | 
				
			||||||
	// Configures the field separator used by the console encoder. Defaults
 | 
						// Configures the field separator used by the console encoder. Defaults
 | 
				
			||||||
	// to tab.
 | 
						// to tab.
 | 
				
			||||||
	ConsoleSeparator string `json:"consoleSeparator" yaml:"consoleSeparator"`
 | 
						ConsoleSeparator string `json:"consoleSeparator" yaml:"consoleSeparator"`
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										86
									
								
								vendor/go.uber.org/zap/zapcore/entry.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										86
									
								
								vendor/go.uber.org/zap/zapcore/entry.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -24,26 +24,23 @@ import (
 | 
				
			|||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"runtime"
 | 
						"runtime"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"sync"
 | 
					 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"go.uber.org/multierr"
 | 
				
			||||||
	"go.uber.org/zap/internal/bufferpool"
 | 
						"go.uber.org/zap/internal/bufferpool"
 | 
				
			||||||
	"go.uber.org/zap/internal/exit"
 | 
						"go.uber.org/zap/internal/exit"
 | 
				
			||||||
 | 
						"go.uber.org/zap/internal/pool"
 | 
				
			||||||
	"go.uber.org/multierr"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var _cePool = pool.New(func() *CheckedEntry {
 | 
				
			||||||
	_cePool = sync.Pool{New: func() interface{} {
 | 
					 | 
				
			||||||
	// Pre-allocate some space for cores.
 | 
						// Pre-allocate some space for cores.
 | 
				
			||||||
	return &CheckedEntry{
 | 
						return &CheckedEntry{
 | 
				
			||||||
		cores: make([]Core, 4),
 | 
							cores: make([]Core, 4),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	}}
 | 
					})
 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getCheckedEntry() *CheckedEntry {
 | 
					func getCheckedEntry() *CheckedEntry {
 | 
				
			||||||
	ce := _cePool.Get().(*CheckedEntry)
 | 
						ce := _cePool.Get()
 | 
				
			||||||
	ce.reset()
 | 
						ce.reset()
 | 
				
			||||||
	return ce
 | 
						return ce
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -152,6 +149,27 @@ type Entry struct {
 | 
				
			|||||||
	Stack      string
 | 
						Stack      string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// CheckWriteHook is a custom action that may be executed after an entry is
 | 
				
			||||||
 | 
					// written.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Register one on a CheckedEntry with the After method.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//	if ce := logger.Check(...); ce != nil {
 | 
				
			||||||
 | 
					//	  ce = ce.After(hook)
 | 
				
			||||||
 | 
					//	  ce.Write(...)
 | 
				
			||||||
 | 
					//	}
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// You can configure the hook for Fatal log statements at the logger level with
 | 
				
			||||||
 | 
					// the zap.WithFatalHook option.
 | 
				
			||||||
 | 
					type CheckWriteHook interface {
 | 
				
			||||||
 | 
						// OnWrite is invoked with the CheckedEntry that was written and a list
 | 
				
			||||||
 | 
						// of fields added with that entry.
 | 
				
			||||||
 | 
						//
 | 
				
			||||||
 | 
						// The list of fields DOES NOT include fields that were already added
 | 
				
			||||||
 | 
						// to the logger with the With method.
 | 
				
			||||||
 | 
						OnWrite(*CheckedEntry, []Field)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CheckWriteAction indicates what action to take after a log entry is
 | 
					// CheckWriteAction indicates what action to take after a log entry is
 | 
				
			||||||
// processed. Actions are ordered in increasing severity.
 | 
					// processed. Actions are ordered in increasing severity.
 | 
				
			||||||
type CheckWriteAction uint8
 | 
					type CheckWriteAction uint8
 | 
				
			||||||
@@ -164,21 +182,36 @@ const (
 | 
				
			|||||||
	WriteThenGoexit
 | 
						WriteThenGoexit
 | 
				
			||||||
	// WriteThenPanic causes a panic after Write.
 | 
						// WriteThenPanic causes a panic after Write.
 | 
				
			||||||
	WriteThenPanic
 | 
						WriteThenPanic
 | 
				
			||||||
	// WriteThenFatal causes a fatal os.Exit after Write.
 | 
						// WriteThenFatal causes an os.Exit(1) after Write.
 | 
				
			||||||
	WriteThenFatal
 | 
						WriteThenFatal
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// OnWrite implements the OnWrite method to keep CheckWriteAction compatible
 | 
				
			||||||
 | 
					// with the new CheckWriteHook interface which deprecates CheckWriteAction.
 | 
				
			||||||
 | 
					func (a CheckWriteAction) OnWrite(ce *CheckedEntry, _ []Field) {
 | 
				
			||||||
 | 
						switch a {
 | 
				
			||||||
 | 
						case WriteThenGoexit:
 | 
				
			||||||
 | 
							runtime.Goexit()
 | 
				
			||||||
 | 
						case WriteThenPanic:
 | 
				
			||||||
 | 
							panic(ce.Message)
 | 
				
			||||||
 | 
						case WriteThenFatal:
 | 
				
			||||||
 | 
							exit.With(1)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var _ CheckWriteHook = CheckWriteAction(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CheckedEntry is an Entry together with a collection of Cores that have
 | 
					// CheckedEntry is an Entry together with a collection of Cores that have
 | 
				
			||||||
// already agreed to log it.
 | 
					// already agreed to log it.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// CheckedEntry references should be created by calling AddCore or Should on a
 | 
					// CheckedEntry references should be created by calling AddCore or After on a
 | 
				
			||||||
// nil *CheckedEntry. References are returned to a pool after Write, and MUST
 | 
					// nil *CheckedEntry. References are returned to a pool after Write, and MUST
 | 
				
			||||||
// NOT be retained after calling their Write method.
 | 
					// NOT be retained after calling their Write method.
 | 
				
			||||||
type CheckedEntry struct {
 | 
					type CheckedEntry struct {
 | 
				
			||||||
	Entry
 | 
						Entry
 | 
				
			||||||
	ErrorOutput WriteSyncer
 | 
						ErrorOutput WriteSyncer
 | 
				
			||||||
	dirty       bool // best-effort detection of pool misuse
 | 
						dirty       bool // best-effort detection of pool misuse
 | 
				
			||||||
	should      CheckWriteAction
 | 
						after       CheckWriteHook
 | 
				
			||||||
	cores       []Core
 | 
						cores       []Core
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -186,7 +219,7 @@ func (ce *CheckedEntry) reset() {
 | 
				
			|||||||
	ce.Entry = Entry{}
 | 
						ce.Entry = Entry{}
 | 
				
			||||||
	ce.ErrorOutput = nil
 | 
						ce.ErrorOutput = nil
 | 
				
			||||||
	ce.dirty = false
 | 
						ce.dirty = false
 | 
				
			||||||
	ce.should = WriteThenNoop
 | 
						ce.after = nil
 | 
				
			||||||
	for i := range ce.cores {
 | 
						for i := range ce.cores {
 | 
				
			||||||
		// don't keep references to cores
 | 
							// don't keep references to cores
 | 
				
			||||||
		ce.cores[i] = nil
 | 
							ce.cores[i] = nil
 | 
				
			||||||
@@ -209,7 +242,7 @@ func (ce *CheckedEntry) Write(fields ...Field) {
 | 
				
			|||||||
			// CheckedEntry is being used after it was returned to the pool,
 | 
								// CheckedEntry is being used after it was returned to the pool,
 | 
				
			||||||
			// the message may be an amalgamation from multiple call sites.
 | 
								// the message may be an amalgamation from multiple call sites.
 | 
				
			||||||
			fmt.Fprintf(ce.ErrorOutput, "%v Unsafe CheckedEntry re-use near Entry %+v.\n", ce.Time, ce.Entry)
 | 
								fmt.Fprintf(ce.ErrorOutput, "%v Unsafe CheckedEntry re-use near Entry %+v.\n", ce.Time, ce.Entry)
 | 
				
			||||||
			ce.ErrorOutput.Sync()
 | 
								_ = ce.ErrorOutput.Sync() // ignore error
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -221,20 +254,14 @@ func (ce *CheckedEntry) Write(fields ...Field) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	if err != nil && ce.ErrorOutput != nil {
 | 
						if err != nil && ce.ErrorOutput != nil {
 | 
				
			||||||
		fmt.Fprintf(ce.ErrorOutput, "%v write error: %v\n", ce.Time, err)
 | 
							fmt.Fprintf(ce.ErrorOutput, "%v write error: %v\n", ce.Time, err)
 | 
				
			||||||
		ce.ErrorOutput.Sync()
 | 
							_ = ce.ErrorOutput.Sync() // ignore error
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	should, msg := ce.should, ce.Message
 | 
						hook := ce.after
 | 
				
			||||||
 | 
						if hook != nil {
 | 
				
			||||||
 | 
							hook.OnWrite(ce, fields)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	putCheckedEntry(ce)
 | 
						putCheckedEntry(ce)
 | 
				
			||||||
 | 
					 | 
				
			||||||
	switch should {
 | 
					 | 
				
			||||||
	case WriteThenPanic:
 | 
					 | 
				
			||||||
		panic(msg)
 | 
					 | 
				
			||||||
	case WriteThenFatal:
 | 
					 | 
				
			||||||
		exit.Exit()
 | 
					 | 
				
			||||||
	case WriteThenGoexit:
 | 
					 | 
				
			||||||
		runtime.Goexit()
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// AddCore adds a Core that has agreed to log this CheckedEntry. It's intended to be
 | 
					// AddCore adds a Core that has agreed to log this CheckedEntry. It's intended to be
 | 
				
			||||||
@@ -252,11 +279,20 @@ func (ce *CheckedEntry) AddCore(ent Entry, core Core) *CheckedEntry {
 | 
				
			|||||||
// Should sets this CheckedEntry's CheckWriteAction, which controls whether a
 | 
					// Should sets this CheckedEntry's CheckWriteAction, which controls whether a
 | 
				
			||||||
// Core will panic or fatal after writing this log entry. Like AddCore, it's
 | 
					// Core will panic or fatal after writing this log entry. Like AddCore, it's
 | 
				
			||||||
// safe to call on nil CheckedEntry references.
 | 
					// safe to call on nil CheckedEntry references.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Deprecated: Use [CheckedEntry.After] instead.
 | 
				
			||||||
func (ce *CheckedEntry) Should(ent Entry, should CheckWriteAction) *CheckedEntry {
 | 
					func (ce *CheckedEntry) Should(ent Entry, should CheckWriteAction) *CheckedEntry {
 | 
				
			||||||
 | 
						return ce.After(ent, should)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// After sets this CheckEntry's CheckWriteHook, which will be called after this
 | 
				
			||||||
 | 
					// log entry has been written. It's safe to call this on nil CheckedEntry
 | 
				
			||||||
 | 
					// references.
 | 
				
			||||||
 | 
					func (ce *CheckedEntry) After(ent Entry, hook CheckWriteHook) *CheckedEntry {
 | 
				
			||||||
	if ce == nil {
 | 
						if ce == nil {
 | 
				
			||||||
		ce = getCheckedEntry()
 | 
							ce = getCheckedEntry()
 | 
				
			||||||
		ce.Entry = ent
 | 
							ce.Entry = ent
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	ce.should = should
 | 
						ce.after = hook
 | 
				
			||||||
	return ce
 | 
						return ce
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										14
									
								
								vendor/go.uber.org/zap/zapcore/error.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								vendor/go.uber.org/zap/zapcore/error.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -23,7 +23,8 @@ package zapcore
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"reflect"
 | 
						"reflect"
 | 
				
			||||||
	"sync"
 | 
					
 | 
				
			||||||
 | 
						"go.uber.org/zap/internal/pool"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Encodes the given error into fields of an object. A field with the given
 | 
					// Encodes the given error into fields of an object. A field with the given
 | 
				
			||||||
@@ -97,15 +98,18 @@ func (errs errArray) MarshalLogArray(arr ArrayEncoder) error {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		el := newErrArrayElem(errs[i])
 | 
							el := newErrArrayElem(errs[i])
 | 
				
			||||||
		arr.AppendObject(el)
 | 
							err := arr.AppendObject(el)
 | 
				
			||||||
		el.Free()
 | 
							el.Free()
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var _errArrayElemPool = sync.Pool{New: func() interface{} {
 | 
					var _errArrayElemPool = pool.New(func() *errArrayElem {
 | 
				
			||||||
	return &errArrayElem{}
 | 
						return &errArrayElem{}
 | 
				
			||||||
}}
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Encodes any error into a {"error": ...} re-using the same errors logic.
 | 
					// Encodes any error into a {"error": ...} re-using the same errors logic.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -113,7 +117,7 @@ var _errArrayElemPool = sync.Pool{New: func() interface{} {
 | 
				
			|||||||
type errArrayElem struct{ err error }
 | 
					type errArrayElem struct{ err error }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func newErrArrayElem(err error) *errArrayElem {
 | 
					func newErrArrayElem(err error) *errArrayElem {
 | 
				
			||||||
	e := _errArrayElemPool.Get().(*errArrayElem)
 | 
						e := _errArrayElemPool.Get()
 | 
				
			||||||
	e.err = err
 | 
						e.err = err
 | 
				
			||||||
	return e
 | 
						return e
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user