Update deps and fix `go mod tidy` (#1514)

## Buildtools PR checklist

- [x] The code in this PR is covered by unit/integration tests.
- [x] I have tested these changes and provide testing instructions
below.
- [x] I have either responded to, or resolved all Gemini comments on the
PR.
- [x] I have read Google Eng Practices on [Small
Changes](https://google.github.io/eng-practices/review/developer/small-cls.html),
this PR either follows these guidelines or the description provides
reasoning for why they can not be followed.

## Description

* Bump Bazel, rules_go, gazelle and Go version
* Add missing generating code
* Make go.mod the source of truth for Bazel builds and tidy it
* Ensure go.mod/go.sum remain tidy and `go build ./...` passes via a CI
job
* Drop the EoL'd ubuntu-20.04 run

Fixes https://github.com/bazel-contrib/buildtools/issues/1513
diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml
index d92f478..b26563c 100644
--- a/.bazelci/presubmit.yml
+++ b/.bazelci/presubmit.yml
@@ -3,9 +3,6 @@
   version: latest
   warnings: "default"
 platforms:
-  ubuntu2004:
-    test_targets:
-    - "//..."
   ubuntu2204:
     test_targets:
     - "//..."
diff --git a/.bazelversion b/.bazelversion
index f9c71a5..deeb3d6 100644
--- a/.bazelversion
+++ b/.bazelversion
@@ -1 +1 @@
-8.5.1
+9.2.0
diff --git a/.github/workflows/go.yaml b/.github/workflows/go.yaml
new file mode 100644
index 0000000..7135f8b
--- /dev/null
+++ b/.github/workflows/go.yaml
@@ -0,0 +1,47 @@
+name: go
+
+on:
+  push:
+    branches:
+      - main
+  pull_request:
+  workflow_dispatch:
+
+permissions:
+  contents: read
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  tidy:
+    name: go build and go mod tidy
+    runs-on: ubuntu-latest
+    steps:
+      - name: Harden Runner
+        uses: step-security/harden-runner@95d9a5deda9de15063e7595e9719c11c38c90ae2 # v2.13.2
+        with:
+          egress-policy: audit
+
+      - name: Checkout
+        uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0
+
+      - name: Set up Bazel
+        uses: bazel-contrib/setup-bazel@c5acdfb288317d0b5c0bbd7a396a3dc868bb0f86 # 0.19.0
+        with:
+          bazelisk-cache: true
+          repository-cache: true
+
+      - name: Run go mod tidy
+        run: bazel run @io_bazel_rules_go//go -- mod tidy
+
+      - name: Run go build
+        run: bazel run @io_bazel_rules_go//go -- build ./...
+
+      - name: Check for changes
+        run: |
+          if ! git diff --exit-code -- go.mod go.sum MODULE.bazel; then
+            echo "::error::go.mod, go.sum or MODULE.bazel is out of date. Run 'bazel run @io_bazel_rules_go//go -- mod tidy' and commit the result."
+            exit 1
+          fi
diff --git a/BUILD.bazel b/BUILD.bazel
index c1420a1..fb93108 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -34,6 +34,7 @@
         "//tables:tables_test",
         "//warn:warn_test",
         "//warn/docs:docs_test",
+        "//warn/docs/proto:docs.gen.pb.go_checkshtest",
         "//wspace:wspace_test",
     ],
 )
diff --git a/MODULE.bazel b/MODULE.bazel
index ec98eaf..635ab27 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -3,21 +3,21 @@
     version = "0.0.0",
 )
 
-bazel_dep(name = "aspect_bazel_lib", version = "2.19.2")
-bazel_dep(name = "aspect_rules_js", version = "2.1.2")
-bazel_dep(name = "bazel_features", version = "1.30.0")
-bazel_dep(name = "bazel_skylib", version = "1.7.1")
-bazel_dep(name = "gazelle", version = "0.40.0", repo_name = "bazel_gazelle")
-bazel_dep(name = "protobuf", version = "33.0", repo_name = "com_google_protobuf")
-bazel_dep(name = "rules_cc", version = "0.2.4")
-bazel_dep(name = "rules_go", version = "0.59.0", repo_name = "io_bazel_rules_go")
-bazel_dep(name = "rules_nodejs", version = "6.3.3")
+bazel_dep(name = "aspect_bazel_lib", version = "2.22.5")
+bazel_dep(name = "aspect_rules_js", version = "3.4.1")
+bazel_dep(name = "bazel_features", version = "1.42.1")
+bazel_dep(name = "bazel_skylib", version = "1.9.0")
+bazel_dep(name = "gazelle", version = "0.54.0", repo_name = "bazel_gazelle")
+bazel_dep(name = "protobuf", version = "34.0.bcr.1", repo_name = "com_google_protobuf")
+bazel_dep(name = "rules_cc", version = "0.2.17")
+bazel_dep(name = "rules_go", version = "0.63.0", repo_name = "io_bazel_rules_go")
+bazel_dep(name = "rules_nodejs", version = "6.7.5")
 bazel_dep(name = "rules_proto", version = "7.1.0")
 bazel_dep(name = "rules_shell", version = "0.6.1")
 # -- bazel_dep definitions -- #
 
 go_sdk = use_extension("@io_bazel_rules_go//go:extensions.bzl", "go_sdk")
-go_sdk.download(version = "1.25.3")
+go_sdk.from_file(go_mod = "//:go.mod")
 
 go_deps = use_extension("@bazel_gazelle//:extensions.bzl", "go_deps")
 go_deps.from_file(go_mod = "//:go.mod")
@@ -25,16 +25,6 @@
     build_file_generation = "clean",
     path = "github.com/google/safeopen",
 )
-go_deps.module(
-    path = "golang.org/x/sys",
-    sum = "h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA=",
-    version = "v0.10.0",
-)
-go_deps.module(
-    path = "golang.org/x/tools",
-    sum = "h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8=",
-    version = "v0.15.0",
-)
 use_repo(
     go_deps,
     "com_github_golang_protobuf",
@@ -42,7 +32,6 @@
     "com_github_google_safeopen",
     "net_starlark_go",
     "org_golang_google_protobuf",
-    "org_golang_x_sys",
     "org_golang_x_tools",
 )
 
diff --git a/api_proto/api.gen.pb.go b/api_proto/api.gen.pb.go
index 3f8b779..5e4ecd3 100755
--- a/api_proto/api.gen.pb.go
+++ b/api_proto/api.gen.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.3
-// 	protoc        v6.33.0
+// 	protoc-gen-go v1.36.10
+// 	protoc        v7.34.0
 // source: api_proto/api.proto
 
 package api_proto
@@ -11,6 +11,7 @@
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
+	unsafe "unsafe"
 )
 
 const (
@@ -325,52 +326,35 @@
 
 var File_api_proto_api_proto protoreflect.FileDescriptor
 
-var file_api_proto_api_proto_rawDesc = []byte{
-	0x0a, 0x13, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e,
-	0x62, 0x75, 0x69, 0x6c, 0x64, 0x6f, 0x7a, 0x65, 0x72, 0x22, 0xbf, 0x03, 0x0a, 0x06, 0x4f, 0x75,
-	0x74, 0x70, 0x75, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18,
-	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73,
-	0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x6f, 0x7a, 0x65, 0x72, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75,
-	0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64,
-	0x73, 0x1a, 0xf7, 0x02, 0x0a, 0x06, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x06,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64,
-	0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x6f, 0x7a, 0x65,
-	0x72, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e,
-	0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0xab, 0x02,
-	0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x14, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x18, 0x0a,
-	0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52,
-	0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c,
-	0x73, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x6f, 0x7a, 0x65, 0x72, 0x2e, 0x4f, 0x75, 0x74, 0x70,
-	0x75, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x2e,
-	0x45, 0x52, 0x52, 0x4f, 0x52, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x38,
-	0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64,
-	0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x6f, 0x7a, 0x65,
-	0x72, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x48, 0x00, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x71, 0x75, 0x6f, 0x74,
-	0x65, 0x5f, 0x77, 0x68, 0x65, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x18,
-	0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x57, 0x68, 0x65, 0x6e,
-	0x50, 0x72, 0x69, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x38, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f,
-	0x52, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b,
-	0x0a, 0x07, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x4d,
-	0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x49, 0x54, 0x45, 0x4d,
-	0x10, 0x02, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2a, 0x0a, 0x0e, 0x52,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a,
-	0x07, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07,
-	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x0b, 0x5a, 0x09, 0x61, 0x70, 0x69, 0x5f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
+const file_api_proto_api_proto_rawDesc = "" +
+	"\n" +
+	"\x13api_proto/api.proto\x12\x12devtools.buildozer\"\xbf\x03\n" +
+	"\x06Output\x12;\n" +
+	"\arecords\x18\x01 \x03(\v2!.devtools.buildozer.Output.RecordR\arecords\x1a\xf7\x02\n" +
+	"\x06Record\x12?\n" +
+	"\x06fields\x18\x01 \x03(\v2'.devtools.buildozer.Output.Record.FieldR\x06fields\x1a\xab\x02\n" +
+	"\x05Field\x12\x14\n" +
+	"\x04text\x18\x01 \x01(\tH\x00R\x04text\x12\x18\n" +
+	"\x06number\x18\x02 \x01(\x05H\x00R\x06number\x12E\n" +
+	"\x05error\x18\x03 \x01(\x0e2-.devtools.buildozer.Output.Record.Field.ERRORH\x00R\x05error\x128\n" +
+	"\x04list\x18\x05 \x01(\v2\".devtools.buildozer.RepeatedStringH\x00R\x04list\x12.\n" +
+	"\x13quote_when_printing\x18\a \x01(\bR\x11quoteWhenPrinting\"8\n" +
+	"\x05ERROR\x12\v\n" +
+	"\aUNKNOWN\x10\x00\x12\v\n" +
+	"\aMISSING\x10\x01\x12\x15\n" +
+	"\x11MISSING_LIST_ITEM\x10\x02B\a\n" +
+	"\x05value\"*\n" +
+	"\x0eRepeatedString\x12\x18\n" +
+	"\astrings\x18\x01 \x03(\tR\astringsB\vZ\tapi_protob\x06proto3"
 
 var (
 	file_api_proto_api_proto_rawDescOnce sync.Once
-	file_api_proto_api_proto_rawDescData = file_api_proto_api_proto_rawDesc
+	file_api_proto_api_proto_rawDescData []byte
 )
 
 func file_api_proto_api_proto_rawDescGZIP() []byte {
 	file_api_proto_api_proto_rawDescOnce.Do(func() {
-		file_api_proto_api_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_proto_api_proto_rawDescData)
+		file_api_proto_api_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_proto_api_proto_rawDesc), len(file_api_proto_api_proto_rawDesc)))
 	})
 	return file_api_proto_api_proto_rawDescData
 }
@@ -411,7 +395,7 @@
 	out := protoimpl.TypeBuilder{
 		File: protoimpl.DescBuilder{
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_api_proto_api_proto_rawDesc,
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_api_proto_api_proto_rawDesc), len(file_api_proto_api_proto_rawDesc)),
 			NumEnums:      1,
 			NumMessages:   4,
 			NumExtensions: 0,
@@ -423,7 +407,6 @@
 		MessageInfos:      file_api_proto_api_proto_msgTypes,
 	}.Build()
 	File_api_proto_api_proto = out.File
-	file_api_proto_api_proto_rawDesc = nil
 	file_api_proto_api_proto_goTypes = nil
 	file_api_proto_api_proto_depIdxs = nil
 }
diff --git a/build/parse.y.go b/build/parse.y.go
index 9c00e24..576c20b 100644
--- a/build/parse.y.go
+++ b/build/parse.y.go
@@ -555,39 +555,39 @@
 }
 
 var yyPact = [...]int16{
-	-1000, -1000, 426, -1000, -1000, -1000, -25, -1000, -1000, -1000,
-	240, 329, -1000, 177, 836, 140, -1000, -1000, -1000, -1000,
-	-6, 8, 794, -1000, 178, 64, 836, 229, 123, 836,
-	836, 836, 836, -1000, -1000, -1000, 307, 836, 836, 836,
-	259, 23, -1000, -1000, -1000, -39, 477, 124, 229, -1000,
-	836, 836, 836, 274, 97, -1000, 97, 836, 81, -1000,
+	-32768, -32768, 426, -32768, -32768, -32768, -25, -32768, -32768, -32768,
+	240, 329, -32768, 177, 836, 140, -32768, -32768, -32768, -32768,
+	-6, 8, 794, -32768, 178, 64, 836, 229, 123, 836,
+	836, 836, 836, -32768, -32768, -32768, 307, 836, 836, 836,
+	259, 23, -32768, -32768, -32768, -39, 477, 124, 229, -32768,
+	836, 836, 836, 274, 97, -32768, 97, 836, 81, -32768,
 	836, 836, 836, 836, 836, 836, 836, 836, 836, 836,
 	836, 836, 836, 5, 836, 836, 836, 836, 836, 836,
 	836, 836, 836, 227, 25, 178, 263, 28, 271, 836,
-	237, 286, -1000, 220, 25, 25, -1000, -1000, -1000, -1000,
+	237, 286, -32768, 220, 25, 25, -32768, -32768, -32768, -32768,
 	271, 190, 751, 271, 78, 142, 285, 627, 271, 303,
-	794, 13, -1000, -31, 528, -1000, -1000, -1000, 836, 329,
-	274, 274, 875, 183, -1000, 222, -1000, 97, -1000, 93,
-	255, 477, -1000, -1000, -1000, -1000, -1000, 139, 139, 1032,
+	794, 13, -32768, -31, 528, -32768, -32768, -32768, 836, 329,
+	274, 274, 875, 183, -32768, 222, -32768, 97, -32768, 93,
+	255, 477, -32768, -32768, -32768, -32768, -32768, 139, 139, 1032,
 	1032, 1032, 1032, 1032, 1032, 1032, 836, 961, 1004, 496,
-	1052, 562, 112, 112, 918, 708, 97, 280, -1000, 305,
-	477, -1000, 302, 271, 580, 279, -1000, 187, 235, 836,
-	-1000, 123, 836, -1000, -1000, -13, -1000, 119, 11, -1000,
-	329, 669, -1000, 120, -1000, 138, 669, -1000, 836, 669,
-	-1000, -1000, -1000, -1000, -1, -32, 252, 229, 836, 97,
-	26, 80, 299, 271, 93, 477, -1000, 1032, 836, 93,
-	167, 25, 91, -1000, -1000, -1000, 219, -1000, 794, 208,
-	836, 836, -1000, -1000, 836, -1000, -1000, 794, 271, -1000,
-	11, 836, 84, 794, -1000, -1000, 794, -1000, 627, -1000,
-	-33, -1000, -1000, 477, 274, -1000, -1000, 179, -1000, 93,
-	-1000, -1000, -1000, 80, -13, -1000, -1000, 143, -1000, 875,
-	-1000, -1000, 298, 273, -1000, -1000, 200, 25, 25, -1000,
-	836, 794, 794, 158, 794, 77, 875, 836, 375, -1000,
-	-1000, -1000, 86, 149, 271, 115, 271, -1000, 234, 93,
-	-1000, -1000, 91, 97, 224, 147, 794, -1000, 836, 266,
-	-1000, -1000, 205, 875, -1000, -1000, -1000, -1000, 86, -1000,
-	-1000, 38, 80, -1000, 163, 97, 97, 145, 297, 4,
-	-13, -1000, -1000, 836, 93, 93, -1000, -1000, -1000, -1000,
+	1052, 562, 112, 112, 918, 708, 97, 280, -32768, 305,
+	477, -32768, 302, 271, 580, 279, -32768, 187, 235, 836,
+	-32768, 123, 836, -32768, -32768, -13, -32768, 119, 11, -32768,
+	329, 669, -32768, 120, -32768, 138, 669, -32768, 836, 669,
+	-32768, -32768, -32768, -32768, -1, -32, 252, 229, 836, 97,
+	26, 80, 299, 271, 93, 477, -32768, 1032, 836, 93,
+	167, 25, 91, -32768, -32768, -32768, 219, -32768, 794, 208,
+	836, 836, -32768, -32768, 836, -32768, -32768, 794, 271, -32768,
+	11, 836, 84, 794, -32768, -32768, 794, -32768, 627, -32768,
+	-33, -32768, -32768, 477, 274, -32768, -32768, 179, -32768, 93,
+	-32768, -32768, -32768, 80, -13, -32768, -32768, 143, -32768, 875,
+	-32768, -32768, 298, 273, -32768, -32768, 200, 25, 25, -32768,
+	836, 794, 794, 158, 794, 77, 875, 836, 375, -32768,
+	-32768, -32768, 86, 149, 271, 115, 271, -32768, 234, 93,
+	-32768, -32768, 91, 97, 224, 147, 794, -32768, 836, 266,
+	-32768, -32768, 205, 875, -32768, -32768, -32768, -32768, 86, -32768,
+	-32768, 38, 80, -32768, 163, 97, 97, 145, 297, 4,
+	-13, -32768, -32768, 836, 93, 93, -32768, -32768, -32768, -32768,
 	794,
 }
 
@@ -646,7 +646,7 @@
 }
 
 var yyChk = [...]int16{
-	-1000, -64, -45, 28, -46, 60, 27, -51, -47, -52,
+	-32768, -64, -45, 28, -46, 60, 27, -51, -47, -52,
 	-63, 30, -48, -35, 52, -42, -14, 53, 54, 55,
 	-62, -49, -31, 32, -13, 51, 34, -34, 39, 48,
 	10, 8, 24, -43, -44, -57, 40, 17, 19, 5,
@@ -785,7 +785,7 @@
 	return &yyParserImpl{}
 }
 
-const yyFlag = -1000
+const yyFlag = -32768
 
 func yyTokname(c int) string {
 	if c >= 1 && c-1 < len(yyToknames) {
diff --git a/build_proto/build.gen.pb.go b/build_proto/build.gen.pb.go
index 6366bc2..0ba925c 100755
--- a/build_proto/build.gen.pb.go
+++ b/build_proto/build.gen.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.3
-// 	protoc        v6.33.0
+// 	protoc-gen-go v1.36.10
+// 	protoc        v7.34.0
 // source: build_proto/build.proto
 
 package build_proto
@@ -11,6 +11,7 @@
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
+	unsafe "unsafe"
 )
 
 const (
@@ -2336,454 +2337,231 @@
 
 var File_build_proto_build_proto protoreflect.FileDescriptor
 
-var file_build_proto_build_proto_rawDesc = []byte{
-	0x0a, 0x17, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x62, 0x75,
-	0x69, 0x6c, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x62, 0x6c, 0x61, 0x7a, 0x65,
-	0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x4a, 0x0a, 0x07, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73,
-	0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70,
-	0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65,
-	0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x22, 0x39, 0x0a, 0x0f, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x63, 0x74,
-	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x02,
-	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3d, 0x0a,
-	0x13, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x44, 0x69, 0x63, 0x74, 0x55, 0x6e, 0x61, 0x72, 0x79, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x02, 0x28,
-	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
-	0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3c, 0x0a, 0x12,
-	0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x63, 0x74, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52,
-	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x43, 0x0a, 0x19, 0x4c, 0x61,
-	0x62, 0x65, 0x6c, 0x4b, 0x65, 0x79, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x69,
-	0x63, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
-	0x20, 0x02, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22,
-	0x3d, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x63,
-	0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
-	0x02, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xdb,
-	0x02, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
-	0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52,
-	0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x15, 0x64, 0x65, 0x73, 0x74, 0x69,
-	0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79,
-	0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x14, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74,
-	0x69, 0x6f, 0x6e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0d,
-	0x66, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e,
-	0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52,
-	0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65,
-	0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x12,
-	0x5a, 0x0a, 0x10, 0x73, 0x79, 0x6d, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76,
-	0x69, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x62, 0x6c, 0x61, 0x7a,
-	0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x65, 0x74, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x79, 0x6d, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x65, 0x68, 0x61,
-	0x76, 0x69, 0x6f, 0x72, 0x3a, 0x04, 0x43, 0x4f, 0x50, 0x59, 0x52, 0x0f, 0x73, 0x79, 0x6d, 0x6c,
-	0x69, 0x6e, 0x6b, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x73,
-	0x74, 0x72, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x2c,
-	0x0a, 0x0f, 0x53, 0x79, 0x6d, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f,
-	0x72, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f, 0x50, 0x59, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x44,
-	0x45, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x02, 0x22, 0x9f, 0x16, 0x0a,
-	0x09, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
-	0x6d, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31,
-	0x0a, 0x14, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x6c, 0x79, 0x5f, 0x73, 0x70, 0x65,
-	0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x65, 0x78,
-	0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x6c, 0x79, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65,
-	0x64, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x70, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x70, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
-	0x02, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75,
-	0x65, 0x72, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, 0x44, 0x69,
-	0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x04, 0x74, 0x79, 0x70,
-	0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21,
-	0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75,
-	0x65, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61,
-	0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x46, 0x0a, 0x0e, 0x74, 0x72, 0x69, 0x73, 0x74, 0x61,
-	0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f,
-	0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x74, 0x74,
-	0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x69, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52,
-	0x0d, 0x74, 0x72, 0x69, 0x73, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2a,
-	0x0a, 0x11, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x6c, 0x69,
-	0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x62, 0x6c,
-	0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73,
-	0x65, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x73, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
-	0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75,
-	0x65, 0x72, 0x79, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x63, 0x74, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x52, 0x0f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x63, 0x74, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x12, 0x47, 0x0a, 0x12, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x65, 0x74, 0x5f,
-	0x6c, 0x69, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x19, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46,
-	0x69, 0x6c, 0x65, 0x73, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x66, 0x69, 0x6c,
-	0x65, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x52, 0x0a,
-	0x15, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x64, 0x69, 0x63, 0x74,
-	0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x62,
-	0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c,
-	0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x63, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x12, 0x6c,
-	0x61, 0x62, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x63, 0x74, 0x56, 0x61, 0x6c, 0x75,
-	0x65, 0x12, 0x55, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74,
-	0x5f, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0b, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x20, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x63, 0x74, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x44,
-	0x69, 0x63, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x5f,
-	0x6c, 0x69, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05,
-	0x52, 0x0c, 0x69, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x55,
-	0x0a, 0x16, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x75, 0x6e, 0x61,
-	0x72, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20,
-	0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4c, 0x61, 0x62,
-	0x65, 0x6c, 0x44, 0x69, 0x63, 0x74, 0x55, 0x6e, 0x61, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79,
-	0x52, 0x13, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x44, 0x69, 0x63, 0x74, 0x55, 0x6e, 0x61, 0x72, 0x79,
-	0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x68, 0x0a, 0x1d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6b,
-	0x65, 0x79, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x63, 0x74,
-	0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62,
-	0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c,
-	0x4b, 0x65, 0x79, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x63, 0x74, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x52, 0x19, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x4b, 0x65, 0x79, 0x65, 0x64,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x63, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,
-	0x48, 0x0a, 0x0d, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74,
-	0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71,
-	0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, 0x53,
-	0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x0c, 0x73, 0x65, 0x6c,
-	0x65, 0x63, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x22, 0x44, 0x45, 0x50,
-	0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x64,
-	0x69, 0x63, 0x74, 0x5f, 0x75, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
-	0x12, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x1e, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45,
-	0x44, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x63, 0x74, 0x55, 0x6e, 0x61, 0x72, 0x79,
-	0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xcf, 0x07, 0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
-	0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x28, 0x0a,
-	0x10, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75,
-	0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x6f, 0x6f, 0x6c, 0x65,
-	0x61, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c,
-	0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x46, 0x0a, 0x0e,
-	0x74, 0x72, 0x69, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65,
-	0x72, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x69,
-	0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x74, 0x72, 0x69, 0x73, 0x74, 0x61, 0x74, 0x65, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6c,
-	0x69, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52,
-	0x0f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65,
-	0x12, 0x2e, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x14, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e,
-	0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65,
-	0x12, 0x48, 0x0a, 0x11, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x63, 0x74, 0x5f,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x6c,
-	0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x44, 0x69, 0x63, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x73, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x44, 0x69, 0x63, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x47, 0x0a, 0x12, 0x66, 0x69,
-	0x6c, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71,
-	0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x52, 0x10, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61,
-	0x6c, 0x75, 0x65, 0x12, 0x52, 0x0a, 0x15, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6c, 0x69, 0x73,
-	0x74, 0x5f, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79,
-	0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x63, 0x74, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x52, 0x12, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69,
-	0x63, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x55, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f,
-	0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74,
-	0x44, 0x69, 0x63, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x73, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x63, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x24,
-	0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x12, 0x55, 0x0a, 0x16, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x64, 0x69,
-	0x63, 0x74, 0x5f, 0x75, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0f,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65,
-	0x72, 0x79, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x44, 0x69, 0x63, 0x74, 0x55, 0x6e, 0x61, 0x72,
-	0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x44, 0x69, 0x63,
-	0x74, 0x55, 0x6e, 0x61, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x68, 0x0a, 0x1d, 0x6c,
-	0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6b, 0x65, 0x79, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x5f, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x11, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79,
-	0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4b, 0x65, 0x79, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x44, 0x69, 0x63, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x19, 0x6c, 0x61, 0x62, 0x65,
-	0x6c, 0x4b, 0x65, 0x79, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x63, 0x74,
-	0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4a, 0x0a, 0x22, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41,
-	0x54, 0x45, 0x44, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x63, 0x74, 0x5f,
-	0x75, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0e, 0x20, 0x03, 0x28,
-	0x0c, 0x52, 0x1e, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x53, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x44, 0x69, 0x63, 0x74, 0x55, 0x6e, 0x61, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x75,
-	0x65, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x1a, 0x9c, 0x01, 0x0a, 0x08, 0x53, 0x65, 0x6c, 0x65,
-	0x63, 0x74, 0x6f, 0x72, 0x12, 0x3e, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18,
-	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75,
-	0x65, 0x72, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, 0x53, 0x65,
-	0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74,
-	0x72, 0x69, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x61, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61,
-	0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0f, 0x68, 0x61, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65,
-	0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x6f, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x72, 0x72,
-	0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x4d, 0x61, 0x74, 0x63,
-	0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x85, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x6c, 0x65, 0x63,
-	0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75,
-	0x65, 0x72, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, 0x44, 0x69,
-	0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x04, 0x74, 0x79, 0x70,
-	0x65, 0x12, 0x3b, 0x0a, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72,
-	0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, 0x53, 0x65, 0x6c, 0x65,
-	0x63, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x8a,
-	0x03, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72,
-	0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0a, 0x0a,
-	0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x41, 0x42,
-	0x45, 0x4c, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x10, 0x04,
-	0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10,
-	0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10,
-	0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54,
-	0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49,
-	0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x08, 0x12, 0x0b, 0x0a, 0x07, 0x4c, 0x49, 0x43, 0x45,
-	0x4e, 0x53, 0x45, 0x10, 0x09, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f,
-	0x44, 0x49, 0x43, 0x54, 0x10, 0x0a, 0x12, 0x16, 0x0a, 0x12, 0x46, 0x49, 0x4c, 0x45, 0x53, 0x45,
-	0x54, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x0b, 0x12, 0x13,
-	0x0a, 0x0f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x44, 0x49, 0x43,
-	0x54, 0x10, 0x0c, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x49,
-	0x53, 0x54, 0x5f, 0x44, 0x49, 0x43, 0x54, 0x10, 0x0d, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4f, 0x4f,
-	0x4c, 0x45, 0x41, 0x4e, 0x10, 0x0e, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x52, 0x49, 0x53, 0x54, 0x41,
-	0x54, 0x45, 0x10, 0x0f, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x45, 0x52, 0x5f,
-	0x4c, 0x49, 0x53, 0x54, 0x10, 0x10, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
-	0x4e, 0x10, 0x12, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x44, 0x49, 0x43,
-	0x54, 0x5f, 0x55, 0x4e, 0x41, 0x52, 0x59, 0x10, 0x13, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x45, 0x4c,
-	0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x14, 0x12, 0x1b, 0x0a, 0x17,
-	0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x4b, 0x45, 0x59, 0x45, 0x44, 0x5f, 0x53, 0x54, 0x52, 0x49,
-	0x4e, 0x47, 0x5f, 0x44, 0x49, 0x43, 0x54, 0x10, 0x15, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x45, 0x50,
-	0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x44,
-	0x49, 0x43, 0x54, 0x5f, 0x55, 0x4e, 0x41, 0x52, 0x59, 0x10, 0x11, 0x22, 0x25, 0x0a, 0x08, 0x54,
-	0x72, 0x69, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4e, 0x4f, 0x10, 0x00, 0x12,
-	0x07, 0x0a, 0x03, 0x59, 0x45, 0x53, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x4f,
-	0x10, 0x02, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x4a, 0x04, 0x08, 0x10, 0x10, 0x11, 0x22, 0xea,
-	0x04, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
-	0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72,
-	0x75, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52,
-	0x09, 0x72, 0x75, 0x6c, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f,
-	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f,
-	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62,
-	0x75, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x62, 0x6c, 0x61, 0x7a,
-	0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
-	0x65, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
-	0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x54, 0x0a, 0x15, 0x63,
-	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69,
-	0x6e, 0x70, 0x75, 0x74, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x62, 0x6c, 0x61,
-	0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75,
-	0x72, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x13, 0x63, 0x6f,
-	0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x70, 0x75,
-	0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74,
-	0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x75, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70,
-	0x75, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x65,
-	0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x66,
-	0x61, 0x75, 0x6c, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x3f, 0x0a, 0x1c, 0x44,
-	0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
-	0x5f, 0x62, 0x79, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x19, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x50, 0x75, 0x62,
-	0x6c, 0x69, 0x63, 0x42, 0x79, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x15,
-	0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x69, 0x73, 0x5f, 0x73, 0x6b,
-	0x79, 0x6c, 0x61, 0x72, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x44, 0x45, 0x50,
-	0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x49, 0x73, 0x53, 0x6b, 0x79, 0x6c, 0x61, 0x72, 0x6b,
-	0x12, 0x41, 0x0a, 0x1d, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x72, 0x6b, 0x5f, 0x65, 0x6e, 0x76, 0x69,
-	0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x63, 0x6f, 0x64,
-	0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1a, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x72, 0x6b,
-	0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x43,
-	0x6f, 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61,
-	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x12, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53,
-	0x74, 0x61, 0x63, 0x6b, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69,
-	0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f,
-	0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x4a,
-	0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x22, 0x8d, 0x01, 0x0a, 0x13,
-	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e,
-	0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x35, 0x0a, 0x16, 0x63, 0x6f, 0x6e,
-	0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b,
-	0x73, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x66, 0x69,
-	0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d,
-	0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66,
-	0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x0b,
-	0x52, 0x75, 0x6c, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x04, 0x72,
-	0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x62, 0x6c, 0x61, 0x7a,
-	0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75,
-	0x6c, 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79,
-	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71,
-	0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x65, 0x6e,
-	0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x22, 0x8b, 0x01, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f,
-	0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09,
-	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
-	0x6e, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28,
-	0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b,
-	0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x5f,
-	0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x14, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x50, 0x61, 0x63,
-	0x6b, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22,
-	0x62, 0x0a, 0x10, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x47, 0x72,
-	0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28,
-	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72,
-	0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e,
-	0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66,
-	0x61, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61,
-	0x75, 0x6c, 0x74, 0x22, 0xb4, 0x02, 0x0a, 0x0a, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69,
-	0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09,
-	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65,
-	0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x63, 0x6c, 0x75,
-	0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x67, 0x72,
-	0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61,
-	0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x29, 0x0a, 0x10, 0x76, 0x69, 0x73, 0x69, 0x62,
-	0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x03, 0x28,
-	0x09, 0x52, 0x0f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x61, 0x62,
-	0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x06, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x07, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x2e, 0x0a, 0x07,
-	0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
-	0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4c, 0x69, 0x63, 0x65,
-	0x6e, 0x73, 0x65, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x17,
-	0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73,
-	0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x70,
-	0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x45, 0x72,
-	0x72, 0x6f, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x22, 0x68, 0x0a, 0x0d, 0x47, 0x65,
-	0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e,
-	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
-	0x27, 0x0a, 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x75,
-	0x6c, 0x65, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61,
-	0x74, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61,
-	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61,
-	0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd9, 0x03, 0x0a, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12,
-	0x35, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x21, 0x2e,
-	0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x72, 0x67,
-	0x65, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72,
-	0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65,
-	0x72, 0x79, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x38, 0x0a,
-	0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79,
-	0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x0a, 0x73, 0x6f, 0x75,
-	0x72, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x67, 0x65, 0x6e, 0x65, 0x72,
-	0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x1a, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x47, 0x65,
-	0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x0d, 0x67, 0x65, 0x6e,
-	0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x0d, 0x70, 0x61,
-	0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x19, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e,
-	0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0c, 0x70, 0x61,
-	0x63, 0x6b, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x4a, 0x0a, 0x11, 0x65, 0x6e,
-	0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
-	0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75,
-	0x65, 0x72, 0x79, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x47,
-	0x72, 0x6f, 0x75, 0x70, 0x52, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e,
-	0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x68, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x63, 0x72, 0x69,
-	0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x55, 0x4c, 0x45, 0x10,
-	0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x46, 0x49, 0x4c, 0x45,
-	0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x45, 0x44, 0x5f,
-	0x46, 0x49, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47,
-	0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x56,
-	0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x05,
-	0x22, 0x3a, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12,
-	0x2b, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x13, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x61,
-	0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xc0, 0x01, 0x0a,
-	0x14, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6c, 0x61, 0x73,
-	0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4c, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18,
-	0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75,
-	0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x43,
-	0x6c, 0x61, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64,
-	0x52, 0x75, 0x6c, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x06, 0x70, 0x6f, 0x6c,
-	0x69, 0x63, 0x79, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x72,
-	0x75, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
-	0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6c, 0x61, 0x73,
-	0x73, 0x22, 0x2c, 0x0a, 0x12, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65,
-	0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4e, 0x59, 0x10, 0x01,
-	0x12, 0x0d, 0x0a, 0x09, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x02, 0x22,
-	0xfa, 0x03, 0x0a, 0x13, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x44, 0x65, 0x66,
-	0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
-	0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x74,
-	0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x6c, 0x61, 0x7a,
-	0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
-	0x65, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x52,
-	0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f,
-	0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74,
-	0x6f, 0x72, 0x79, 0x12, 0x53, 0x0a, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x72,
-	0x75, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x21, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e,
-	0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73,
-	0x49, 0x6e, 0x66, 0x6f, 0x52, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x52, 0x75, 0x6c,
-	0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x75,
-	0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f,
-	0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x06, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12,
-	0x2a, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f,
-	0x66, 0x69, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f,
-	0x77, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x35, 0x0a, 0x07, 0x64,
-	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62,
-	0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69,
-	0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75,
-	0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65,
-	0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62,
-	0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62,
-	0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
-	0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x70, 0x18,
-	0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x70, 0x12, 0x1e, 0x0a, 0x0b,
-	0x63, 0x66, 0x67, 0x5f, 0x69, 0x73, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x09, 0x63, 0x66, 0x67, 0x49, 0x73, 0x48, 0x6f, 0x73, 0x74, 0x22, 0x8c, 0x02, 0x0a,
-	0x0e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,
-	0x10, 0x0a, 0x03, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x69, 0x6e,
-	0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x6f,
-	0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x2f, 0x0a,
-	0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x6c,
-	0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
-	0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x39,
-	0x0a, 0x04, 0x64, 0x69, 0x63, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x62,
-	0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69,
-	0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x69, 0x63, 0x74, 0x1a, 0x50, 0x0a, 0x09, 0x44, 0x69, 0x63,
-	0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
-	0x02, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x31, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f,
-	0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x0e,
-	0x52, 0x75, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12,
-	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
-	0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18,
-	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75,
-	0x65, 0x72, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x44, 0x65, 0x66,
-	0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
-	0x74, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74,
-	0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d,
-	0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65,
-	0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x40,
-	0x0a, 0x0d, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12,
-	0x2f, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
-	0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x75, 0x6c, 0x65,
-	0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65,
-	0x42, 0x36, 0x0a, 0x34, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64,
-	0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x6c, 0x69,
-	0x62, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x32, 0x61, 0x70, 0x69,
-}
+const file_build_proto_build_proto_rawDesc = "" +
+	"\n" +
+	"\x17build_proto/build.proto\x12\vblaze_query\"J\n" +
+	"\aLicense\x12!\n" +
+	"\flicense_type\x18\x01 \x03(\tR\vlicenseType\x12\x1c\n" +
+	"\texception\x18\x02 \x03(\tR\texception\"9\n" +
+	"\x0fStringDictEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x02(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x02(\tR\x05value\"=\n" +
+	"\x13LabelDictUnaryEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x02(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x02(\tR\x05value\"<\n" +
+	"\x12LabelListDictEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x02(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x03(\tR\x05value\"C\n" +
+	"\x19LabelKeyedStringDictEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x02(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x02(\tR\x05value\"=\n" +
+	"\x13StringListDictEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x02(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x03(\tR\x05value\"\xdb\x02\n" +
+	"\fFilesetEntry\x12\x16\n" +
+	"\x06source\x18\x01 \x02(\tR\x06source\x123\n" +
+	"\x15destination_directory\x18\x02 \x02(\tR\x14destinationDirectory\x12#\n" +
+	"\rfiles_present\x18\a \x01(\bR\ffilesPresent\x12\x12\n" +
+	"\x04file\x18\x03 \x03(\tR\x04file\x12\x18\n" +
+	"\aexclude\x18\x04 \x03(\tR\aexclude\x12Z\n" +
+	"\x10symlink_behavior\x18\x05 \x01(\x0e2).blaze_query.FilesetEntry.SymlinkBehavior:\x04COPYR\x0fsymlinkBehavior\x12!\n" +
+	"\fstrip_prefix\x18\x06 \x01(\tR\vstripPrefix\",\n" +
+	"\x0fSymlinkBehavior\x12\b\n" +
+	"\x04COPY\x10\x01\x12\x0f\n" +
+	"\vDEREFERENCE\x10\x02\"\x9f\x16\n" +
+	"\tAttribute\x12\x12\n" +
+	"\x04name\x18\x01 \x02(\tR\x04name\x121\n" +
+	"\x14explicitly_specified\x18\r \x01(\bR\x13explicitlySpecified\x12\x14\n" +
+	"\x05nodep\x18\x14 \x01(\bR\x05nodep\x128\n" +
+	"\x04type\x18\x02 \x02(\x0e2$.blaze_query.Attribute.DiscriminatorR\x04type\x12\x1b\n" +
+	"\tint_value\x18\x03 \x01(\x05R\bintValue\x12!\n" +
+	"\fstring_value\x18\x05 \x01(\tR\vstringValue\x12#\n" +
+	"\rboolean_value\x18\x0e \x01(\bR\fbooleanValue\x12F\n" +
+	"\x0etristate_value\x18\x0f \x01(\x0e2\x1f.blaze_query.Attribute.TristateR\rtristateValue\x12*\n" +
+	"\x11string_list_value\x18\x06 \x03(\tR\x0fstringListValue\x12.\n" +
+	"\alicense\x18\a \x01(\v2\x14.blaze_query.LicenseR\alicense\x12H\n" +
+	"\x11string_dict_value\x18\b \x03(\v2\x1c.blaze_query.StringDictEntryR\x0fstringDictValue\x12G\n" +
+	"\x12fileset_list_value\x18\t \x03(\v2\x19.blaze_query.FilesetEntryR\x10filesetListValue\x12R\n" +
+	"\x15label_list_dict_value\x18\n" +
+	" \x03(\v2\x1f.blaze_query.LabelListDictEntryR\x12labelListDictValue\x12U\n" +
+	"\x16string_list_dict_value\x18\v \x03(\v2 .blaze_query.StringListDictEntryR\x13stringListDictValue\x12$\n" +
+	"\x0eint_list_value\x18\x11 \x03(\x05R\fintListValue\x12U\n" +
+	"\x16label_dict_unary_value\x18\x13 \x03(\v2 .blaze_query.LabelDictUnaryEntryR\x13labelDictUnaryValue\x12h\n" +
+	"\x1dlabel_keyed_string_dict_value\x18\x16 \x03(\v2&.blaze_query.LabelKeyedStringDictEntryR\x19labelKeyedStringDictValue\x12H\n" +
+	"\rselector_list\x18\x15 \x01(\v2#.blaze_query.Attribute.SelectorListR\fselectorList\x12J\n" +
+	"\"DEPRECATED_string_dict_unary_value\x18\x12 \x03(\fR\x1eDEPRECATEDStringDictUnaryValue\x1a\xcf\a\n" +
+	"\rSelectorEntry\x12\x14\n" +
+	"\x05label\x18\x01 \x01(\tR\x05label\x12(\n" +
+	"\x10is_default_value\x18\x10 \x01(\bR\x0eisDefaultValue\x12\x1b\n" +
+	"\tint_value\x18\x02 \x01(\x05R\bintValue\x12!\n" +
+	"\fstring_value\x18\x03 \x01(\tR\vstringValue\x12#\n" +
+	"\rboolean_value\x18\x04 \x01(\bR\fbooleanValue\x12F\n" +
+	"\x0etristate_value\x18\x05 \x01(\x0e2\x1f.blaze_query.Attribute.TristateR\rtristateValue\x12*\n" +
+	"\x11string_list_value\x18\x06 \x03(\tR\x0fstringListValue\x12.\n" +
+	"\alicense\x18\a \x01(\v2\x14.blaze_query.LicenseR\alicense\x12H\n" +
+	"\x11string_dict_value\x18\b \x03(\v2\x1c.blaze_query.StringDictEntryR\x0fstringDictValue\x12G\n" +
+	"\x12fileset_list_value\x18\t \x03(\v2\x19.blaze_query.FilesetEntryR\x10filesetListValue\x12R\n" +
+	"\x15label_list_dict_value\x18\n" +
+	" \x03(\v2\x1f.blaze_query.LabelListDictEntryR\x12labelListDictValue\x12U\n" +
+	"\x16string_list_dict_value\x18\v \x03(\v2 .blaze_query.StringListDictEntryR\x13stringListDictValue\x12$\n" +
+	"\x0eint_list_value\x18\r \x03(\x05R\fintListValue\x12U\n" +
+	"\x16label_dict_unary_value\x18\x0f \x03(\v2 .blaze_query.LabelDictUnaryEntryR\x13labelDictUnaryValue\x12h\n" +
+	"\x1dlabel_keyed_string_dict_value\x18\x11 \x03(\v2&.blaze_query.LabelKeyedStringDictEntryR\x19labelKeyedStringDictValue\x12J\n" +
+	"\"DEPRECATED_string_dict_unary_value\x18\x0e \x03(\fR\x1eDEPRECATEDStringDictUnaryValueJ\x04\b\f\x10\r\x1a\x9c\x01\n" +
+	"\bSelector\x12>\n" +
+	"\aentries\x18\x01 \x03(\v2$.blaze_query.Attribute.SelectorEntryR\aentries\x12*\n" +
+	"\x11has_default_value\x18\x02 \x01(\bR\x0fhasDefaultValue\x12$\n" +
+	"\x0eno_match_error\x18\x03 \x01(\tR\fnoMatchError\x1a\x85\x01\n" +
+	"\fSelectorList\x128\n" +
+	"\x04type\x18\x01 \x01(\x0e2$.blaze_query.Attribute.DiscriminatorR\x04type\x12;\n" +
+	"\belements\x18\x02 \x03(\v2\x1f.blaze_query.Attribute.SelectorR\belements\"\x8a\x03\n" +
+	"\rDiscriminator\x12\v\n" +
+	"\aINTEGER\x10\x01\x12\n" +
+	"\n" +
+	"\x06STRING\x10\x02\x12\t\n" +
+	"\x05LABEL\x10\x03\x12\n" +
+	"\n" +
+	"\x06OUTPUT\x10\x04\x12\x0f\n" +
+	"\vSTRING_LIST\x10\x05\x12\x0e\n" +
+	"\n" +
+	"LABEL_LIST\x10\x06\x12\x0f\n" +
+	"\vOUTPUT_LIST\x10\a\x12\x14\n" +
+	"\x10DISTRIBUTION_SET\x10\b\x12\v\n" +
+	"\aLICENSE\x10\t\x12\x0f\n" +
+	"\vSTRING_DICT\x10\n" +
+	"\x12\x16\n" +
+	"\x12FILESET_ENTRY_LIST\x10\v\x12\x13\n" +
+	"\x0fLABEL_LIST_DICT\x10\f\x12\x14\n" +
+	"\x10STRING_LIST_DICT\x10\r\x12\v\n" +
+	"\aBOOLEAN\x10\x0e\x12\f\n" +
+	"\bTRISTATE\x10\x0f\x12\x10\n" +
+	"\fINTEGER_LIST\x10\x10\x12\v\n" +
+	"\aUNKNOWN\x10\x12\x12\x14\n" +
+	"\x10LABEL_DICT_UNARY\x10\x13\x12\x11\n" +
+	"\rSELECTOR_LIST\x10\x14\x12\x1b\n" +
+	"\x17LABEL_KEYED_STRING_DICT\x10\x15\x12 \n" +
+	"\x1cDEPRECATED_STRING_DICT_UNARY\x10\x11\"%\n" +
+	"\bTristate\x12\x06\n" +
+	"\x02NO\x10\x00\x12\a\n" +
+	"\x03YES\x10\x01\x12\b\n" +
+	"\x04AUTO\x10\x02J\x04\b\f\x10\rJ\x04\b\x10\x10\x11\"\xea\x04\n" +
+	"\x04Rule\x12\x12\n" +
+	"\x04name\x18\x01 \x02(\tR\x04name\x12\x1d\n" +
+	"\n" +
+	"rule_class\x18\x02 \x02(\tR\truleClass\x12\x1a\n" +
+	"\blocation\x18\x03 \x01(\tR\blocation\x124\n" +
+	"\tattribute\x18\x04 \x03(\v2\x16.blaze_query.AttributeR\tattribute\x12\x1d\n" +
+	"\n" +
+	"rule_input\x18\x05 \x03(\tR\truleInput\x12T\n" +
+	"\x15configured_rule_input\x18\x0f \x03(\v2 .blaze_query.ConfiguredRuleInputR\x13configuredRuleInput\x12\x1f\n" +
+	"\vrule_output\x18\x06 \x03(\tR\n" +
+	"ruleOutput\x12'\n" +
+	"\x0fdefault_setting\x18\a \x03(\tR\x0edefaultSetting\x12?\n" +
+	"\x1cDEPRECATED_public_by_default\x18\t \x01(\bR\x19DEPRECATEDPublicByDefault\x122\n" +
+	"\x15DEPRECATED_is_skylark\x18\n" +
+	" \x01(\bR\x13DEPRECATEDIsSkylark\x12A\n" +
+	"\x1dskylark_environment_hash_code\x18\f \x01(\tR\x1askylarkEnvironmentHashCode\x12/\n" +
+	"\x13instantiation_stack\x18\r \x03(\tR\x12instantiationStack\x12)\n" +
+	"\x10definition_stack\x18\x0e \x03(\tR\x0fdefinitionStackJ\x04\b\b\x10\tJ\x04\b\v\x10\f\"\x8d\x01\n" +
+	"\x13ConfiguredRuleInput\x12\x14\n" +
+	"\x05label\x18\x01 \x01(\tR\x05label\x125\n" +
+	"\x16configuration_checksum\x18\x02 \x01(\tR\x15configurationChecksum\x12)\n" +
+	"\x10configuration_id\x18\x03 \x01(\rR\x0fconfigurationId\"\x83\x01\n" +
+	"\vRuleSummary\x12%\n" +
+	"\x04rule\x18\x01 \x02(\v2\x11.blaze_query.RuleR\x04rule\x121\n" +
+	"\n" +
+	"dependency\x18\x02 \x03(\v2\x11.blaze_query.RuleR\n" +
+	"dependency\x12\x1a\n" +
+	"\blocation\x18\x03 \x01(\tR\blocation\"\x8b\x01\n" +
+	"\fPackageGroup\x12\x12\n" +
+	"\x04name\x18\x01 \x02(\tR\x04name\x12+\n" +
+	"\x11contained_package\x18\x02 \x03(\tR\x10containedPackage\x124\n" +
+	"\x16included_package_group\x18\x03 \x03(\tR\x14includedPackageGroupJ\x04\b\x04\x10\x05\"b\n" +
+	"\x10EnvironmentGroup\x12\x12\n" +
+	"\x04name\x18\x01 \x02(\tR\x04name\x12 \n" +
+	"\venvironment\x18\x02 \x03(\tR\venvironment\x12\x18\n" +
+	"\adefault\x18\x03 \x03(\tR\adefault\"\xb4\x02\n" +
+	"\n" +
+	"SourceFile\x12\x12\n" +
+	"\x04name\x18\x01 \x02(\tR\x04name\x12\x1a\n" +
+	"\blocation\x18\x02 \x01(\tR\blocation\x12\x1e\n" +
+	"\n" +
+	"subinclude\x18\x03 \x03(\tR\n" +
+	"subinclude\x12#\n" +
+	"\rpackage_group\x18\x04 \x03(\tR\fpackageGroup\x12)\n" +
+	"\x10visibility_label\x18\x05 \x03(\tR\x0fvisibilityLabel\x12\x18\n" +
+	"\afeature\x18\x06 \x03(\tR\afeature\x12.\n" +
+	"\alicense\x18\b \x01(\v2\x14.blaze_query.LicenseR\alicense\x126\n" +
+	"\x17package_contains_errors\x18\t \x01(\bR\x15packageContainsErrorsJ\x04\b\a\x10\b\"h\n" +
+	"\rGeneratedFile\x12\x12\n" +
+	"\x04name\x18\x01 \x02(\tR\x04name\x12'\n" +
+	"\x0fgenerating_rule\x18\x02 \x02(\tR\x0egeneratingRule\x12\x1a\n" +
+	"\blocation\x18\x03 \x01(\tR\blocation\"\xd9\x03\n" +
+	"\x06Target\x125\n" +
+	"\x04type\x18\x01 \x02(\x0e2!.blaze_query.Target.DiscriminatorR\x04type\x12%\n" +
+	"\x04rule\x18\x02 \x01(\v2\x11.blaze_query.RuleR\x04rule\x128\n" +
+	"\vsource_file\x18\x03 \x01(\v2\x17.blaze_query.SourceFileR\n" +
+	"sourceFile\x12A\n" +
+	"\x0egenerated_file\x18\x04 \x01(\v2\x1a.blaze_query.GeneratedFileR\rgeneratedFile\x12>\n" +
+	"\rpackage_group\x18\x05 \x01(\v2\x19.blaze_query.PackageGroupR\fpackageGroup\x12J\n" +
+	"\x11environment_group\x18\x06 \x01(\v2\x1d.blaze_query.EnvironmentGroupR\x10environmentGroup\"h\n" +
+	"\rDiscriminator\x12\b\n" +
+	"\x04RULE\x10\x01\x12\x0f\n" +
+	"\vSOURCE_FILE\x10\x02\x12\x12\n" +
+	"\x0eGENERATED_FILE\x10\x03\x12\x11\n" +
+	"\rPACKAGE_GROUP\x10\x04\x12\x15\n" +
+	"\x11ENVIRONMENT_GROUP\x10\x05\":\n" +
+	"\vQueryResult\x12+\n" +
+	"\x06target\x18\x01 \x03(\v2\x13.blaze_query.TargetR\x06target\"\xc0\x01\n" +
+	"\x14AllowedRuleClassInfo\x12L\n" +
+	"\x06policy\x18\x01 \x02(\x0e24.blaze_query.AllowedRuleClassInfo.AllowedRuleClassesR\x06policy\x12,\n" +
+	"\x12allowed_rule_class\x18\x02 \x03(\tR\x10allowedRuleClass\",\n" +
+	"\x12AllowedRuleClasses\x12\a\n" +
+	"\x03ANY\x10\x01\x12\r\n" +
+	"\tSPECIFIED\x10\x02\"\xfa\x03\n" +
+	"\x13AttributeDefinition\x12\x12\n" +
+	"\x04name\x18\x01 \x02(\tR\x04name\x128\n" +
+	"\x04type\x18\x02 \x02(\x0e2$.blaze_query.Attribute.DiscriminatorR\x04type\x12\x1c\n" +
+	"\tmandatory\x18\x03 \x01(\bR\tmandatory\x12S\n" +
+	"\x14allowed_rule_classes\x18\x04 \x01(\v2!.blaze_query.AllowedRuleClassInfoR\x12allowedRuleClasses\x12$\n" +
+	"\rdocumentation\x18\x05 \x01(\tR\rdocumentation\x12\x1f\n" +
+	"\vallow_empty\x18\x06 \x01(\bR\n" +
+	"allowEmpty\x12*\n" +
+	"\x11allow_single_file\x18\a \x01(\bR\x0fallowSingleFile\x125\n" +
+	"\adefault\x18\t \x01(\v2\x1b.blaze_query.AttributeValueR\adefault\x12\x1e\n" +
+	"\n" +
+	"executable\x18\n" +
+	" \x01(\bR\n" +
+	"executable\x12\"\n" +
+	"\fconfigurable\x18\v \x01(\bR\fconfigurable\x12\x14\n" +
+	"\x05nodep\x18\f \x01(\bR\x05nodep\x12\x1e\n" +
+	"\vcfg_is_host\x18\r \x01(\bR\tcfgIsHost\"\x8c\x02\n" +
+	"\x0eAttributeValue\x12\x10\n" +
+	"\x03int\x18\x01 \x01(\x05R\x03int\x12\x16\n" +
+	"\x06string\x18\x02 \x01(\tR\x06string\x12\x12\n" +
+	"\x04bool\x18\x03 \x01(\bR\x04bool\x12/\n" +
+	"\x04list\x18\x04 \x03(\v2\x1b.blaze_query.AttributeValueR\x04list\x129\n" +
+	"\x04dict\x18\x05 \x03(\v2%.blaze_query.AttributeValue.DictEntryR\x04dict\x1aP\n" +
+	"\tDictEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x02(\tR\x03key\x121\n" +
+	"\x05value\x18\x02 \x02(\v2\x1b.blaze_query.AttributeValueR\x05value\"\xa0\x01\n" +
+	"\x0eRuleDefinition\x12\x12\n" +
+	"\x04name\x18\x01 \x02(\tR\x04name\x12>\n" +
+	"\tattribute\x18\x02 \x03(\v2 .blaze_query.AttributeDefinitionR\tattribute\x12$\n" +
+	"\rdocumentation\x18\x03 \x01(\tR\rdocumentation\x12\x14\n" +
+	"\x05label\x18\x04 \x01(\tR\x05label\"@\n" +
+	"\rBuildLanguage\x12/\n" +
+	"\x04rule\x18\x01 \x03(\v2\x1b.blaze_query.RuleDefinitionR\x04ruleB6\n" +
+	"4com.google.devtools.build.lib.query2.proto.proto2api"
 
 var (
 	file_build_proto_build_proto_rawDescOnce sync.Once
-	file_build_proto_build_proto_rawDescData = file_build_proto_build_proto_rawDesc
+	file_build_proto_build_proto_rawDescData []byte
 )
 
 func file_build_proto_build_proto_rawDescGZIP() []byte {
 	file_build_proto_build_proto_rawDescOnce.Do(func() {
-		file_build_proto_build_proto_rawDescData = protoimpl.X.CompressGZIP(file_build_proto_build_proto_rawDescData)
+		file_build_proto_build_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_build_proto_build_proto_rawDesc), len(file_build_proto_build_proto_rawDesc)))
 	})
 	return file_build_proto_build_proto_rawDescData
 }
@@ -2883,7 +2661,7 @@
 	out := protoimpl.TypeBuilder{
 		File: protoimpl.DescBuilder{
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_build_proto_build_proto_rawDesc,
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_build_proto_build_proto_rawDesc), len(file_build_proto_build_proto_rawDesc)),
 			NumEnums:      5,
 			NumMessages:   26,
 			NumExtensions: 0,
@@ -2895,7 +2673,6 @@
 		MessageInfos:      file_build_proto_build_proto_msgTypes,
 	}.Build()
 	File_build_proto_build_proto = out.File
-	file_build_proto_build_proto_rawDesc = nil
 	file_build_proto_build_proto_goTypes = nil
 	file_build_proto_build_proto_depIdxs = nil
 }
diff --git a/deps_proto/deps.gen.pb.go b/deps_proto/deps.gen.pb.go
index ab9fcf3..dfe539c 100755
--- a/deps_proto/deps.gen.pb.go
+++ b/deps_proto/deps.gen.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.3
-// 	protoc        v6.33.0
+// 	protoc-gen-go v1.36.10
+// 	protoc        v7.34.0
 // source: deps_proto/deps.proto
 
 package deps_proto
@@ -11,6 +11,7 @@
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
+	unsafe "unsafe"
 )
 
 const (
@@ -272,51 +273,44 @@
 
 var File_deps_proto_deps_proto protoreflect.FileDescriptor
 
-var file_deps_proto_deps_proto_rawDesc = []byte{
-	0x0a, 0x15, 0x64, 0x65, 0x70, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x64, 0x65, 0x70,
-	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x64,
-	0x65, 0x70, 0x73, 0x22, 0x50, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20,
-	0x02, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a,
-	0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63,
-	0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x22, 0xc9, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64,
-	0x65, 0x6e, 0x63, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x02,
-	0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64,
-	0x18, 0x02, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x64,
-	0x65, 0x70, 0x73, 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x2e, 0x4b,
-	0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x6c, 0x6f, 0x63,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x62, 0x6c,
-	0x61, 0x7a, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x73, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c,
-	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x22, 0x3e, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x50,
-	0x4c, 0x49, 0x43, 0x49, 0x54, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4d, 0x50, 0x4c, 0x49,
-	0x43, 0x49, 0x54, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x4e, 0x55, 0x53, 0x45, 0x44, 0x10,
-	0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x4e, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10,
-	0x03, 0x22, 0xac, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69,
-	0x65, 0x73, 0x12, 0x36, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79,
-	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x5f, 0x64,
-	0x65, 0x70, 0x73, 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x0a,
-	0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x75,
-	0x6c, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
-	0x72, 0x75, 0x6c, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63,
-	0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63,
-	0x65, 0x73, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x64,
-	0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10,
-	0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
-	0x42, 0x2a, 0x0a, 0x28, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64,
-	0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x6c, 0x69,
-	0x62, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-}
+const file_deps_proto_deps_proto_rawDesc = "" +
+	"\n" +
+	"\x15deps_proto/deps.proto\x12\n" +
+	"blaze_deps\"P\n" +
+	"\x0eSourceLocation\x12\x12\n" +
+	"\x04path\x18\x01 \x02(\tR\x04path\x12\x12\n" +
+	"\x04line\x18\x02 \x01(\x05R\x04line\x12\x16\n" +
+	"\x06column\x18\x03 \x01(\x05R\x06column\"\xc9\x01\n" +
+	"\n" +
+	"Dependency\x12\x12\n" +
+	"\x04path\x18\x01 \x02(\tR\x04path\x12/\n" +
+	"\x04kind\x18\x02 \x02(\x0e2\x1b.blaze_deps.Dependency.KindR\x04kind\x126\n" +
+	"\blocation\x18\x03 \x03(\v2\x1a.blaze_deps.SourceLocationR\blocation\">\n" +
+	"\x04Kind\x12\f\n" +
+	"\bEXPLICIT\x10\x00\x12\f\n" +
+	"\bIMPLICIT\x10\x01\x12\n" +
+	"\n" +
+	"\x06UNUSED\x10\x02\x12\x0e\n" +
+	"\n" +
+	"INCOMPLETE\x10\x03\"\xac\x01\n" +
+	"\fDependencies\x126\n" +
+	"\n" +
+	"dependency\x18\x01 \x03(\v2\x16.blaze_deps.DependencyR\n" +
+	"dependency\x12\x1d\n" +
+	"\n" +
+	"rule_label\x18\x02 \x01(\tR\truleLabel\x12\x18\n" +
+	"\asuccess\x18\x03 \x01(\bR\asuccess\x12+\n" +
+	"\x11contained_package\x18\x04 \x03(\tR\x10containedPackageB*\n" +
+	"(com.google.devtools.build.lib.view.proto"
 
 var (
 	file_deps_proto_deps_proto_rawDescOnce sync.Once
-	file_deps_proto_deps_proto_rawDescData = file_deps_proto_deps_proto_rawDesc
+	file_deps_proto_deps_proto_rawDescData []byte
 )
 
 func file_deps_proto_deps_proto_rawDescGZIP() []byte {
 	file_deps_proto_deps_proto_rawDescOnce.Do(func() {
-		file_deps_proto_deps_proto_rawDescData = protoimpl.X.CompressGZIP(file_deps_proto_deps_proto_rawDescData)
+		file_deps_proto_deps_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_deps_proto_deps_proto_rawDesc), len(file_deps_proto_deps_proto_rawDesc)))
 	})
 	return file_deps_proto_deps_proto_rawDescData
 }
@@ -349,7 +343,7 @@
 	out := protoimpl.TypeBuilder{
 		File: protoimpl.DescBuilder{
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_deps_proto_deps_proto_rawDesc,
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_deps_proto_deps_proto_rawDesc), len(file_deps_proto_deps_proto_rawDesc)),
 			NumEnums:      1,
 			NumMessages:   3,
 			NumExtensions: 0,
@@ -361,7 +355,6 @@
 		MessageInfos:      file_deps_proto_deps_proto_msgTypes,
 	}.Build()
 	File_deps_proto_deps_proto = out.File
-	file_deps_proto_deps_proto_rawDesc = nil
 	file_deps_proto_deps_proto_goTypes = nil
 	file_deps_proto_deps_proto_depIdxs = nil
 }
diff --git a/extra_actions_base_proto/extra_actions_base.gen.pb.go b/extra_actions_base_proto/extra_actions_base.gen.pb.go
index 2f161e3..06d8666 100755
--- a/extra_actions_base_proto/extra_actions_base.gen.pb.go
+++ b/extra_actions_base_proto/extra_actions_base.gen.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.3
-// 	protoc        v6.33.0
+// 	protoc-gen-go v1.36.10
+// 	protoc        v7.34.0
 // source: extra_actions_base_proto/extra_actions_base.proto
 
 package extra_actions_base_proto
@@ -11,6 +11,7 @@
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
+	unsafe "unsafe"
 )
 
 const (
@@ -869,184 +870,104 @@
 
 var File_extra_actions_base_proto_extra_actions_base_proto protoreflect.FileDescriptor
 
-var file_extra_actions_base_proto_extra_actions_base_proto_rawDesc = []byte{
-	0x0a, 0x31, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f,
-	0x62, 0x61, 0x73, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x72, 0x61,
-	0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x12, 0x05, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x22, 0x4c, 0x0a, 0x12, 0x45, 0x78,
-	0x74, 0x72, 0x61, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
-	0x12, 0x36, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x1e, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65,
-	0x64, 0x45, 0x78, 0x74, 0x72, 0x61, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
-	0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x72, 0x0a, 0x17, 0x44, 0x65, 0x74, 0x61,
-	0x69, 0x6c, 0x65, 0x64, 0x45, 0x78, 0x74, 0x72, 0x61, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49,
-	0x6e, 0x66, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x69, 0x6e,
-	0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72,
-	0x69, 0x67, 0x67, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x06,
-	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x62,
-	0x6c, 0x61, 0x7a, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
-	0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xf4, 0x05, 0x0a,
-	0x0f, 0x45, 0x78, 0x74, 0x72, 0x61, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
-	0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0b, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74,
-	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52,
-	0x0a, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x5d, 0x0a, 0x11, 0x61,
-	0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73,
-	0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x2e, 0x45,
-	0x78, 0x74, 0x72, 0x61, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41,
-	0x73, 0x70, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74,
-	0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x41, 0x0a, 0x07, 0x61, 0x73,
-	0x70, 0x65, 0x63, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x6c,
-	0x61, 0x7a, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49,
-	0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69,
-	0x70, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x73, 0x12, 0x0e, 0x0a,
-	0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a,
-	0x08, 0x6d, 0x6e, 0x65, 0x6d, 0x6f, 0x6e, 0x69, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x08, 0x6d, 0x6e, 0x65, 0x6d, 0x6f, 0x6e, 0x69, 0x63, 0x1a, 0x66, 0x0a, 0x15, 0x41, 0x73, 0x70,
-	0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x72,
-	0x61, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
-	0x01, 0x1a, 0x26, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12,
-	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x18, 0x01, 0x1a, 0xbc, 0x02, 0x0a, 0x10, 0x41, 0x73,
-	0x70, 0x65, 0x63, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x1f,
-	0x0a, 0x0b, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12,
-	0x6a, 0x0a, 0x11, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65,
-	0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x62, 0x6c, 0x61,
-	0x7a, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e,
-	0x66, 0x6f, 0x2e, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
-	0x74, 0x6f, 0x72, 0x2e, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,
-	0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x61, 0x73, 0x70, 0x65, 0x63,
-	0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x77, 0x0a, 0x15, 0x41,
-	0x73, 0x70, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x2e, 0x45, 0x78,
-	0x74, 0x72, 0x61, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x73,
-	0x70, 0x65, 0x63, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x53,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x3a, 0x02, 0x38, 0x01, 0x1a, 0x22, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69,
-	0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28,
-	0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80,
-	0x80, 0x80, 0x02, 0x22, 0x3f, 0x0a, 0x13, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65,
-	0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
-	0x6d, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14,
-	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x22, 0xe9, 0x01, 0x0a, 0x09, 0x53, 0x70, 0x61, 0x77, 0x6e, 0x49, 0x6e,
-	0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x36,
-	0x0a, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x1a, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e,
-	0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x76, 0x61,
-	0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f,
-	0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75,
-	0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f,
-	0x66, 0x69, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70,
-	0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x32, 0x48, 0x0a, 0x0a, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x5f,
-	0x69, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x2e, 0x45, 0x78, 0x74,
-	0x72, 0x61, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0xeb, 0x07, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x2e, 0x53, 0x70, 0x61, 0x77,
-	0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
-	0x22, 0xd1, 0x02, 0x0a, 0x0e, 0x43, 0x70, 0x70, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x49,
-	0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x04, 0x74, 0x6f, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x69,
-	0x6c, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x6c,
-	0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x69,
-	0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x5f, 0x61, 0x6e,
-	0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52,
-	0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65,
-	0x72, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x06,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x2e, 0x45, 0x6e, 0x76,
-	0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
-	0x52, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x32, 0x58, 0x0a, 0x10, 0x63, 0x70,
-	0x70, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x16,
-	0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x41, 0x63, 0x74, 0x69,
-	0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
-	0x62, 0x6c, 0x61, 0x7a, 0x65, 0x2e, 0x43, 0x70, 0x70, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65,
-	0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x63, 0x70, 0x70, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65,
-	0x49, 0x6e, 0x66, 0x6f, 0x22, 0x9c, 0x03, 0x0a, 0x0b, 0x43, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b,
-	0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x66, 0x69,
-	0x6c, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46,
-	0x69, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x66, 0x69,
-	0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74,
-	0x46, 0x69, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63,
-	0x65, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4f, 0x75,
-	0x74, 0x70, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x69, 0x6e, 0x6b,
-	0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0e, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79,
-	0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69,
-	0x63, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x69, 0x6e,
-	0x6b, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6c,
-	0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52,
-	0x09, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3b, 0x0a, 0x1a, 0x62, 0x75,
-	0x69, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f,
-	0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17,
-	0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x41,
-	0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x5f,
-	0x6f, 0x70, 0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x6e, 0x6b, 0x4f,
-	0x70, 0x74, 0x32, 0x4f, 0x0a, 0x0d, 0x63, 0x70, 0x70, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69,
-	0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x72,
-	0x61, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0xea, 0x07, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x2e, 0x43, 0x70, 0x70, 0x4c, 0x69,
-	0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x49,
-	0x6e, 0x66, 0x6f, 0x22, 0x8e, 0x03, 0x0a, 0x0f, 0x4a, 0x61, 0x76, 0x61, 0x43, 0x6f, 0x6d, 0x70,
-	0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x75, 0x74, 0x70, 0x75,
-	0x74, 0x6a, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x75, 0x74, 0x70,
-	0x75, 0x74, 0x6a, 0x61, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x70, 0x61,
-	0x74, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x70,
-	0x61, 0x74, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x70, 0x61, 0x74,
-	0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x70,
-	0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x66, 0x69,
-	0x6c, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
-	0x46, 0x69, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x61, 0x76, 0x61, 0x63, 0x5f, 0x6f, 0x70,
-	0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x61, 0x76, 0x61, 0x63, 0x4f, 0x70,
-	0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x18, 0x06,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x12,
-	0x24, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x70, 0x61, 0x74, 0x68,
-	0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f,
-	0x72, 0x70, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x6f, 0x6f, 0x74, 0x63, 0x6c, 0x61,
-	0x73, 0x73, 0x70, 0x61, 0x74, 0x68, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x62, 0x6f,
-	0x6f, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x61,
-	0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x61,
-	0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x32, 0x5b, 0x0a, 0x11, 0x6a, 0x61, 0x76, 0x61, 0x5f,
-	0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x62,
-	0x6c, 0x61, 0x7a, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
-	0x49, 0x6e, 0x66, 0x6f, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x62, 0x6c,
-	0x61, 0x7a, 0x65, 0x2e, 0x4a, 0x61, 0x76, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x49,
-	0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x6a, 0x61, 0x76, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65,
-	0x49, 0x6e, 0x66, 0x6f, 0x22, 0x95, 0x01, 0x0a, 0x0a, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x49,
-	0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x66, 0x69,
-	0x6c, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
-	0x46, 0x69, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x5f, 0x66, 0x69, 0x6c, 0x65,
-	0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x32,
-	0x4b, 0x0a, 0x0b, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x16,
-	0x2e, 0x62, 0x6c, 0x61, 0x7a, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x41, 0x63, 0x74, 0x69,
-	0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0xed, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e,
-	0x62, 0x6c, 0x61, 0x7a, 0x65, 0x2e, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
-	0x52, 0x0a, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x2f, 0x0a, 0x2b,
-	0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f,
-	0x6f, 0x6c, 0x73, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x6c, 0x69, 0x62, 0x2e, 0x61, 0x63,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x78, 0x74, 0x72, 0x61, 0x50, 0x01,
-}
+const file_extra_actions_base_proto_extra_actions_base_proto_rawDesc = "" +
+	"\n" +
+	"1extra_actions_base_proto/extra_actions_base.proto\x12\x05blaze\"L\n" +
+	"\x12ExtraActionSummary\x126\n" +
+	"\x06action\x18\x01 \x03(\v2\x1e.blaze.DetailedExtraActionInfoR\x06action\"r\n" +
+	"\x17DetailedExtraActionInfo\x12'\n" +
+	"\x0ftriggering_file\x18\x01 \x01(\tR\x0etriggeringFile\x12.\n" +
+	"\x06action\x18\x02 \x02(\v2\x16.blaze.ExtraActionInfoR\x06action\"\xf4\x05\n" +
+	"\x0fExtraActionInfo\x12\x14\n" +
+	"\x05owner\x18\x01 \x01(\tR\x05owner\x12#\n" +
+	"\vaspect_name\x18\x06 \x01(\tB\x02\x18\x01R\n" +
+	"aspectName\x12]\n" +
+	"\x11aspect_parameters\x18\a \x03(\v2,.blaze.ExtraActionInfo.AspectParametersEntryB\x02\x18\x01R\x10aspectParameters\x12A\n" +
+	"\aaspects\x18\b \x03(\v2'.blaze.ExtraActionInfo.AspectDescriptorR\aaspects\x12\x0e\n" +
+	"\x02id\x18\x02 \x01(\tR\x02id\x12\x1a\n" +
+	"\bmnemonic\x18\x05 \x01(\tR\bmnemonic\x1af\n" +
+	"\x15AspectParametersEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x127\n" +
+	"\x05value\x18\x02 \x01(\v2!.blaze.ExtraActionInfo.StringListR\x05value:\x028\x01\x1a&\n" +
+	"\n" +
+	"StringList\x12\x14\n" +
+	"\x05value\x18\x01 \x03(\tR\x05value:\x02\x18\x01\x1a\xbc\x02\n" +
+	"\x10AspectDescriptor\x12\x1f\n" +
+	"\vaspect_name\x18\x01 \x01(\tR\n" +
+	"aspectName\x12j\n" +
+	"\x11aspect_parameters\x18\x02 \x03(\v2=.blaze.ExtraActionInfo.AspectDescriptor.AspectParametersEntryR\x10aspectParameters\x1aw\n" +
+	"\x15AspectParametersEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12H\n" +
+	"\x05value\x18\x02 \x01(\v22.blaze.ExtraActionInfo.AspectDescriptor.StringListR\x05value:\x028\x01\x1a\"\n" +
+	"\n" +
+	"StringList\x12\x14\n" +
+	"\x05value\x18\x01 \x03(\tR\x05value*\t\b\xe8\a\x10\x80\x80\x80\x80\x02\"?\n" +
+	"\x13EnvironmentVariable\x12\x12\n" +
+	"\x04name\x18\x01 \x02(\tR\x04name\x12\x14\n" +
+	"\x05value\x18\x02 \x02(\tR\x05value\"\xe9\x01\n" +
+	"\tSpawnInfo\x12\x1a\n" +
+	"\bargument\x18\x01 \x03(\tR\bargument\x126\n" +
+	"\bvariable\x18\x02 \x03(\v2\x1a.blaze.EnvironmentVariableR\bvariable\x12\x1d\n" +
+	"\n" +
+	"input_file\x18\x04 \x03(\tR\tinputFile\x12\x1f\n" +
+	"\voutput_file\x18\x05 \x03(\tR\n" +
+	"outputFile2H\n" +
+	"\n" +
+	"spawn_info\x12\x16.blaze.ExtraActionInfo\x18\xeb\a \x01(\v2\x10.blaze.SpawnInfoR\tspawnInfo\"\xd1\x02\n" +
+	"\x0eCppCompileInfo\x12\x12\n" +
+	"\x04tool\x18\x01 \x01(\tR\x04tool\x12'\n" +
+	"\x0fcompiler_option\x18\x02 \x03(\tR\x0ecompilerOption\x12\x1f\n" +
+	"\vsource_file\x18\x03 \x01(\tR\n" +
+	"sourceFile\x12\x1f\n" +
+	"\voutput_file\x18\x04 \x01(\tR\n" +
+	"outputFile\x12.\n" +
+	"\x13sources_and_headers\x18\x05 \x03(\tR\x11sourcesAndHeaders\x126\n" +
+	"\bvariable\x18\x06 \x03(\v2\x1a.blaze.EnvironmentVariableR\bvariable2X\n" +
+	"\x10cpp_compile_info\x12\x16.blaze.ExtraActionInfo\x18\xe9\a \x01(\v2\x15.blaze.CppCompileInfoR\x0ecppCompileInfo\"\x9c\x03\n" +
+	"\vCppLinkInfo\x12\x1d\n" +
+	"\n" +
+	"input_file\x18\x01 \x03(\tR\tinputFile\x12\x1f\n" +
+	"\voutput_file\x18\x02 \x01(\tR\n" +
+	"outputFile\x122\n" +
+	"\x15interface_output_file\x18\x03 \x01(\tR\x13interfaceOutputFile\x12(\n" +
+	"\x10link_target_type\x18\x04 \x01(\tR\x0elinkTargetType\x12'\n" +
+	"\x0flink_staticness\x18\x05 \x01(\tR\x0elinkStaticness\x12\x1d\n" +
+	"\n" +
+	"link_stamp\x18\x06 \x03(\tR\tlinkStamp\x12;\n" +
+	"\x1abuild_info_header_artifact\x18\a \x03(\tR\x17buildInfoHeaderArtifact\x12\x19\n" +
+	"\blink_opt\x18\b \x03(\tR\alinkOpt2O\n" +
+	"\rcpp_link_info\x12\x16.blaze.ExtraActionInfo\x18\xea\a \x01(\v2\x12.blaze.CppLinkInfoR\vcppLinkInfo\"\x8e\x03\n" +
+	"\x0fJavaCompileInfo\x12\x1c\n" +
+	"\toutputjar\x18\x01 \x01(\tR\toutputjar\x12\x1c\n" +
+	"\tclasspath\x18\x02 \x03(\tR\tclasspath\x12\x1e\n" +
+	"\n" +
+	"sourcepath\x18\x03 \x03(\tR\n" +
+	"sourcepath\x12\x1f\n" +
+	"\vsource_file\x18\x04 \x03(\tR\n" +
+	"sourceFile\x12\x1b\n" +
+	"\tjavac_opt\x18\x05 \x03(\tR\bjavacOpt\x12\x1c\n" +
+	"\tprocessor\x18\x06 \x03(\tR\tprocessor\x12$\n" +
+	"\rprocessorpath\x18\a \x03(\tR\rprocessorpath\x12$\n" +
+	"\rbootclasspath\x18\b \x03(\tR\rbootclasspath\x12\x1a\n" +
+	"\bargument\x18\t \x03(\tR\bargument2[\n" +
+	"\x11java_compile_info\x12\x16.blaze.ExtraActionInfo\x18\xe8\a \x01(\v2\x16.blaze.JavaCompileInfoR\x0fjavaCompileInfo\"\x95\x01\n" +
+	"\n" +
+	"PythonInfo\x12\x1f\n" +
+	"\vsource_file\x18\x01 \x03(\tR\n" +
+	"sourceFile\x12\x19\n" +
+	"\bdep_file\x18\x02 \x03(\tR\adepFile2K\n" +
+	"\vpython_info\x12\x16.blaze.ExtraActionInfo\x18\xed\a \x01(\v2\x11.blaze.PythonInfoR\n" +
+	"pythonInfoB/\n" +
+	"+com.google.devtools.build.lib.actions.extraP\x01"
 
 var (
 	file_extra_actions_base_proto_extra_actions_base_proto_rawDescOnce sync.Once
-	file_extra_actions_base_proto_extra_actions_base_proto_rawDescData = file_extra_actions_base_proto_extra_actions_base_proto_rawDesc
+	file_extra_actions_base_proto_extra_actions_base_proto_rawDescData []byte
 )
 
 func file_extra_actions_base_proto_extra_actions_base_proto_rawDescGZIP() []byte {
 	file_extra_actions_base_proto_extra_actions_base_proto_rawDescOnce.Do(func() {
-		file_extra_actions_base_proto_extra_actions_base_proto_rawDescData = protoimpl.X.CompressGZIP(file_extra_actions_base_proto_extra_actions_base_proto_rawDescData)
+		file_extra_actions_base_proto_extra_actions_base_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_extra_actions_base_proto_extra_actions_base_proto_rawDesc), len(file_extra_actions_base_proto_extra_actions_base_proto_rawDesc)))
 	})
 	return file_extra_actions_base_proto_extra_actions_base_proto_rawDescData
 }
@@ -1104,7 +1025,7 @@
 	out := protoimpl.TypeBuilder{
 		File: protoimpl.DescBuilder{
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_extra_actions_base_proto_extra_actions_base_proto_rawDesc,
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_extra_actions_base_proto_extra_actions_base_proto_rawDesc), len(file_extra_actions_base_proto_extra_actions_base_proto_rawDesc)),
 			NumEnums:      0,
 			NumMessages:   14,
 			NumExtensions: 5,
@@ -1116,7 +1037,6 @@
 		ExtensionInfos:    file_extra_actions_base_proto_extra_actions_base_proto_extTypes,
 	}.Build()
 	File_extra_actions_base_proto_extra_actions_base_proto = out.File
-	file_extra_actions_base_proto_extra_actions_base_proto_rawDesc = nil
 	file_extra_actions_base_proto_extra_actions_base_proto_goTypes = nil
 	file_extra_actions_base_proto_extra_actions_base_proto_depIdxs = nil
 }
diff --git a/go.mod b/go.mod
index c39bab1..b925f56 100644
--- a/go.mod
+++ b/go.mod
@@ -1,11 +1,20 @@
 module github.com/bazel-contrib/buildtools/v10
 
-go 1.20
+go 1.26.0
+
+toolchain go1.27.1
 
 require (
-	github.com/golang/protobuf v1.5.0
-	github.com/google/go-cmp v0.5.9
+	github.com/golang/protobuf v1.5.4
+	github.com/google/go-cmp v0.7.0
 	github.com/google/safeopen v0.0.0-20260327150837-43626d6f4685
 	go.starlark.net v0.0.0-20210223155950-e043a3d3c984
-	google.golang.org/protobuf v1.33.0
+	google.golang.org/protobuf v1.36.10
 )
+
+require (
+	golang.org/x/sys v0.48.0 // indirect
+	golang.org/x/tools v0.50.0 // indirect
+)
+
+tool golang.org/x/tools/cmd/goyacc
diff --git a/go.sum b/go.sum
index d5a2ba2..eb4b975 100644
--- a/go.sum
+++ b/go.sum
@@ -17,22 +17,19 @@
 github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
 github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
 github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
-github.com/golang/protobuf v1.5.0 h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4=
-github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
+github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
 github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
 github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
 github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
-github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
+github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
 github.com/google/safeopen v0.0.0-20260327150837-43626d6f4685 h1:NcJjfIYRDHuboRtptwjtdQflVDKgXSqTIfwu9PpE9uo=
 github.com/google/safeopen v0.0.0-20260327150837-43626d6f4685/go.mod h1:D59KewtQCiD2Avi8N/v2zb/xTYaefwJl+ux2ejB58GQ=
 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-go.starlark.net v0.0.0-20200203144150-6677ee5c7211 h1:Qoe+9POtDT51UBQ8XEnS9QKeHDQzEl2QRh3eok9R4aw=
-go.starlark.net v0.0.0-20200203144150-6677ee5c7211/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o=
 go.starlark.net v0.0.0-20210223155950-e043a3d3c984 h1:xwwDQW5We85NaTk2APgoN9202w/l0DVGp+GZMfsrh7s=
 go.starlark.net v0.0.0-20210223155950-e043a3d3c984/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
@@ -50,15 +47,16 @@
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA=
-golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.48.0 h1:bbX/i/6MgT9BVLM9RT1thmxL04yeTAhbEz4SyadbXoo=
+golang.org/x/sys v0.48.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.50.0 h1:c2ifzfcuY7L90lZ2aKd8S4K2NpASF08SZx9ZuJkHmSU=
+golang.org/x/tools v0.50.0/go.mod h1:7ulVMw3831Mwi5EZD6RomGyffr4VFjuNYXf2BbCEAV0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
@@ -77,8 +75,7 @@
 google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
 google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
-google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
-google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
+google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
 honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff --git a/warn/docs/BUILD.bazel b/warn/docs/BUILD.bazel
index ac50cde..d14d0d3 100644
--- a/warn/docs/BUILD.bazel
+++ b/warn/docs/BUILD.bazel
@@ -1,6 +1,4 @@
 load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library", "go_test")
-load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
-load("@rules_proto//proto:defs.bzl", "proto_library")
 load(":build_defs.bzl", "documentation")
 
 documentation(
@@ -22,8 +20,8 @@
     importpath = "github.com/bazel-contrib/buildtools/v10/warn/docs",
     visibility = ["//visibility:private"],
     deps = [
-        ":proto_go_proto",
         "//warn",
+        "//warn/docs/proto",
         "@com_github_golang_protobuf//proto:go_default_library",
     ],
 )
@@ -43,16 +41,3 @@
         "//warn",
     ],
 )
-
-proto_library(
-    name = "docs_proto",
-    srcs = ["docs.proto"],
-    visibility = ["//visibility:public"],
-)
-
-go_proto_library(
-    name = "proto_go_proto",
-    importpath = "github.com/bazel-contrib/buildtools/v10/warn/docs/proto",
-    proto = ":docs_proto",
-    visibility = ["//visibility:public"],
-)
diff --git a/warn/docs/proto/BUILD.bazel b/warn/docs/proto/BUILD.bazel
new file mode 100644
index 0000000..1d63da1
--- /dev/null
+++ b/warn/docs/proto/BUILD.bazel
@@ -0,0 +1,37 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
+load("@rules_proto//proto:defs.bzl", "proto_library")
+load("//build:build_defs.bzl", "go_proto_checkedin_test")
+
+# gazelle:exclude docs.gen.pb.go
+
+go_proto_checkedin_test(
+    src = "docs.gen.pb.go",
+    allowed_diffs = ["^[[:space:]]*//.*protoc"],
+)
+
+proto_library(
+    name = "docs_proto",
+    srcs = ["docs.proto"],
+    visibility = ["//visibility:public"],
+)
+
+go_proto_library(
+    name = "proto_go_proto",
+    importpath = "github.com/bazel-contrib/buildtools/v10/warn/docs/proto",
+    proto = ":docs_proto",
+    visibility = ["//visibility:public"],
+)
+
+go_library(
+    name = "proto",
+    embed = [":proto_go_proto"],
+    importpath = "github.com/bazel-contrib/buildtools/v10/warn/docs/proto",
+    visibility = ["//visibility:public"],
+)
+
+alias(
+    name = "go_default_library",
+    actual = ":proto",
+    visibility = ["//visibility:public"],
+)
diff --git a/warn/docs/proto/docs.gen.pb.go b/warn/docs/proto/docs.gen.pb.go
new file mode 100644
index 0000000..bf5dd0e
--- /dev/null
+++ b/warn/docs/proto/docs.gen.pb.go
@@ -0,0 +1,216 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.10
+// 	protoc        v7.34.0
+// source: warn/docs/proto/docs.proto
+
+package proto
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
+)
+
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type Warnings struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Warnings      []*Warnings_Warning    `protobuf:"bytes,1,rep,name=warnings,proto3" json:"warnings,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Warnings) Reset() {
+	*x = Warnings{}
+	mi := &file_warn_docs_proto_docs_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Warnings) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Warnings) ProtoMessage() {}
+
+func (x *Warnings) ProtoReflect() protoreflect.Message {
+	mi := &file_warn_docs_proto_docs_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Warnings.ProtoReflect.Descriptor instead.
+func (*Warnings) Descriptor() ([]byte, []int) {
+	return file_warn_docs_proto_docs_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Warnings) GetWarnings() []*Warnings_Warning {
+	if x != nil {
+		return x.Warnings
+	}
+	return nil
+}
+
+type Warnings_Warning struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Name          []string               `protobuf:"bytes,1,rep,name=name,proto3" json:"name,omitempty"`
+	Header        string                 `protobuf:"bytes,2,opt,name=header,proto3" json:"header,omitempty"`
+	Description   string                 `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+	Autofix       bool                   `protobuf:"varint,4,opt,name=autofix,proto3" json:"autofix,omitempty"`
+	BazelFlag     string                 `protobuf:"bytes,5,opt,name=bazel_flag,json=bazelFlag,proto3" json:"bazel_flag,omitempty"`
+	BazelFlagLink string                 `protobuf:"bytes,6,opt,name=bazel_flag_link,json=bazelFlagLink,proto3" json:"bazel_flag_link,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Warnings_Warning) Reset() {
+	*x = Warnings_Warning{}
+	mi := &file_warn_docs_proto_docs_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Warnings_Warning) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Warnings_Warning) ProtoMessage() {}
+
+func (x *Warnings_Warning) ProtoReflect() protoreflect.Message {
+	mi := &file_warn_docs_proto_docs_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Warnings_Warning.ProtoReflect.Descriptor instead.
+func (*Warnings_Warning) Descriptor() ([]byte, []int) {
+	return file_warn_docs_proto_docs_proto_rawDescGZIP(), []int{0, 0}
+}
+
+func (x *Warnings_Warning) GetName() []string {
+	if x != nil {
+		return x.Name
+	}
+	return nil
+}
+
+func (x *Warnings_Warning) GetHeader() string {
+	if x != nil {
+		return x.Header
+	}
+	return ""
+}
+
+func (x *Warnings_Warning) GetDescription() string {
+	if x != nil {
+		return x.Description
+	}
+	return ""
+}
+
+func (x *Warnings_Warning) GetAutofix() bool {
+	if x != nil {
+		return x.Autofix
+	}
+	return false
+}
+
+func (x *Warnings_Warning) GetBazelFlag() string {
+	if x != nil {
+		return x.BazelFlag
+	}
+	return ""
+}
+
+func (x *Warnings_Warning) GetBazelFlagLink() string {
+	if x != nil {
+		return x.BazelFlagLink
+	}
+	return ""
+}
+
+var File_warn_docs_proto_docs_proto protoreflect.FileDescriptor
+
+const file_warn_docs_proto_docs_proto_rawDesc = "" +
+	"\n" +
+	"\x1awarn/docs/proto/docs.proto\x12\x04docs\"\xf9\x01\n" +
+	"\bWarnings\x122\n" +
+	"\bwarnings\x18\x01 \x03(\v2\x16.docs.Warnings.WarningR\bwarnings\x1a\xb8\x01\n" +
+	"\aWarning\x12\x12\n" +
+	"\x04name\x18\x01 \x03(\tR\x04name\x12\x16\n" +
+	"\x06header\x18\x02 \x01(\tR\x06header\x12 \n" +
+	"\vdescription\x18\x03 \x01(\tR\vdescription\x12\x18\n" +
+	"\aautofix\x18\x04 \x01(\bR\aautofix\x12\x1d\n" +
+	"\n" +
+	"bazel_flag\x18\x05 \x01(\tR\tbazelFlag\x12&\n" +
+	"\x0fbazel_flag_link\x18\x06 \x01(\tR\rbazelFlagLinkB9Z7github.com/bazel-contrib/buildtools/v10/warn/docs/protob\x06proto3"
+
+var (
+	file_warn_docs_proto_docs_proto_rawDescOnce sync.Once
+	file_warn_docs_proto_docs_proto_rawDescData []byte
+)
+
+func file_warn_docs_proto_docs_proto_rawDescGZIP() []byte {
+	file_warn_docs_proto_docs_proto_rawDescOnce.Do(func() {
+		file_warn_docs_proto_docs_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_warn_docs_proto_docs_proto_rawDesc), len(file_warn_docs_proto_docs_proto_rawDesc)))
+	})
+	return file_warn_docs_proto_docs_proto_rawDescData
+}
+
+var file_warn_docs_proto_docs_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_warn_docs_proto_docs_proto_goTypes = []any{
+	(*Warnings)(nil),         // 0: docs.Warnings
+	(*Warnings_Warning)(nil), // 1: docs.Warnings.Warning
+}
+var file_warn_docs_proto_docs_proto_depIdxs = []int32{
+	1, // 0: docs.Warnings.warnings:type_name -> docs.Warnings.Warning
+	1, // [1:1] is the sub-list for method output_type
+	1, // [1:1] is the sub-list for method input_type
+	1, // [1:1] is the sub-list for extension type_name
+	1, // [1:1] is the sub-list for extension extendee
+	0, // [0:1] is the sub-list for field type_name
+}
+
+func init() { file_warn_docs_proto_docs_proto_init() }
+func file_warn_docs_proto_docs_proto_init() {
+	if File_warn_docs_proto_docs_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_warn_docs_proto_docs_proto_rawDesc), len(file_warn_docs_proto_docs_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   2,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_warn_docs_proto_docs_proto_goTypes,
+		DependencyIndexes: file_warn_docs_proto_docs_proto_depIdxs,
+		MessageInfos:      file_warn_docs_proto_docs_proto_msgTypes,
+	}.Build()
+	File_warn_docs_proto_docs_proto = out.File
+	file_warn_docs_proto_docs_proto_goTypes = nil
+	file_warn_docs_proto_docs_proto_depIdxs = nil
+}
diff --git a/warn/docs/docs.proto b/warn/docs/proto/docs.proto
similarity index 100%
rename from warn/docs/docs.proto
rename to warn/docs/proto/docs.proto