From f68fd1306fa77f7f5f90e3ec497124df37868198 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 12 Mar 2024 07:54:59 +0000 Subject: [PATCH] fix(deps): update all go dependencies main Signed-off-by: renovate[bot] --- go.mod | 22 +- go.sum | 44 +- vendor/github.com/cilium/charts/README.md | 1 + .../cilium/charts/cilium-1.16.0-pre.0.tgz | Bin 0 -> 180649 bytes vendor/github.com/cilium/charts/index.yaml | 108 +- .../common/expfmt/openmetrics_create.go | 117 +- .../prometheus/common/model/metric.go | 1 + vendor/golang.org/x/net/http2/transport.go | 9 + vendor/golang.org/x/sys/unix/aliases.go | 2 +- .../x/sys/unix/syscall_darwin_libSystem.go | 2 +- .../golang.org/x/sys/unix/syscall_freebsd.go | 12 +- vendor/golang.org/x/sys/unix/syscall_linux.go | 99 ++ .../golang.org/x/sys/unix/zsyscall_linux.go | 10 + vendor/golang.org/x/sys/unix/ztypes_linux.go | 60 + .../encoding/protojson/well_known_types.go | 4 + .../internal/editiondefaults/defaults.go | 12 + .../editiondefaults}/editions_defaults.binpb | 2 +- .../protobuf/internal/encoding/json/decode.go | 2 +- .../protobuf/internal/filedesc/desc.go | 67 +- .../protobuf/internal/filedesc/desc_init.go | 52 + .../protobuf/internal/filedesc/desc_lazy.go | 28 + .../protobuf/internal/filedesc/editions.go | 142 ++ .../protobuf/internal/genid/descriptor_gen.go | 152 +- .../internal/genid/go_features_gen.go | 31 + .../protobuf/internal/genid/struct_gen.go | 5 + .../protobuf/internal/genid/type_gen.go | 38 + .../protobuf/internal/impl/codec_extension.go | 22 +- .../protobuf/internal/impl/codec_tables.go | 2 +- .../internal/impl/message_reflect_field.go | 2 +- .../protobuf/internal/strs/strings.go | 2 +- .../protobuf/internal/version/version.go | 2 +- .../protobuf/reflect/protodesc/desc_init.go | 42 +- .../reflect/protodesc/desc_resolve.go | 4 +- .../reflect/protodesc/desc_validate.go | 6 +- .../protobuf/reflect/protodesc/editions.go | 131 +- .../protobuf/reflect/protoreflect/proto.go | 2 + .../reflect/protoreflect/source_gen.go | 2 - .../types/descriptorpb/descriptor.pb.go | 1254 ++++++++--------- .../types/gofeaturespb/go_features.pb.go | 177 +++ .../types/gofeaturespb/go_features.proto | 28 + vendor/modules.txt | 28 +- 41 files changed, 1872 insertions(+), 854 deletions(-) create mode 100644 vendor/github.com/cilium/charts/cilium-1.16.0-pre.0.tgz create mode 100644 vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go rename vendor/google.golang.org/protobuf/{reflect/protodesc => internal/editiondefaults}/editions_defaults.binpb (69%) create mode 100644 vendor/google.golang.org/protobuf/internal/filedesc/editions.go create mode 100644 vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go create mode 100644 vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go create mode 100644 vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.proto diff --git a/go.mod b/go.mod index 11b5f74ef9..c948f48c03 100644 --- a/go.mod +++ b/go.mod @@ -13,15 +13,15 @@ replace ( require ( github.com/blang/semver/v4 v4.0.0 - github.com/cilium/charts v0.0.0-20240215004515-bc815e50489c + github.com/cilium/charts v0.0.0-20240306101429-d0833cd64c89 github.com/cilium/cilium v1.16.0-pre.0 github.com/cilium/hubble v0.13.0 github.com/cilium/tetragon/pkg/k8s v0.0.0-20231127174521-c97da4b42413 github.com/cilium/workerpool v1.2.0 github.com/cloudflare/cfssl v1.6.5 - github.com/go-openapi/strfmt v0.22.2 + github.com/go-openapi/strfmt v0.23.0 github.com/google/gops v0.3.28 - github.com/osrg/gobgp/v3 v3.23.0 + github.com/osrg/gobgp/v3 v3.24.0 github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.6-0.20210604193023-d5e0c0615ace @@ -119,7 +119,7 @@ require ( github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.22.2 // indirect - github.com/go-openapi/errors v0.21.1 // indirect + github.com/go-openapi/errors v0.22.0 // indirect github.com/go-openapi/jsonpointer v0.20.2 // indirect github.com/go-openapi/jsonreference v0.20.4 // indirect github.com/go-openapi/loads v0.21.5 // indirect @@ -181,7 +181,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect github.com/prometheus/client_model v0.6.0 - github.com/prometheus/common v0.49.0 + github.com/prometheus/common v0.50.0 github.com/prometheus/procfs v0.12.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect @@ -208,16 +208,16 @@ require ( go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect - golang.org/x/crypto v0.20.0 // indirect - golang.org/x/net v0.21.0 // indirect - golang.org/x/oauth2 v0.17.0 // indirect + golang.org/x/crypto v0.21.0 // indirect + golang.org/x/net v0.22.0 // indirect + golang.org/x/oauth2 v0.18.0 // indirect golang.org/x/sync v0.6.0 // indirect - golang.org/x/sys v0.17.0 // indirect - golang.org/x/term v0.17.0 // indirect + golang.org/x/sys v0.18.0 // indirect + golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.5.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/protobuf v1.32.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 diff --git a/go.sum b/go.sum index e98db4d6df..01cc75e562 100644 --- a/go.sum +++ b/go.sum @@ -66,8 +66,8 @@ github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHe github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cilium/charts v0.0.0-20240215004515-bc815e50489c h1:hR7JVk1BMzy7C/tHXC1HQpZCTz05zHD+shiagUvo4bI= -github.com/cilium/charts v0.0.0-20240215004515-bc815e50489c/go.mod h1:M3C9VOlFvRzuV+a01t07Tw4uFLSfkCH3L542IWjf6BU= +github.com/cilium/charts v0.0.0-20240306101429-d0833cd64c89 h1:GWynY7zTgClN8QuujOJ4cpwOcnEfJ35i78hQRbPd68A= +github.com/cilium/charts v0.0.0-20240306101429-d0833cd64c89/go.mod h1:M3C9VOlFvRzuV+a01t07Tw4uFLSfkCH3L542IWjf6BU= github.com/cilium/checkmate v1.0.3 h1:CQC5eOmlAZeEjPrVZY3ZwEBH64lHlx9mXYdUehEwI5w= github.com/cilium/checkmate v1.0.3/go.mod h1:KiBTasf39/F2hf2yAmHw21YFl3hcEyP4Yk6filxc12A= github.com/cilium/cilium v1.16.0-pre.0 h1:JZPJzVbdA9p7gzq63vWtNgVWYg7Ei3DHf7Ub0RhobbM= @@ -175,8 +175,8 @@ github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA= github.com/go-openapi/analysis v0.22.2 h1:ZBmNoP2h5omLKr/srIC9bfqrUGzT6g6gNv03HE9Vpj0= github.com/go-openapi/analysis v0.22.2/go.mod h1:pDF4UbZsQTo/oNuRfAWWd4dAh4yuYf//LYorPTjrpvo= -github.com/go-openapi/errors v0.21.1 h1:rVisxQPdETctjlYntm0Ek4dKf68nAQocCloCT50vWuI= -github.com/go-openapi/errors v0.21.1/go.mod h1:LyiY9bgc7AVVh6wtVvMYEyoj3KJYNoRw92mmvnMWgj8= +github.com/go-openapi/errors v0.22.0 h1:c4xY/OLxUBSTiepAg3j/MHuAv5mJhnf53LLMWFB+u/w= +github.com/go-openapi/errors v0.22.0/go.mod h1:J3DmZScxCDufmIMsdOuDHxJbdOGC0xtUynjIx092vXE= github.com/go-openapi/jsonpointer v0.20.2 h1:mQc3nmndL8ZBzStEo3JYF8wzmeWffDH4VbXz58sAx6Q= github.com/go-openapi/jsonpointer v0.20.2/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs= github.com/go-openapi/jsonreference v0.20.4 h1:bKlDxQxQJgwpUSgOENiMPzCTBVuc7vTdXSSgNeAhojU= @@ -187,8 +187,8 @@ github.com/go-openapi/runtime v0.27.1 h1:ae53yaOoh+fx/X5Eaq8cRmavHgDma65XPZuvBqv github.com/go-openapi/runtime v0.27.1/go.mod h1:fijeJEiEclyS8BRurYE1DE5TLb9/KZl6eAdbzjsrlLU= github.com/go-openapi/spec v0.20.14 h1:7CBlRnw+mtjFGlPDRZmAMnq35cRzI91xj03HVyUi/Do= github.com/go-openapi/spec v0.20.14/go.mod h1:8EOhTpBoFiask8rrgwbLC3zmJfz4zsCUueRuPM6GNkw= -github.com/go-openapi/strfmt v0.22.2 h1:DPYOrm6gexCfZZfXUaXFS4+Jw6HAaIIG0SZ5630f8yw= -github.com/go-openapi/strfmt v0.22.2/go.mod h1:HB/b7TCm91rno75Dembc1dFW/0FPLk5CEXsoF9ReNc4= +github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c= +github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4= github.com/go-openapi/swag v0.22.9 h1:XX2DssF+mQKM2DHsbgZK74y/zj4mo9I99+89xUmuZCE= github.com/go-openapi/swag v0.22.9/go.mod h1:3/OXnFfnMAwBD099SwYRk7GD3xOrr1iL7d/XNLXVVwE= github.com/go-openapi/validate v0.23.0 h1:2l7PJLzCis4YUGEoW6eoQw3WhyM65WSIcjX6SQnlfDw= @@ -460,8 +460,8 @@ github.com/opencontainers/image-spec v1.1.0-rc6 h1:XDqvyKsJEbRtATzkgItUqBA7QHk58 github.com/opencontainers/image-spec v1.1.0-rc6/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b h1:FfH+VrHHk6Lxt9HdVS0PXzSXFyS2NbZKXv33FYPol0A= github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b/go.mod h1:AC62GU6hc0BrNm+9RK9VSiwa/EUe1bkIeFORAMcHvJU= -github.com/osrg/gobgp/v3 v3.23.0 h1:2QTiSAiEuHXOqELC8Y4hBvxdqedIZfcwuUndOw4vilE= -github.com/osrg/gobgp/v3 v3.23.0/go.mod h1:4fbscYpsCk14EO16nTWAdJyErO4MbAZ2zLJmsmeXu/k= +github.com/osrg/gobgp/v3 v3.24.0 h1:i2Sa63BzozmscUVorUme3rx5STuOOhrajV6UhKJTGmY= +github.com/osrg/gobgp/v3 v3.24.0/go.mod h1:4fbscYpsCk14EO16nTWAdJyErO4MbAZ2zLJmsmeXu/k= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= @@ -505,8 +505,8 @@ github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOA github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= -github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= +github.com/prometheus/common v0.50.0 h1:YSZE6aa9+luNa2da6/Tik0q0A5AbR+U003TItK57CPQ= +github.com/prometheus/common v0.50.0/go.mod h1:wHFBCEVWVmHMUpg7pYcOm2QUR/ocQdYSJVQJKnHc3xQ= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= @@ -669,8 +669,8 @@ golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= -golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= @@ -706,11 +706,11 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ= -golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= +golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -758,8 +758,8 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -767,8 +767,8 @@ golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuX golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -829,8 +829,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/vendor/github.com/cilium/charts/README.md b/vendor/github.com/cilium/charts/README.md index 34c64adfc7..119e087ece 100644 --- a/vendor/github.com/cilium/charts/README.md +++ b/vendor/github.com/cilium/charts/README.md @@ -1,5 +1,6 @@ This repository holds helm templates for the following Cilium releases: +* [v1.16.0-pre.0](https://github.com/cilium/cilium/releases/tag/v1.16.0-pre.0) (_[source](https://github.com/cilium/cilium/tree/v1.16.0-pre.0/install/kubernetes/cilium)_) * [v1.15.1](https://github.com/cilium/cilium/releases/tag/v1.15.1) (_[source](https://github.com/cilium/cilium/tree/v1.15.1/install/kubernetes/cilium)_) * [v1.15.0](https://github.com/cilium/cilium/releases/tag/v1.15.0) (_[source](https://github.com/cilium/cilium/tree/v1.15.0/install/kubernetes/cilium)_) * [v1.15.0-rc.1](https://github.com/cilium/cilium/releases/tag/v1.15.0-rc.1) (_[source](https://github.com/cilium/cilium/tree/v1.15.0-rc.1/install/kubernetes/cilium)_) diff --git a/vendor/github.com/cilium/charts/cilium-1.16.0-pre.0.tgz b/vendor/github.com/cilium/charts/cilium-1.16.0-pre.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..1df05c9d1ea66915b756d957cbd0e8fe21ed4eaa GIT binary patch literal 180649 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

u;=AM|j`mI;y`w1pN8wN|0_tw&Ovdvj#D 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 1.16.0-0' + name: cilium + sources: + - https://github.com/cilium/cilium + urls: + - cilium-1.16.0-pre.0.tgz + version: 1.16.0-pre.0 - annotations: artifacthub.io/crds: "- kind: CiliumNetworkPolicy\n version: v2\n name: ciliumnetworkpolicies.cilium.io\n \ displayName: Cilium Network Policy\n description: |\n Cilium Network @@ -16213,4 +16319,4 @@ entries: urls: - tetragon-0.8.0.tgz version: 0.8.0 -generated: "2024-02-15T00:44:36.349273265Z" +generated: "2024-03-04T13:27:21.465808567+01:00" diff --git a/vendor/github.com/prometheus/common/expfmt/openmetrics_create.go b/vendor/github.com/prometheus/common/expfmt/openmetrics_create.go index 63fc1f4d16..432843da33 100644 --- a/vendor/github.com/prometheus/common/expfmt/openmetrics_create.go +++ b/vendor/github.com/prometheus/common/expfmt/openmetrics_create.go @@ -31,6 +31,7 @@ import ( type encoderOption struct { withCreatedLines bool + withUnit bool } type EncoderOption func(*encoderOption) @@ -51,6 +52,17 @@ func WithCreatedLines() EncoderOption { } } +// WithUnit is an EncoderOption enabling a set unit to be written to the output +// and to be added to the metric name, if it's not there already, as a suffix. +// Without opting in this way, the unit will not be added to the metric name and, +// on top of that, the unit will not be passed onto the output, even if it +// were declared in the *dto.MetricFamily struct, i.e. even if in.Unit !=nil. +func WithUnit() EncoderOption { + return func(t *encoderOption) { + t.withUnit = true + } +} + // MetricFamilyToOpenMetrics converts a MetricFamily proto message into the // OpenMetrics text format and writes the resulting lines to 'out'. It returns // the number of bytes written and any error encountered. The output will have @@ -83,12 +95,21 @@ func WithCreatedLines() EncoderOption { // Prometheus to OpenMetrics or vice versa: // // - Counters are expected to have the `_total` suffix in their metric name. In -// the output, the suffix will be truncated from the `# TYPE` and `# HELP` -// line. A counter with a missing `_total` suffix is not an error. However, +// the output, the suffix will be truncated from the `# TYPE`, `# HELP` and `# UNIT` +// lines. A counter with a missing `_total` suffix is not an error. However, // its type will be set to `unknown` in that case to avoid invalid OpenMetrics // output. // -// - No support for the following (optional) features: `# UNIT` line, info type, +// - According to the OM specs, the `# UNIT` line is optional, but if populated, +// the unit has to be present in the metric name as its suffix: +// (see https://github.com/OpenObservability/OpenMetrics/blob/main/specification/OpenMetrics.md#unit). +// However, in order to accommodate any potential scenario where such a change in the +// metric name is not desirable, the users are here given the choice of either explicitly +// opt in, in case they wish for the unit to be included in the output AND in the metric name +// as a suffix (see the description of the WithUnit function above), +// or not to opt in, in case they don't want for any of that to happen. +// +// - No support for the following (optional) features: info type, // stateset type, gaugehistogram type. // // - The size of exemplar labels is not checked (i.e. it's possible to create @@ -124,12 +145,15 @@ func MetricFamilyToOpenMetrics(out io.Writer, in *dto.MetricFamily, options ...E } var ( - n int - metricType = in.GetType() - shortName = name + n int + metricType = in.GetType() + compliantName = name ) - if metricType == dto.MetricType_COUNTER && strings.HasSuffix(shortName, "_total") { - shortName = name[:len(name)-6] + if metricType == dto.MetricType_COUNTER && strings.HasSuffix(compliantName, "_total") { + compliantName = name[:len(name)-6] + } + if toOM.withUnit && in.Unit != nil && !strings.HasSuffix(compliantName, fmt.Sprintf("_%s", *in.Unit)) { + compliantName = compliantName + fmt.Sprintf("_%s", *in.Unit) } // Comments, first HELP, then TYPE. @@ -139,7 +163,7 @@ func MetricFamilyToOpenMetrics(out io.Writer, in *dto.MetricFamily, options ...E if err != nil { return } - n, err = writeName(w, shortName) + n, err = writeName(w, compliantName) written += n if err != nil { return @@ -165,7 +189,7 @@ func MetricFamilyToOpenMetrics(out io.Writer, in *dto.MetricFamily, options ...E if err != nil { return } - n, err = writeName(w, shortName) + n, err = writeName(w, compliantName) written += n if err != nil { return @@ -192,60 +216,89 @@ func MetricFamilyToOpenMetrics(out io.Writer, in *dto.MetricFamily, options ...E if err != nil { return } + if toOM.withUnit && in.Unit != nil { + n, err = w.WriteString("# UNIT ") + written += n + if err != nil { + return + } + n, err = writeName(w, compliantName) + written += n + if err != nil { + return + } + + err = w.WriteByte(' ') + written++ + if err != nil { + return + } + n, err = writeEscapedString(w, *in.Unit, true) + written += n + if err != nil { + return + } + err = w.WriteByte('\n') + written++ + if err != nil { + return + } + } var createdTsBytesWritten int + // Finally the samples, one line for each. for _, metric := range in.Metric { switch metricType { case dto.MetricType_COUNTER: + if strings.HasSuffix(name, "_total") { + compliantName = compliantName + "_total" + } if metric.Counter == nil { return written, fmt.Errorf( - "expected counter in metric %s %s", name, metric, + "expected counter in metric %s %s", compliantName, metric, ) } - // Note that we have ensured above that either the name - // ends on `_total` or that the rendered type is - // `unknown`. Therefore, no `_total` must be added here. n, err = writeOpenMetricsSample( - w, name, "", metric, "", 0, + w, compliantName, "", metric, "", 0, metric.Counter.GetValue(), 0, false, metric.Counter.Exemplar, ) if toOM.withCreatedLines && metric.Counter.CreatedTimestamp != nil { - createdTsBytesWritten, err = writeOpenMetricsCreated(w, name, "_total", metric, "", 0, metric.Counter.GetCreatedTimestamp()) + createdTsBytesWritten, err = writeOpenMetricsCreated(w, compliantName, "_total", metric, "", 0, metric.Counter.GetCreatedTimestamp()) n += createdTsBytesWritten } case dto.MetricType_GAUGE: if metric.Gauge == nil { return written, fmt.Errorf( - "expected gauge in metric %s %s", name, metric, + "expected gauge in metric %s %s", compliantName, metric, ) } n, err = writeOpenMetricsSample( - w, name, "", metric, "", 0, + w, compliantName, "", metric, "", 0, metric.Gauge.GetValue(), 0, false, nil, ) case dto.MetricType_UNTYPED: if metric.Untyped == nil { return written, fmt.Errorf( - "expected untyped in metric %s %s", name, metric, + "expected untyped in metric %s %s", compliantName, metric, ) } n, err = writeOpenMetricsSample( - w, name, "", metric, "", 0, + w, compliantName, "", metric, "", 0, metric.Untyped.GetValue(), 0, false, nil, ) case dto.MetricType_SUMMARY: if metric.Summary == nil { return written, fmt.Errorf( - "expected summary in metric %s %s", name, metric, + "expected summary in metric %s %s", compliantName, metric, ) } for _, q := range metric.Summary.Quantile { n, err = writeOpenMetricsSample( - w, name, "", metric, + w, compliantName, "", metric, model.QuantileLabel, q.GetQuantile(), q.GetValue(), 0, false, nil, @@ -256,7 +309,7 @@ func MetricFamilyToOpenMetrics(out io.Writer, in *dto.MetricFamily, options ...E } } n, err = writeOpenMetricsSample( - w, name, "_sum", metric, "", 0, + w, compliantName, "_sum", metric, "", 0, metric.Summary.GetSampleSum(), 0, false, nil, ) @@ -265,24 +318,24 @@ func MetricFamilyToOpenMetrics(out io.Writer, in *dto.MetricFamily, options ...E return } n, err = writeOpenMetricsSample( - w, name, "_count", metric, "", 0, + w, compliantName, "_count", metric, "", 0, 0, metric.Summary.GetSampleCount(), true, nil, ) if toOM.withCreatedLines && metric.Summary.CreatedTimestamp != nil { - createdTsBytesWritten, err = writeOpenMetricsCreated(w, name, "", metric, "", 0, metric.Summary.GetCreatedTimestamp()) + createdTsBytesWritten, err = writeOpenMetricsCreated(w, compliantName, "", metric, "", 0, metric.Summary.GetCreatedTimestamp()) n += createdTsBytesWritten } case dto.MetricType_HISTOGRAM: if metric.Histogram == nil { return written, fmt.Errorf( - "expected histogram in metric %s %s", name, metric, + "expected histogram in metric %s %s", compliantName, metric, ) } infSeen := false for _, b := range metric.Histogram.Bucket { n, err = writeOpenMetricsSample( - w, name, "_bucket", metric, + w, compliantName, "_bucket", metric, model.BucketLabel, b.GetUpperBound(), 0, b.GetCumulativeCount(), true, b.Exemplar, @@ -297,7 +350,7 @@ func MetricFamilyToOpenMetrics(out io.Writer, in *dto.MetricFamily, options ...E } if !infSeen { n, err = writeOpenMetricsSample( - w, name, "_bucket", metric, + w, compliantName, "_bucket", metric, model.BucketLabel, math.Inf(+1), 0, metric.Histogram.GetSampleCount(), true, nil, @@ -308,7 +361,7 @@ func MetricFamilyToOpenMetrics(out io.Writer, in *dto.MetricFamily, options ...E } } n, err = writeOpenMetricsSample( - w, name, "_sum", metric, "", 0, + w, compliantName, "_sum", metric, "", 0, metric.Histogram.GetSampleSum(), 0, false, nil, ) @@ -317,17 +370,17 @@ func MetricFamilyToOpenMetrics(out io.Writer, in *dto.MetricFamily, options ...E return } n, err = writeOpenMetricsSample( - w, name, "_count", metric, "", 0, + w, compliantName, "_count", metric, "", 0, 0, metric.Histogram.GetSampleCount(), true, nil, ) if toOM.withCreatedLines && metric.Histogram.CreatedTimestamp != nil { - createdTsBytesWritten, err = writeOpenMetricsCreated(w, name, "", metric, "", 0, metric.Histogram.GetCreatedTimestamp()) + createdTsBytesWritten, err = writeOpenMetricsCreated(w, compliantName, "", metric, "", 0, metric.Histogram.GetCreatedTimestamp()) n += createdTsBytesWritten } default: return written, fmt.Errorf( - "unexpected type in metric %s %s", name, metric, + "unexpected type in metric %s %s", compliantName, metric, ) } written += n diff --git a/vendor/github.com/prometheus/common/model/metric.go b/vendor/github.com/prometheus/common/model/metric.go index 0bd29b3a3f..eb865e5a59 100644 --- a/vendor/github.com/prometheus/common/model/metric.go +++ b/vendor/github.com/prometheus/common/model/metric.go @@ -204,6 +204,7 @@ func EscapeMetricFamily(v *dto.MetricFamily, scheme EscapingScheme) *dto.MetricF out := &dto.MetricFamily{ Help: v.Help, Type: v.Type, + Unit: v.Unit, } // If the name is nil, copy as-is, don't try to escape. diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go index df578b86c6..c2a5b44b3d 100644 --- a/vendor/golang.org/x/net/http2/transport.go +++ b/vendor/golang.org/x/net/http2/transport.go @@ -2911,6 +2911,15 @@ func (rl *clientConnReadLoop) processWindowUpdate(f *WindowUpdateFrame) error { fl = &cs.flow } if !fl.add(int32(f.Increment)) { + // For stream, the sender sends RST_STREAM with an error code of FLOW_CONTROL_ERROR + if cs != nil { + rl.endStreamError(cs, StreamError{ + StreamID: f.StreamID, + Code: ErrCodeFlowControl, + }) + return nil + } + return ConnectionError(ErrCodeFlowControl) } cc.cond.Broadcast() diff --git a/vendor/golang.org/x/sys/unix/aliases.go b/vendor/golang.org/x/sys/unix/aliases.go index e7d3df4bd3..b0e4198575 100644 --- a/vendor/golang.org/x/sys/unix/aliases.go +++ b/vendor/golang.org/x/sys/unix/aliases.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos) && go1.9 +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go index 16dc699379..2f0fa76e4f 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build darwin && go1.12 +//go:build darwin package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go index 64d1bb4dba..2b57e0f73b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go @@ -13,6 +13,7 @@ package unix import ( + "errors" "sync" "unsafe" ) @@ -169,25 +170,26 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { func Uname(uname *Utsname) error { mib := []_C_int{CTL_KERN, KERN_OSTYPE} n := unsafe.Sizeof(uname.Sysname) - if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + // Suppress ENOMEM errors to be compatible with the C library __xuname() implementation. + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) { return err } mib = []_C_int{CTL_KERN, KERN_HOSTNAME} n = unsafe.Sizeof(uname.Nodename) - if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) { return err } mib = []_C_int{CTL_KERN, KERN_OSRELEASE} n = unsafe.Sizeof(uname.Release) - if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) { return err } mib = []_C_int{CTL_KERN, KERN_VERSION} n = unsafe.Sizeof(uname.Version) - if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) { return err } @@ -205,7 +207,7 @@ func Uname(uname *Utsname) error { mib = []_C_int{CTL_HW, HW_MACHINE} n = unsafe.Sizeof(uname.Machine) - if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) { return err } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index 0f85e29e62..5682e2628a 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -1849,6 +1849,105 @@ func Dup2(oldfd, newfd int) error { //sys Fsmount(fd int, flags int, mountAttrs int) (fsfd int, err error) //sys Fsopen(fsName string, flags int) (fd int, err error) //sys Fspick(dirfd int, pathName string, flags int) (fd int, err error) + +//sys fsconfig(fd int, cmd uint, key *byte, value *byte, aux int) (err error) + +func fsconfigCommon(fd int, cmd uint, key string, value *byte, aux int) (err error) { + var keyp *byte + if keyp, err = BytePtrFromString(key); err != nil { + return + } + return fsconfig(fd, cmd, keyp, value, aux) +} + +// FsconfigSetFlag is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_SET_FLAG. +// +// fd is the filesystem context to act upon. +// key the parameter key to set. +func FsconfigSetFlag(fd int, key string) (err error) { + return fsconfigCommon(fd, FSCONFIG_SET_FLAG, key, nil, 0) +} + +// FsconfigSetString is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_SET_STRING. +// +// fd is the filesystem context to act upon. +// key the parameter key to set. +// value is the parameter value to set. +func FsconfigSetString(fd int, key string, value string) (err error) { + var valuep *byte + if valuep, err = BytePtrFromString(value); err != nil { + return + } + return fsconfigCommon(fd, FSCONFIG_SET_STRING, key, valuep, 0) +} + +// FsconfigSetBinary is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_SET_BINARY. +// +// fd is the filesystem context to act upon. +// key the parameter key to set. +// value is the parameter value to set. +func FsconfigSetBinary(fd int, key string, value []byte) (err error) { + if len(value) == 0 { + return EINVAL + } + return fsconfigCommon(fd, FSCONFIG_SET_BINARY, key, &value[0], len(value)) +} + +// FsconfigSetPath is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_SET_PATH. +// +// fd is the filesystem context to act upon. +// key the parameter key to set. +// path is a non-empty path for specified key. +// atfd is a file descriptor at which to start lookup from or AT_FDCWD. +func FsconfigSetPath(fd int, key string, path string, atfd int) (err error) { + var valuep *byte + if valuep, err = BytePtrFromString(path); err != nil { + return + } + return fsconfigCommon(fd, FSCONFIG_SET_PATH, key, valuep, atfd) +} + +// FsconfigSetPathEmpty is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_SET_PATH_EMPTY. The same as +// FconfigSetPath but with AT_PATH_EMPTY implied. +func FsconfigSetPathEmpty(fd int, key string, path string, atfd int) (err error) { + var valuep *byte + if valuep, err = BytePtrFromString(path); err != nil { + return + } + return fsconfigCommon(fd, FSCONFIG_SET_PATH_EMPTY, key, valuep, atfd) +} + +// FsconfigSetFd is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_SET_FD. +// +// fd is the filesystem context to act upon. +// key the parameter key to set. +// value is a file descriptor to be assigned to specified key. +func FsconfigSetFd(fd int, key string, value int) (err error) { + return fsconfigCommon(fd, FSCONFIG_SET_FD, key, nil, value) +} + +// FsconfigCreate is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_CMD_CREATE. +// +// fd is the filesystem context to act upon. +func FsconfigCreate(fd int) (err error) { + return fsconfig(fd, FSCONFIG_CMD_CREATE, nil, nil, 0) +} + +// FsconfigReconfigure is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_CMD_RECONFIGURE. +// +// fd is the filesystem context to act upon. +func FsconfigReconfigure(fd int) (err error) { + return fsconfig(fd, FSCONFIG_CMD_RECONFIGURE, nil, nil, 0) +} + //sys Getdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64 //sysnb Getpgid(pid int) (pgid int, err error) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/vendor/golang.org/x/sys/unix/zsyscall_linux.go index 1488d27128..87d8612a1d 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux.go @@ -906,6 +906,16 @@ func Fspick(dirfd int, pathName string, flags int) (fd int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fsconfig(fd int, cmd uint, key *byte, value *byte, aux int) (err error) { + _, _, e1 := Syscall6(SYS_FSCONFIG, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(value)), uintptr(aux), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go index dc0c955eec..eff6bcdef8 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -836,6 +836,15 @@ const ( FSPICK_EMPTY_PATH = 0x8 FSMOUNT_CLOEXEC = 0x1 + + FSCONFIG_SET_FLAG = 0x0 + FSCONFIG_SET_STRING = 0x1 + FSCONFIG_SET_BINARY = 0x2 + FSCONFIG_SET_PATH = 0x3 + FSCONFIG_SET_PATH_EMPTY = 0x4 + FSCONFIG_SET_FD = 0x5 + FSCONFIG_CMD_CREATE = 0x6 + FSCONFIG_CMD_RECONFIGURE = 0x7 ) type OpenHow struct { @@ -1550,6 +1559,7 @@ const ( IFLA_DEVLINK_PORT = 0x3e IFLA_GSO_IPV4_MAX_SIZE = 0x3f IFLA_GRO_IPV4_MAX_SIZE = 0x40 + IFLA_DPLL_PIN = 0x41 IFLA_PROTO_DOWN_REASON_UNSPEC = 0x0 IFLA_PROTO_DOWN_REASON_MASK = 0x1 IFLA_PROTO_DOWN_REASON_VALUE = 0x2 @@ -1565,6 +1575,7 @@ const ( IFLA_INET6_ICMP6STATS = 0x6 IFLA_INET6_TOKEN = 0x7 IFLA_INET6_ADDR_GEN_MODE = 0x8 + IFLA_INET6_RA_MTU = 0x9 IFLA_BR_UNSPEC = 0x0 IFLA_BR_FORWARD_DELAY = 0x1 IFLA_BR_HELLO_TIME = 0x2 @@ -1612,6 +1623,9 @@ const ( IFLA_BR_MCAST_MLD_VERSION = 0x2c IFLA_BR_VLAN_STATS_PER_PORT = 0x2d IFLA_BR_MULTI_BOOLOPT = 0x2e + IFLA_BR_MCAST_QUERIER_STATE = 0x2f + IFLA_BR_FDB_N_LEARNED = 0x30 + IFLA_BR_FDB_MAX_LEARNED = 0x31 IFLA_BRPORT_UNSPEC = 0x0 IFLA_BRPORT_STATE = 0x1 IFLA_BRPORT_PRIORITY = 0x2 @@ -1649,6 +1663,14 @@ const ( IFLA_BRPORT_BACKUP_PORT = 0x22 IFLA_BRPORT_MRP_RING_OPEN = 0x23 IFLA_BRPORT_MRP_IN_OPEN = 0x24 + IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 0x25 + IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 0x26 + IFLA_BRPORT_LOCKED = 0x27 + IFLA_BRPORT_MAB = 0x28 + IFLA_BRPORT_MCAST_N_GROUPS = 0x29 + IFLA_BRPORT_MCAST_MAX_GROUPS = 0x2a + IFLA_BRPORT_NEIGH_VLAN_SUPPRESS = 0x2b + IFLA_BRPORT_BACKUP_NHID = 0x2c IFLA_INFO_UNSPEC = 0x0 IFLA_INFO_KIND = 0x1 IFLA_INFO_DATA = 0x2 @@ -1670,6 +1692,9 @@ const ( IFLA_MACVLAN_MACADDR = 0x4 IFLA_MACVLAN_MACADDR_DATA = 0x5 IFLA_MACVLAN_MACADDR_COUNT = 0x6 + IFLA_MACVLAN_BC_QUEUE_LEN = 0x7 + IFLA_MACVLAN_BC_QUEUE_LEN_USED = 0x8 + IFLA_MACVLAN_BC_CUTOFF = 0x9 IFLA_VRF_UNSPEC = 0x0 IFLA_VRF_TABLE = 0x1 IFLA_VRF_PORT_UNSPEC = 0x0 @@ -1693,9 +1718,22 @@ const ( IFLA_XFRM_UNSPEC = 0x0 IFLA_XFRM_LINK = 0x1 IFLA_XFRM_IF_ID = 0x2 + IFLA_XFRM_COLLECT_METADATA = 0x3 IFLA_IPVLAN_UNSPEC = 0x0 IFLA_IPVLAN_MODE = 0x1 IFLA_IPVLAN_FLAGS = 0x2 + NETKIT_NEXT = -0x1 + NETKIT_PASS = 0x0 + NETKIT_DROP = 0x2 + NETKIT_REDIRECT = 0x7 + NETKIT_L2 = 0x0 + NETKIT_L3 = 0x1 + IFLA_NETKIT_UNSPEC = 0x0 + IFLA_NETKIT_PEER_INFO = 0x1 + IFLA_NETKIT_PRIMARY = 0x2 + IFLA_NETKIT_POLICY = 0x3 + IFLA_NETKIT_PEER_POLICY = 0x4 + IFLA_NETKIT_MODE = 0x5 IFLA_VXLAN_UNSPEC = 0x0 IFLA_VXLAN_ID = 0x1 IFLA_VXLAN_GROUP = 0x2 @@ -1726,6 +1764,8 @@ const ( IFLA_VXLAN_GPE = 0x1b IFLA_VXLAN_TTL_INHERIT = 0x1c IFLA_VXLAN_DF = 0x1d + IFLA_VXLAN_VNIFILTER = 0x1e + IFLA_VXLAN_LOCALBYPASS = 0x1f IFLA_GENEVE_UNSPEC = 0x0 IFLA_GENEVE_ID = 0x1 IFLA_GENEVE_REMOTE = 0x2 @@ -1740,6 +1780,7 @@ const ( IFLA_GENEVE_LABEL = 0xb IFLA_GENEVE_TTL_INHERIT = 0xc IFLA_GENEVE_DF = 0xd + IFLA_GENEVE_INNER_PROTO_INHERIT = 0xe IFLA_BAREUDP_UNSPEC = 0x0 IFLA_BAREUDP_PORT = 0x1 IFLA_BAREUDP_ETHERTYPE = 0x2 @@ -1752,6 +1793,8 @@ const ( IFLA_GTP_FD1 = 0x2 IFLA_GTP_PDP_HASHSIZE = 0x3 IFLA_GTP_ROLE = 0x4 + IFLA_GTP_CREATE_SOCKETS = 0x5 + IFLA_GTP_RESTART_COUNT = 0x6 IFLA_BOND_UNSPEC = 0x0 IFLA_BOND_MODE = 0x1 IFLA_BOND_ACTIVE_SLAVE = 0x2 @@ -1781,6 +1824,9 @@ const ( IFLA_BOND_AD_ACTOR_SYSTEM = 0x1a IFLA_BOND_TLB_DYNAMIC_LB = 0x1b IFLA_BOND_PEER_NOTIF_DELAY = 0x1c + IFLA_BOND_AD_LACP_ACTIVE = 0x1d + IFLA_BOND_MISSED_MAX = 0x1e + IFLA_BOND_NS_IP6_TARGET = 0x1f IFLA_BOND_AD_INFO_UNSPEC = 0x0 IFLA_BOND_AD_INFO_AGGREGATOR = 0x1 IFLA_BOND_AD_INFO_NUM_PORTS = 0x2 @@ -1796,6 +1842,7 @@ const ( IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 0x6 IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 0x7 IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 0x8 + IFLA_BOND_SLAVE_PRIO = 0x9 IFLA_VF_INFO_UNSPEC = 0x0 IFLA_VF_INFO = 0x1 IFLA_VF_UNSPEC = 0x0 @@ -1854,8 +1901,16 @@ const ( IFLA_STATS_LINK_XSTATS_SLAVE = 0x3 IFLA_STATS_LINK_OFFLOAD_XSTATS = 0x4 IFLA_STATS_AF_SPEC = 0x5 + IFLA_STATS_GETSET_UNSPEC = 0x0 + IFLA_STATS_GET_FILTERS = 0x1 + IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 0x2 IFLA_OFFLOAD_XSTATS_UNSPEC = 0x0 IFLA_OFFLOAD_XSTATS_CPU_HIT = 0x1 + IFLA_OFFLOAD_XSTATS_HW_S_INFO = 0x2 + IFLA_OFFLOAD_XSTATS_L3_STATS = 0x3 + IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0x0 + IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 0x1 + IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 0x2 IFLA_XDP_UNSPEC = 0x0 IFLA_XDP_FD = 0x1 IFLA_XDP_ATTACHED = 0x2 @@ -1885,6 +1940,11 @@ const ( IFLA_RMNET_UNSPEC = 0x0 IFLA_RMNET_MUX_ID = 0x1 IFLA_RMNET_FLAGS = 0x2 + IFLA_MCTP_UNSPEC = 0x0 + IFLA_MCTP_NET = 0x1 + IFLA_DSA_UNSPEC = 0x0 + IFLA_DSA_CONDUIT = 0x1 + IFLA_DSA_MASTER = 0x1 ) const ( diff --git a/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go b/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go index 25329b7692..4b177c8206 100644 --- a/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go +++ b/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go @@ -322,6 +322,10 @@ func (d decoder) skipJSONValue() error { if open > d.opts.RecursionLimit { return errors.New("exceeded max recursion depth") } + case json.EOF: + // This can only happen if there's a bug in Decoder.Read. + // Avoid an infinite loop if this does happen. + return errors.New("unexpected EOF") } if open == 0 { return nil diff --git a/vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go b/vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go new file mode 100644 index 0000000000..14656b65ab --- /dev/null +++ b/vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go @@ -0,0 +1,12 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package editiondefaults contains the binary representation of the editions +// defaults. +package editiondefaults + +import _ "embed" + +//go:embed editions_defaults.binpb +var Defaults []byte diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/editions_defaults.binpb b/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb similarity index 69% rename from vendor/google.golang.org/protobuf/reflect/protodesc/editions_defaults.binpb rename to vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb index 1a8610a843..18f0756874 100644 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/editions_defaults.binpb +++ b/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb @@ -1,4 +1,4 @@ -  (0� +  (0�   (0�   (0� �(� \ No newline at end of file diff --git a/vendor/google.golang.org/protobuf/internal/encoding/json/decode.go b/vendor/google.golang.org/protobuf/internal/encoding/json/decode.go index d043a6ebe0..d2b3ac031e 100644 --- a/vendor/google.golang.org/protobuf/internal/encoding/json/decode.go +++ b/vendor/google.golang.org/protobuf/internal/encoding/json/decode.go @@ -121,7 +121,7 @@ func (d *Decoder) Read() (Token, error) { case ObjectClose: if len(d.openStack) == 0 || - d.lastToken.kind == comma || + d.lastToken.kind&(Name|comma) != 0 || d.openStack[len(d.openStack)-1] != ObjectOpen { return Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString()) } diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go index 193c68e8f9..8826bcf402 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go @@ -68,7 +68,7 @@ type ( Extensions Extensions Services Services - EditionFeatures FileEditionFeatures + EditionFeatures EditionFeatures } FileL2 struct { Options func() protoreflect.ProtoMessage @@ -76,10 +76,13 @@ type ( Locations SourceLocations } - FileEditionFeatures struct { + EditionFeatures struct { // IsFieldPresence is true if field_presence is EXPLICIT // https://protobuf.dev/editions/features/#field_presence IsFieldPresence bool + // IsFieldPresence is true if field_presence is LEGACY_REQUIRED + // https://protobuf.dev/editions/features/#field_presence + IsLegacyRequired bool // IsOpenEnum is true if enum_type is OPEN // https://protobuf.dev/editions/features/#enum_type IsOpenEnum bool @@ -95,6 +98,9 @@ type ( // IsJSONCompliant is true if json_format is ALLOW // https://protobuf.dev/editions/features/#json_format IsJSONCompliant bool + // GenerateLegacyUnmarshalJSON determines if the plugin generates the + // UnmarshalJSON([]byte) error method for enums. + GenerateLegacyUnmarshalJSON bool } ) @@ -156,6 +162,8 @@ type ( } EnumL1 struct { eagerValues bool // controls whether EnumL2.Values is already populated + + EditionFeatures EditionFeatures } EnumL2 struct { Options func() protoreflect.ProtoMessage @@ -217,6 +225,8 @@ type ( Extensions Extensions IsMapEntry bool // promoted from google.protobuf.MessageOptions IsMessageSet bool // promoted from google.protobuf.MessageOptions + + EditionFeatures EditionFeatures } MessageL2 struct { Options func() protoreflect.ProtoMessage @@ -250,8 +260,7 @@ type ( Enum protoreflect.EnumDescriptor Message protoreflect.MessageDescriptor - // Edition features. - Presence bool + EditionFeatures EditionFeatures } Oneof struct { @@ -261,6 +270,8 @@ type ( OneofL1 struct { Options func() protoreflect.ProtoMessage Fields OneofFields // must be consistent with Message.Fields.ContainingOneof + + EditionFeatures EditionFeatures } ) @@ -310,26 +321,36 @@ func (fd *Field) Options() protoreflect.ProtoMessage { } func (fd *Field) Number() protoreflect.FieldNumber { return fd.L1.Number } func (fd *Field) Cardinality() protoreflect.Cardinality { return fd.L1.Cardinality } -func (fd *Field) Kind() protoreflect.Kind { return fd.L1.Kind } -func (fd *Field) HasJSONName() bool { return fd.L1.StringName.hasJSON } -func (fd *Field) JSONName() string { return fd.L1.StringName.getJSON(fd) } -func (fd *Field) TextName() string { return fd.L1.StringName.getText(fd) } +func (fd *Field) Kind() protoreflect.Kind { + return fd.L1.Kind +} +func (fd *Field) HasJSONName() bool { return fd.L1.StringName.hasJSON } +func (fd *Field) JSONName() string { return fd.L1.StringName.getJSON(fd) } +func (fd *Field) TextName() string { return fd.L1.StringName.getText(fd) } func (fd *Field) HasPresence() bool { - if fd.L0.ParentFile.L1.Syntax == protoreflect.Editions { - return fd.L1.Presence || fd.L1.Message != nil || fd.L1.ContainingOneof != nil + if fd.L1.Cardinality == protoreflect.Repeated { + return false } - return fd.L1.Cardinality != protoreflect.Repeated && (fd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 || fd.L1.Message != nil || fd.L1.ContainingOneof != nil) + explicitFieldPresence := fd.Syntax() == protoreflect.Editions && fd.L1.EditionFeatures.IsFieldPresence + return fd.Syntax() == protoreflect.Proto2 || explicitFieldPresence || fd.L1.Message != nil || fd.L1.ContainingOneof != nil } func (fd *Field) HasOptionalKeyword() bool { return (fd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && fd.L1.Cardinality == protoreflect.Optional && fd.L1.ContainingOneof == nil) || fd.L1.IsProto3Optional } func (fd *Field) IsPacked() bool { - if !fd.L1.HasPacked && fd.L0.ParentFile.L1.Syntax != protoreflect.Proto2 && fd.L1.Cardinality == protoreflect.Repeated { - switch fd.L1.Kind { - case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind: - default: - return true - } + if fd.L1.Cardinality != protoreflect.Repeated { + return false + } + switch fd.L1.Kind { + case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind: + return false + } + if fd.L0.ParentFile.L1.Syntax == protoreflect.Editions { + return fd.L1.EditionFeatures.IsPacked + } + if fd.L0.ParentFile.L1.Syntax == protoreflect.Proto3 { + // proto3 repeated fields are packed by default. + return !fd.L1.HasPacked || fd.L1.IsPacked } return fd.L1.IsPacked } @@ -378,6 +399,9 @@ func (fd *Field) ProtoType(protoreflect.FieldDescriptor) {} // WARNING: This method is exempt from the compatibility promise and may be // removed in the future without warning. func (fd *Field) EnforceUTF8() bool { + if fd.L0.ParentFile.L1.Syntax == protoreflect.Editions { + return fd.L1.EditionFeatures.IsUTF8Validated + } if fd.L1.HasEnforceUTF8 { return fd.L1.EnforceUTF8 } @@ -404,10 +428,11 @@ type ( L2 *ExtensionL2 // protected by fileDesc.once } ExtensionL1 struct { - Number protoreflect.FieldNumber - Extendee protoreflect.MessageDescriptor - Cardinality protoreflect.Cardinality - Kind protoreflect.Kind + Number protoreflect.FieldNumber + Extendee protoreflect.MessageDescriptor + Cardinality protoreflect.Cardinality + Kind protoreflect.Kind + EditionFeatures EditionFeatures } ExtensionL2 struct { Options func() protoreflect.ProtoMessage diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go index 4a1584c9d2..237e64fd23 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go @@ -5,6 +5,7 @@ package filedesc import ( + "fmt" "sync" "google.golang.org/protobuf/encoding/protowire" @@ -98,6 +99,7 @@ func (fd *File) unmarshalSeed(b []byte) { var prevField protoreflect.FieldNumber var numEnums, numMessages, numExtensions, numServices int var posEnums, posMessages, posExtensions, posServices int + var options []byte b0 := b for len(b) > 0 { num, typ, n := protowire.ConsumeTag(b) @@ -113,6 +115,8 @@ func (fd *File) unmarshalSeed(b []byte) { fd.L1.Syntax = protoreflect.Proto2 case "proto3": fd.L1.Syntax = protoreflect.Proto3 + case "editions": + fd.L1.Syntax = protoreflect.Editions default: panic("invalid syntax") } @@ -120,6 +124,8 @@ func (fd *File) unmarshalSeed(b []byte) { fd.L1.Path = sb.MakeString(v) case genid.FileDescriptorProto_Package_field_number: fd.L1.Package = protoreflect.FullName(sb.MakeString(v)) + case genid.FileDescriptorProto_Options_field_number: + options = v case genid.FileDescriptorProto_EnumType_field_number: if prevField != genid.FileDescriptorProto_EnumType_field_number { if numEnums > 0 { @@ -154,6 +160,13 @@ func (fd *File) unmarshalSeed(b []byte) { numServices++ } prevField = num + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FileDescriptorProto_Edition_field_number: + fd.L1.Edition = Edition(v) + } default: m := protowire.ConsumeFieldValue(num, typ, b) b = b[m:] @@ -166,6 +179,15 @@ func (fd *File) unmarshalSeed(b []byte) { fd.L1.Syntax = protoreflect.Proto2 } + if fd.L1.Syntax == protoreflect.Editions { + fd.L1.EditionFeatures = getFeaturesFor(fd.L1.Edition) + } + + // Parse editions features from options if any + if options != nil { + fd.unmarshalSeedOptions(options) + } + // Must allocate all declarations before parsing each descriptor type // to ensure we handled all descriptors in "flattened ordering". if numEnums > 0 { @@ -219,6 +241,28 @@ func (fd *File) unmarshalSeed(b []byte) { } } +func (fd *File) unmarshalSeedOptions(b []byte) { + for b := b; len(b) > 0; { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FileOptions_Features_field_number: + if fd.Syntax() != protoreflect.Editions { + panic(fmt.Sprintf("invalid descriptor: using edition features in a proto with syntax %s", fd.Syntax())) + } + fd.L1.EditionFeatures = unmarshalFeatureSet(v, fd.L1.EditionFeatures) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } +} + func (ed *Enum) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { ed.L0.ParentFile = pf ed.L0.Parent = pd @@ -275,6 +319,7 @@ func (md *Message) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protor md.L0.ParentFile = pf md.L0.Parent = pd md.L0.Index = i + md.L1.EditionFeatures = featuresFromParentDesc(md.Parent()) var prevField protoreflect.FieldNumber var numEnums, numMessages, numExtensions int @@ -380,6 +425,13 @@ func (md *Message) unmarshalSeedOptions(b []byte) { case genid.MessageOptions_MessageSetWireFormat_field_number: md.L1.IsMessageSet = protowire.DecodeBool(v) } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.MessageOptions_Features_field_number: + md.L1.EditionFeatures = unmarshalFeatureSet(v, md.L1.EditionFeatures) + } default: m := protowire.ConsumeFieldValue(num, typ, b) b = b[m:] diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go index 736a19a75b..482a61cc10 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go @@ -414,6 +414,7 @@ func (fd *Field) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoref fd.L0.ParentFile = pf fd.L0.Parent = pd fd.L0.Index = i + fd.L1.EditionFeatures = featuresFromParentDesc(fd.Parent()) var rawTypeName []byte var rawOptions []byte @@ -465,6 +466,12 @@ func (fd *Field) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoref b = b[m:] } } + if fd.Syntax() == protoreflect.Editions && fd.L1.Kind == protoreflect.MessageKind && fd.L1.EditionFeatures.IsDelimitedEncoded { + fd.L1.Kind = protoreflect.GroupKind + } + if fd.Syntax() == protoreflect.Editions && fd.L1.EditionFeatures.IsLegacyRequired { + fd.L1.Cardinality = protoreflect.Required + } if rawTypeName != nil { name := makeFullName(sb, rawTypeName) switch fd.L1.Kind { @@ -497,6 +504,13 @@ func (fd *Field) unmarshalOptions(b []byte) { fd.L1.HasEnforceUTF8 = true fd.L1.EnforceUTF8 = protowire.DecodeBool(v) } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FieldOptions_Features_field_number: + fd.L1.EditionFeatures = unmarshalFeatureSet(v, fd.L1.EditionFeatures) + } default: m := protowire.ConsumeFieldValue(num, typ, b) b = b[m:] @@ -534,6 +548,7 @@ func (od *Oneof) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoref func (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) { var rawTypeName []byte var rawOptions []byte + xd.L1.EditionFeatures = featuresFromParentDesc(xd.L1.Extendee) xd.L2 = new(ExtensionL2) for len(b) > 0 { num, typ, n := protowire.ConsumeTag(b) @@ -565,6 +580,12 @@ func (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) { b = b[m:] } } + if xd.Syntax() == protoreflect.Editions && xd.L1.Kind == protoreflect.MessageKind && xd.L1.EditionFeatures.IsDelimitedEncoded { + xd.L1.Kind = protoreflect.GroupKind + } + if xd.Syntax() == protoreflect.Editions && xd.L1.EditionFeatures.IsLegacyRequired { + xd.L1.Cardinality = protoreflect.Required + } if rawTypeName != nil { name := makeFullName(sb, rawTypeName) switch xd.L1.Kind { @@ -589,6 +610,13 @@ func (xd *Extension) unmarshalOptions(b []byte) { case genid.FieldOptions_Packed_field_number: xd.L2.IsPacked = protowire.DecodeBool(v) } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FieldOptions_Features_field_number: + xd.L1.EditionFeatures = unmarshalFeatureSet(v, xd.L1.EditionFeatures) + } default: m := protowire.ConsumeFieldValue(num, typ, b) b = b[m:] diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/editions.go b/vendor/google.golang.org/protobuf/internal/filedesc/editions.go new file mode 100644 index 0000000000..0375a49d40 --- /dev/null +++ b/vendor/google.golang.org/protobuf/internal/filedesc/editions.go @@ -0,0 +1,142 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package filedesc + +import ( + "fmt" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/editiondefaults" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/reflect/protoreflect" +) + +var defaultsCache = make(map[Edition]EditionFeatures) + +func init() { + unmarshalEditionDefaults(editiondefaults.Defaults) +} + +func unmarshalGoFeature(b []byte, parent EditionFeatures) EditionFeatures { + for len(b) > 0 { + num, _, n := protowire.ConsumeTag(b) + b = b[n:] + switch num { + case genid.GoFeatures_LegacyUnmarshalJsonEnum_field_number: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + parent.GenerateLegacyUnmarshalJSON = protowire.DecodeBool(v) + default: + panic(fmt.Sprintf("unkown field number %d while unmarshalling GoFeatures", num)) + } + } + return parent +} + +func unmarshalFeatureSet(b []byte, parent EditionFeatures) EditionFeatures { + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FeatureSet_FieldPresence_field_number: + parent.IsFieldPresence = v == genid.FeatureSet_EXPLICIT_enum_value || v == genid.FeatureSet_LEGACY_REQUIRED_enum_value + parent.IsLegacyRequired = v == genid.FeatureSet_LEGACY_REQUIRED_enum_value + case genid.FeatureSet_EnumType_field_number: + parent.IsOpenEnum = v == genid.FeatureSet_OPEN_enum_value + case genid.FeatureSet_RepeatedFieldEncoding_field_number: + parent.IsPacked = v == genid.FeatureSet_PACKED_enum_value + case genid.FeatureSet_Utf8Validation_field_number: + parent.IsUTF8Validated = v == genid.FeatureSet_VERIFY_enum_value + case genid.FeatureSet_MessageEncoding_field_number: + parent.IsDelimitedEncoded = v == genid.FeatureSet_DELIMITED_enum_value + case genid.FeatureSet_JsonFormat_field_number: + parent.IsJSONCompliant = v == genid.FeatureSet_ALLOW_enum_value + default: + panic(fmt.Sprintf("unkown field number %d while unmarshalling FeatureSet", num)) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.GoFeatures_LegacyUnmarshalJsonEnum_field_number: + parent = unmarshalGoFeature(v, parent) + } + } + } + + return parent +} + +func featuresFromParentDesc(parentDesc protoreflect.Descriptor) EditionFeatures { + var parentFS EditionFeatures + switch p := parentDesc.(type) { + case *File: + parentFS = p.L1.EditionFeatures + case *Message: + parentFS = p.L1.EditionFeatures + default: + panic(fmt.Sprintf("unknown parent type %T", parentDesc)) + } + return parentFS +} + +func unmarshalEditionDefault(b []byte) { + var ed Edition + var fs EditionFeatures + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_number: + ed = Edition(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FeatureSetDefaults_FeatureSetEditionDefault_Features_field_number: + fs = unmarshalFeatureSet(v, fs) + } + } + } + defaultsCache[ed] = fs +} + +func unmarshalEditionDefaults(b []byte) { + for len(b) > 0 { + num, _, n := protowire.ConsumeTag(b) + b = b[n:] + switch num { + case genid.FeatureSetDefaults_Defaults_field_number: + def, m := protowire.ConsumeBytes(b) + b = b[m:] + unmarshalEditionDefault(def) + case genid.FeatureSetDefaults_MinimumEdition_field_number, + genid.FeatureSetDefaults_MaximumEdition_field_number: + // We don't care about the minimum and maximum editions. If the + // edition we are looking for later on is not in the cache we know + // it is outside of the range between minimum and maximum edition. + _, m := protowire.ConsumeVarint(b) + b = b[m:] + default: + panic(fmt.Sprintf("unkown field number %d while unmarshalling EditionDefault", num)) + } + } +} + +func getFeaturesFor(ed Edition) EditionFeatures { + if def, ok := defaultsCache[ed]; ok { + return def + } + panic(fmt.Sprintf("unsupported edition: %v", ed)) +} diff --git a/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go b/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go index 8f94230ea1..40272c893f 100644 --- a/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +++ b/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go @@ -18,6 +18,21 @@ const ( Edition_enum_name = "Edition" ) +// Enum values for google.protobuf.Edition. +const ( + Edition_EDITION_UNKNOWN_enum_value = 0 + Edition_EDITION_PROTO2_enum_value = 998 + Edition_EDITION_PROTO3_enum_value = 999 + Edition_EDITION_2023_enum_value = 1000 + Edition_EDITION_2024_enum_value = 1001 + Edition_EDITION_1_TEST_ONLY_enum_value = 1 + Edition_EDITION_2_TEST_ONLY_enum_value = 2 + Edition_EDITION_99997_TEST_ONLY_enum_value = 99997 + Edition_EDITION_99998_TEST_ONLY_enum_value = 99998 + Edition_EDITION_99999_TEST_ONLY_enum_value = 99999 + Edition_EDITION_MAX_enum_value = 2147483647 +) + // Names for google.protobuf.FileDescriptorSet. const ( FileDescriptorSet_message_name protoreflect.Name = "FileDescriptorSet" @@ -213,6 +228,12 @@ const ( ExtensionRangeOptions_VerificationState_enum_name = "VerificationState" ) +// Enum values for google.protobuf.ExtensionRangeOptions.VerificationState. +const ( + ExtensionRangeOptions_DECLARATION_enum_value = 0 + ExtensionRangeOptions_UNVERIFIED_enum_value = 1 +) + // Names for google.protobuf.ExtensionRangeOptions.Declaration. const ( ExtensionRangeOptions_Declaration_message_name protoreflect.Name = "Declaration" @@ -297,12 +318,41 @@ const ( FieldDescriptorProto_Type_enum_name = "Type" ) +// Enum values for google.protobuf.FieldDescriptorProto.Type. +const ( + FieldDescriptorProto_TYPE_DOUBLE_enum_value = 1 + FieldDescriptorProto_TYPE_FLOAT_enum_value = 2 + FieldDescriptorProto_TYPE_INT64_enum_value = 3 + FieldDescriptorProto_TYPE_UINT64_enum_value = 4 + FieldDescriptorProto_TYPE_INT32_enum_value = 5 + FieldDescriptorProto_TYPE_FIXED64_enum_value = 6 + FieldDescriptorProto_TYPE_FIXED32_enum_value = 7 + FieldDescriptorProto_TYPE_BOOL_enum_value = 8 + FieldDescriptorProto_TYPE_STRING_enum_value = 9 + FieldDescriptorProto_TYPE_GROUP_enum_value = 10 + FieldDescriptorProto_TYPE_MESSAGE_enum_value = 11 + FieldDescriptorProto_TYPE_BYTES_enum_value = 12 + FieldDescriptorProto_TYPE_UINT32_enum_value = 13 + FieldDescriptorProto_TYPE_ENUM_enum_value = 14 + FieldDescriptorProto_TYPE_SFIXED32_enum_value = 15 + FieldDescriptorProto_TYPE_SFIXED64_enum_value = 16 + FieldDescriptorProto_TYPE_SINT32_enum_value = 17 + FieldDescriptorProto_TYPE_SINT64_enum_value = 18 +) + // Full and short names for google.protobuf.FieldDescriptorProto.Label. const ( FieldDescriptorProto_Label_enum_fullname = "google.protobuf.FieldDescriptorProto.Label" FieldDescriptorProto_Label_enum_name = "Label" ) +// Enum values for google.protobuf.FieldDescriptorProto.Label. +const ( + FieldDescriptorProto_LABEL_OPTIONAL_enum_value = 1 + FieldDescriptorProto_LABEL_REPEATED_enum_value = 3 + FieldDescriptorProto_LABEL_REQUIRED_enum_value = 2 +) + // Names for google.protobuf.OneofDescriptorProto. const ( OneofDescriptorProto_message_name protoreflect.Name = "OneofDescriptorProto" @@ -474,7 +524,6 @@ const ( FileOptions_CcGenericServices_field_name protoreflect.Name = "cc_generic_services" FileOptions_JavaGenericServices_field_name protoreflect.Name = "java_generic_services" FileOptions_PyGenericServices_field_name protoreflect.Name = "py_generic_services" - FileOptions_PhpGenericServices_field_name protoreflect.Name = "php_generic_services" FileOptions_Deprecated_field_name protoreflect.Name = "deprecated" FileOptions_CcEnableArenas_field_name protoreflect.Name = "cc_enable_arenas" FileOptions_ObjcClassPrefix_field_name protoreflect.Name = "objc_class_prefix" @@ -497,7 +546,6 @@ const ( FileOptions_CcGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.cc_generic_services" FileOptions_JavaGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_generic_services" FileOptions_PyGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.py_generic_services" - FileOptions_PhpGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.php_generic_services" FileOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.deprecated" FileOptions_CcEnableArenas_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.cc_enable_arenas" FileOptions_ObjcClassPrefix_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.objc_class_prefix" @@ -523,7 +571,6 @@ const ( FileOptions_CcGenericServices_field_number protoreflect.FieldNumber = 16 FileOptions_JavaGenericServices_field_number protoreflect.FieldNumber = 17 FileOptions_PyGenericServices_field_number protoreflect.FieldNumber = 18 - FileOptions_PhpGenericServices_field_number protoreflect.FieldNumber = 42 FileOptions_Deprecated_field_number protoreflect.FieldNumber = 23 FileOptions_CcEnableArenas_field_number protoreflect.FieldNumber = 31 FileOptions_ObjcClassPrefix_field_number protoreflect.FieldNumber = 36 @@ -543,6 +590,13 @@ const ( FileOptions_OptimizeMode_enum_name = "OptimizeMode" ) +// Enum values for google.protobuf.FileOptions.OptimizeMode. +const ( + FileOptions_SPEED_enum_value = 1 + FileOptions_CODE_SIZE_enum_value = 2 + FileOptions_LITE_RUNTIME_enum_value = 3 +) + // Names for google.protobuf.MessageOptions. const ( MessageOptions_message_name protoreflect.Name = "MessageOptions" @@ -639,24 +693,59 @@ const ( FieldOptions_CType_enum_name = "CType" ) +// Enum values for google.protobuf.FieldOptions.CType. +const ( + FieldOptions_STRING_enum_value = 0 + FieldOptions_CORD_enum_value = 1 + FieldOptions_STRING_PIECE_enum_value = 2 +) + // Full and short names for google.protobuf.FieldOptions.JSType. const ( FieldOptions_JSType_enum_fullname = "google.protobuf.FieldOptions.JSType" FieldOptions_JSType_enum_name = "JSType" ) +// Enum values for google.protobuf.FieldOptions.JSType. +const ( + FieldOptions_JS_NORMAL_enum_value = 0 + FieldOptions_JS_STRING_enum_value = 1 + FieldOptions_JS_NUMBER_enum_value = 2 +) + // Full and short names for google.protobuf.FieldOptions.OptionRetention. const ( FieldOptions_OptionRetention_enum_fullname = "google.protobuf.FieldOptions.OptionRetention" FieldOptions_OptionRetention_enum_name = "OptionRetention" ) +// Enum values for google.protobuf.FieldOptions.OptionRetention. +const ( + FieldOptions_RETENTION_UNKNOWN_enum_value = 0 + FieldOptions_RETENTION_RUNTIME_enum_value = 1 + FieldOptions_RETENTION_SOURCE_enum_value = 2 +) + // Full and short names for google.protobuf.FieldOptions.OptionTargetType. const ( FieldOptions_OptionTargetType_enum_fullname = "google.protobuf.FieldOptions.OptionTargetType" FieldOptions_OptionTargetType_enum_name = "OptionTargetType" ) +// Enum values for google.protobuf.FieldOptions.OptionTargetType. +const ( + FieldOptions_TARGET_TYPE_UNKNOWN_enum_value = 0 + FieldOptions_TARGET_TYPE_FILE_enum_value = 1 + FieldOptions_TARGET_TYPE_EXTENSION_RANGE_enum_value = 2 + FieldOptions_TARGET_TYPE_MESSAGE_enum_value = 3 + FieldOptions_TARGET_TYPE_FIELD_enum_value = 4 + FieldOptions_TARGET_TYPE_ONEOF_enum_value = 5 + FieldOptions_TARGET_TYPE_ENUM_enum_value = 6 + FieldOptions_TARGET_TYPE_ENUM_ENTRY_enum_value = 7 + FieldOptions_TARGET_TYPE_SERVICE_enum_value = 8 + FieldOptions_TARGET_TYPE_METHOD_enum_value = 9 +) + // Names for google.protobuf.FieldOptions.EditionDefault. const ( FieldOptions_EditionDefault_message_name protoreflect.Name = "EditionDefault" @@ -813,6 +902,13 @@ const ( MethodOptions_IdempotencyLevel_enum_name = "IdempotencyLevel" ) +// Enum values for google.protobuf.MethodOptions.IdempotencyLevel. +const ( + MethodOptions_IDEMPOTENCY_UNKNOWN_enum_value = 0 + MethodOptions_NO_SIDE_EFFECTS_enum_value = 1 + MethodOptions_IDEMPOTENT_enum_value = 2 +) + // Names for google.protobuf.UninterpretedOption. const ( UninterpretedOption_message_name protoreflect.Name = "UninterpretedOption" @@ -909,36 +1005,79 @@ const ( FeatureSet_FieldPresence_enum_name = "FieldPresence" ) +// Enum values for google.protobuf.FeatureSet.FieldPresence. +const ( + FeatureSet_FIELD_PRESENCE_UNKNOWN_enum_value = 0 + FeatureSet_EXPLICIT_enum_value = 1 + FeatureSet_IMPLICIT_enum_value = 2 + FeatureSet_LEGACY_REQUIRED_enum_value = 3 +) + // Full and short names for google.protobuf.FeatureSet.EnumType. const ( FeatureSet_EnumType_enum_fullname = "google.protobuf.FeatureSet.EnumType" FeatureSet_EnumType_enum_name = "EnumType" ) +// Enum values for google.protobuf.FeatureSet.EnumType. +const ( + FeatureSet_ENUM_TYPE_UNKNOWN_enum_value = 0 + FeatureSet_OPEN_enum_value = 1 + FeatureSet_CLOSED_enum_value = 2 +) + // Full and short names for google.protobuf.FeatureSet.RepeatedFieldEncoding. const ( FeatureSet_RepeatedFieldEncoding_enum_fullname = "google.protobuf.FeatureSet.RepeatedFieldEncoding" FeatureSet_RepeatedFieldEncoding_enum_name = "RepeatedFieldEncoding" ) +// Enum values for google.protobuf.FeatureSet.RepeatedFieldEncoding. +const ( + FeatureSet_REPEATED_FIELD_ENCODING_UNKNOWN_enum_value = 0 + FeatureSet_PACKED_enum_value = 1 + FeatureSet_EXPANDED_enum_value = 2 +) + // Full and short names for google.protobuf.FeatureSet.Utf8Validation. const ( FeatureSet_Utf8Validation_enum_fullname = "google.protobuf.FeatureSet.Utf8Validation" FeatureSet_Utf8Validation_enum_name = "Utf8Validation" ) +// Enum values for google.protobuf.FeatureSet.Utf8Validation. +const ( + FeatureSet_UTF8_VALIDATION_UNKNOWN_enum_value = 0 + FeatureSet_VERIFY_enum_value = 2 + FeatureSet_NONE_enum_value = 3 +) + // Full and short names for google.protobuf.FeatureSet.MessageEncoding. const ( FeatureSet_MessageEncoding_enum_fullname = "google.protobuf.FeatureSet.MessageEncoding" FeatureSet_MessageEncoding_enum_name = "MessageEncoding" ) +// Enum values for google.protobuf.FeatureSet.MessageEncoding. +const ( + FeatureSet_MESSAGE_ENCODING_UNKNOWN_enum_value = 0 + FeatureSet_LENGTH_PREFIXED_enum_value = 1 + FeatureSet_DELIMITED_enum_value = 2 +) + // Full and short names for google.protobuf.FeatureSet.JsonFormat. const ( FeatureSet_JsonFormat_enum_fullname = "google.protobuf.FeatureSet.JsonFormat" FeatureSet_JsonFormat_enum_name = "JsonFormat" ) +// Enum values for google.protobuf.FeatureSet.JsonFormat. +const ( + FeatureSet_JSON_FORMAT_UNKNOWN_enum_value = 0 + FeatureSet_ALLOW_enum_value = 1 + FeatureSet_LEGACY_BEST_EFFORT_enum_value = 2 +) + // Names for google.protobuf.FeatureSetDefaults. const ( FeatureSetDefaults_message_name protoreflect.Name = "FeatureSetDefaults" @@ -1085,3 +1224,10 @@ const ( GeneratedCodeInfo_Annotation_Semantic_enum_fullname = "google.protobuf.GeneratedCodeInfo.Annotation.Semantic" GeneratedCodeInfo_Annotation_Semantic_enum_name = "Semantic" ) + +// Enum values for google.protobuf.GeneratedCodeInfo.Annotation.Semantic. +const ( + GeneratedCodeInfo_Annotation_NONE_enum_value = 0 + GeneratedCodeInfo_Annotation_SET_enum_value = 1 + GeneratedCodeInfo_Annotation_ALIAS_enum_value = 2 +) diff --git a/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go b/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go new file mode 100644 index 0000000000..fd9015e8ee --- /dev/null +++ b/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go @@ -0,0 +1,31 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_reflect_protodesc_proto_go_features_proto = "reflect/protodesc/proto/go_features.proto" + +// Names for google.protobuf.GoFeatures. +const ( + GoFeatures_message_name protoreflect.Name = "GoFeatures" + GoFeatures_message_fullname protoreflect.FullName = "google.protobuf.GoFeatures" +) + +// Field names for google.protobuf.GoFeatures. +const ( + GoFeatures_LegacyUnmarshalJsonEnum_field_name protoreflect.Name = "legacy_unmarshal_json_enum" + + GoFeatures_LegacyUnmarshalJsonEnum_field_fullname protoreflect.FullName = "google.protobuf.GoFeatures.legacy_unmarshal_json_enum" +) + +// Field numbers for google.protobuf.GoFeatures. +const ( + GoFeatures_LegacyUnmarshalJsonEnum_field_number protoreflect.FieldNumber = 1 +) diff --git a/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go b/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go index 1a38944b26..ad6f80c460 100644 --- a/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go +++ b/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go @@ -18,6 +18,11 @@ const ( NullValue_enum_name = "NullValue" ) +// Enum values for google.protobuf.NullValue. +const ( + NullValue_NULL_VALUE_enum_value = 0 +) + // Names for google.protobuf.Struct. const ( Struct_message_name protoreflect.Name = "Struct" diff --git a/vendor/google.golang.org/protobuf/internal/genid/type_gen.go b/vendor/google.golang.org/protobuf/internal/genid/type_gen.go index e0f75fea0a..49bc73e259 100644 --- a/vendor/google.golang.org/protobuf/internal/genid/type_gen.go +++ b/vendor/google.golang.org/protobuf/internal/genid/type_gen.go @@ -18,6 +18,13 @@ const ( Syntax_enum_name = "Syntax" ) +// Enum values for google.protobuf.Syntax. +const ( + Syntax_SYNTAX_PROTO2_enum_value = 0 + Syntax_SYNTAX_PROTO3_enum_value = 1 + Syntax_SYNTAX_EDITIONS_enum_value = 2 +) + // Names for google.protobuf.Type. const ( Type_message_name protoreflect.Name = "Type" @@ -105,12 +112,43 @@ const ( Field_Kind_enum_name = "Kind" ) +// Enum values for google.protobuf.Field.Kind. +const ( + Field_TYPE_UNKNOWN_enum_value = 0 + Field_TYPE_DOUBLE_enum_value = 1 + Field_TYPE_FLOAT_enum_value = 2 + Field_TYPE_INT64_enum_value = 3 + Field_TYPE_UINT64_enum_value = 4 + Field_TYPE_INT32_enum_value = 5 + Field_TYPE_FIXED64_enum_value = 6 + Field_TYPE_FIXED32_enum_value = 7 + Field_TYPE_BOOL_enum_value = 8 + Field_TYPE_STRING_enum_value = 9 + Field_TYPE_GROUP_enum_value = 10 + Field_TYPE_MESSAGE_enum_value = 11 + Field_TYPE_BYTES_enum_value = 12 + Field_TYPE_UINT32_enum_value = 13 + Field_TYPE_ENUM_enum_value = 14 + Field_TYPE_SFIXED32_enum_value = 15 + Field_TYPE_SFIXED64_enum_value = 16 + Field_TYPE_SINT32_enum_value = 17 + Field_TYPE_SINT64_enum_value = 18 +) + // Full and short names for google.protobuf.Field.Cardinality. const ( Field_Cardinality_enum_fullname = "google.protobuf.Field.Cardinality" Field_Cardinality_enum_name = "Cardinality" ) +// Enum values for google.protobuf.Field.Cardinality. +const ( + Field_CARDINALITY_UNKNOWN_enum_value = 0 + Field_CARDINALITY_OPTIONAL_enum_value = 1 + Field_CARDINALITY_REQUIRED_enum_value = 2 + Field_CARDINALITY_REPEATED_enum_value = 3 +) + // Names for google.protobuf.Enum. const ( Enum_message_name protoreflect.Name = "Enum" diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go b/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go index e74cefdc50..2b8f122c27 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go @@ -21,26 +21,18 @@ type extensionFieldInfo struct { validation validationInfo } -var legacyExtensionFieldInfoCache sync.Map // map[protoreflect.ExtensionType]*extensionFieldInfo - func getExtensionFieldInfo(xt protoreflect.ExtensionType) *extensionFieldInfo { if xi, ok := xt.(*ExtensionInfo); ok { xi.lazyInit() return xi.info } - return legacyLoadExtensionFieldInfo(xt) -} - -// legacyLoadExtensionFieldInfo dynamically loads a *ExtensionInfo for xt. -func legacyLoadExtensionFieldInfo(xt protoreflect.ExtensionType) *extensionFieldInfo { - if xi, ok := legacyExtensionFieldInfoCache.Load(xt); ok { - return xi.(*extensionFieldInfo) - } - e := makeExtensionFieldInfo(xt.TypeDescriptor()) - if e, ok := legacyMessageTypeCache.LoadOrStore(xt, e); ok { - return e.(*extensionFieldInfo) - } - return e + // Ideally we'd cache the resulting *extensionFieldInfo so we don't have to + // recompute this metadata repeatedly. But without support for something like + // weak references, such a cache would pin temporary values (like dynamic + // extension types, constructed for the duration of a user request) to the + // heap forever, causing memory usage of the cache to grow unbounded. + // See discussion in https://github.com/golang/protobuf/issues/1521. + return makeExtensionFieldInfo(xt.TypeDescriptor()) } func makeExtensionFieldInfo(xd protoreflect.ExtensionDescriptor) *extensionFieldInfo { diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go b/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go index 576dcf3aac..13077751e2 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go @@ -197,7 +197,7 @@ func fieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) (*MessageInfo, return getMessageInfo(ft), makeMessageFieldCoder(fd, ft) case fd.Kind() == protoreflect.GroupKind: return getMessageInfo(ft), makeGroupFieldCoder(fd, ft) - case fd.Syntax() == protoreflect.Proto3 && fd.ContainingOneof() == nil: + case !fd.HasPresence() && fd.ContainingOneof() == nil: // Populated oneof fields always encode even if set to the zero value, // which normally are not encoded in proto3. switch fd.Kind() { diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go index 5e736c60ef..986322b195 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go +++ b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go @@ -538,6 +538,6 @@ func isZero(v reflect.Value) bool { } return true default: - panic(&reflect.ValueError{"reflect.Value.IsZero", v.Kind()}) + panic(&reflect.ValueError{Method: "reflect.Value.IsZero", Kind: v.Kind()}) } } diff --git a/vendor/google.golang.org/protobuf/internal/strs/strings.go b/vendor/google.golang.org/protobuf/internal/strs/strings.go index 0b74e76586..a6e7df2443 100644 --- a/vendor/google.golang.org/protobuf/internal/strs/strings.go +++ b/vendor/google.golang.org/protobuf/internal/strs/strings.go @@ -17,7 +17,7 @@ import ( // EnforceUTF8 reports whether to enforce strict UTF-8 validation. func EnforceUTF8(fd protoreflect.FieldDescriptor) bool { - if flags.ProtoLegacy { + if flags.ProtoLegacy || fd.Syntax() == protoreflect.Editions { if fd, ok := fd.(interface{ EnforceUTF8() bool }); ok { return fd.EnforceUTF8() } diff --git a/vendor/google.golang.org/protobuf/internal/version/version.go b/vendor/google.golang.org/protobuf/internal/version/version.go index d8f48faffa..a50fcfb49b 100644 --- a/vendor/google.golang.org/protobuf/internal/version/version.go +++ b/vendor/google.golang.org/protobuf/internal/version/version.go @@ -51,7 +51,7 @@ import ( // 10. Send out the CL for review and submit it. const ( Major = 1 - Minor = 32 + Minor = 33 Patch = 0 PreRelease = "" ) diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go index aff6fd4900..b3278163c5 100644 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go @@ -28,6 +28,7 @@ func (r descsByName) initEnumDeclarations(eds []*descriptorpb.EnumDescriptorProt opts = proto.Clone(opts).(*descriptorpb.EnumOptions) e.L2.Options = func() protoreflect.ProtoMessage { return opts } } + e.L1.EditionFeatures = mergeEditionFeatures(parent, ed.GetOptions().GetFeatures()) for _, s := range ed.GetReservedName() { e.L2.ReservedNames.List = append(e.L2.ReservedNames.List, protoreflect.Name(s)) } @@ -68,6 +69,9 @@ func (r descsByName) initMessagesDeclarations(mds []*descriptorpb.DescriptorProt if m.L0, err = r.makeBase(m, parent, md.GetName(), i, sb); err != nil { return nil, err } + if m.Base.L0.ParentFile.Syntax() == protoreflect.Editions { + m.L1.EditionFeatures = mergeEditionFeatures(parent, md.GetOptions().GetFeatures()) + } if opts := md.GetOptions(); opts != nil { opts = proto.Clone(opts).(*descriptorpb.MessageOptions) m.L2.Options = func() protoreflect.ProtoMessage { return opts } @@ -114,6 +118,27 @@ func (r descsByName) initMessagesDeclarations(mds []*descriptorpb.DescriptorProt return ms, nil } +// canBePacked returns whether the field can use packed encoding: +// https://protobuf.dev/programming-guides/encoding/#packed +func canBePacked(fd *descriptorpb.FieldDescriptorProto) bool { + if fd.GetLabel() != descriptorpb.FieldDescriptorProto_LABEL_REPEATED { + return false // not a repeated field + } + + switch protoreflect.Kind(fd.GetType()) { + case protoreflect.MessageKind, protoreflect.GroupKind: + return false // not a scalar type field + + case protoreflect.StringKind, protoreflect.BytesKind: + // string and bytes can explicitly not be declared as packed, + // see https://protobuf.dev/programming-guides/encoding/#packed + return false + + default: + return true + } +} + func (r descsByName) initFieldsFromDescriptorProto(fds []*descriptorpb.FieldDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (fs []filedesc.Field, err error) { fs = make([]filedesc.Field, len(fds)) // allocate up-front to ensure stable pointers for i, fd := range fds { @@ -139,12 +164,16 @@ func (r descsByName) initFieldsFromDescriptorProto(fds []*descriptorpb.FieldDesc } if f.Base.L0.ParentFile.Syntax() == protoreflect.Editions { - f.L1.Presence = resolveFeatureHasFieldPresence(f.Base.L0.ParentFile, fd) + f.L1.EditionFeatures = mergeEditionFeatures(parent, fd.GetOptions().GetFeatures()) + + if f.L1.EditionFeatures.IsLegacyRequired { + f.L1.Cardinality = protoreflect.Required + } // We reuse the existing field because the old option `[packed = // true]` is mutually exclusive with the editions feature. - if fd.GetLabel() == descriptorpb.FieldDescriptorProto_LABEL_REPEATED { + if canBePacked(fd) { f.L1.HasPacked = true - f.L1.IsPacked = resolveFeatureRepeatedFieldEncodingPacked(f.Base.L0.ParentFile, fd) + f.L1.IsPacked = f.L1.EditionFeatures.IsPacked } // We pretend this option is always explicitly set because the only @@ -155,9 +184,9 @@ func (r descsByName) initFieldsFromDescriptorProto(fds []*descriptorpb.FieldDesc // requested from the descriptor). // In proto2/proto3 syntax HasEnforceUTF8 might be false. f.L1.HasEnforceUTF8 = true - f.L1.EnforceUTF8 = resolveFeatureEnforceUTF8(f.Base.L0.ParentFile, fd) + f.L1.EnforceUTF8 = f.L1.EditionFeatures.IsUTF8Validated - if f.L1.Kind == protoreflect.MessageKind && resolveFeatureDelimitedEncoding(f.Base.L0.ParentFile, fd) { + if f.L1.Kind == protoreflect.MessageKind && f.L1.EditionFeatures.IsDelimitedEncoded { f.L1.Kind = protoreflect.GroupKind } } @@ -175,6 +204,9 @@ func (r descsByName) initOneofsFromDescriptorProto(ods []*descriptorpb.OneofDesc if opts := od.GetOptions(); opts != nil { opts = proto.Clone(opts).(*descriptorpb.OneofOptions) o.L1.Options = func() protoreflect.ProtoMessage { return opts } + if parent.Syntax() == protoreflect.Editions { + o.L1.EditionFeatures = mergeEditionFeatures(parent, opts.GetFeatures()) + } } } return os, nil diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go index 27d7e35012..254ca58542 100644 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go @@ -276,8 +276,8 @@ func unmarshalDefault(s string, fd protoreflect.FieldDescriptor, allowUnresolvab } else if err != nil { return v, ev, err } - if fd.Syntax() == protoreflect.Proto3 { - return v, ev, errors.New("cannot be specified under proto3 semantics") + if !fd.HasPresence() { + return v, ev, errors.New("cannot be specified with implicit field presence") } if fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind || fd.Cardinality() == protoreflect.Repeated { return v, ev, errors.New("cannot be specified on composite types") diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go index 9af1d56487..e4dcaf876c 100644 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go @@ -107,7 +107,7 @@ func validateMessageDeclarations(ms []filedesc.Message, mds []*descriptorpb.Desc if isMessageSet && !flags.ProtoLegacy { return errors.New("message %q is a MessageSet, which is a legacy proto1 feature that is no longer supported", m.FullName()) } - if isMessageSet && (m.Syntax() != protoreflect.Proto2 || m.Fields().Len() > 0 || m.ExtensionRanges().Len() == 0) { + if isMessageSet && (m.Syntax() == protoreflect.Proto3 || m.Fields().Len() > 0 || m.ExtensionRanges().Len() == 0) { return errors.New("message %q is an invalid proto1 MessageSet", m.FullName()) } if m.Syntax() == protoreflect.Proto3 { @@ -314,8 +314,8 @@ func checkValidGroup(fd protoreflect.FieldDescriptor) error { switch { case fd.Kind() != protoreflect.GroupKind: return nil - case fd.Syntax() != protoreflect.Proto2: - return errors.New("invalid under proto2 semantics") + case fd.Syntax() == protoreflect.Proto3: + return errors.New("invalid under proto3 semantics") case md == nil || md.IsPlaceholder(): return errors.New("message must be resolvable") case fd.FullName().Parent() != md.FullName().Parent(): diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go b/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go index 7352926cab..2a6b29d179 100644 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go @@ -5,14 +5,16 @@ package protodesc import ( - _ "embed" "fmt" "os" "sync" + "google.golang.org/protobuf/internal/editiondefaults" "google.golang.org/protobuf/internal/filedesc" "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/types/descriptorpb" + gofeaturespb "google.golang.org/protobuf/types/gofeaturespb" ) const ( @@ -20,14 +22,12 @@ const ( SupportedEditionsMaximum = descriptorpb.Edition_EDITION_2023 ) -//go:embed editions_defaults.binpb -var binaryEditionDefaults []byte var defaults = &descriptorpb.FeatureSetDefaults{} var defaultsCacheMu sync.Mutex var defaultsCache = make(map[filedesc.Edition]*descriptorpb.FeatureSet) func init() { - err := proto.Unmarshal(binaryEditionDefaults, defaults) + err := proto.Unmarshal(editiondefaults.Defaults, defaults) if err != nil { fmt.Fprintf(os.Stderr, "unmarshal editions defaults: %v\n", err) os.Exit(1) @@ -83,95 +83,66 @@ func getFeatureSetFor(ed filedesc.Edition) *descriptorpb.FeatureSet { return fs } -func resolveFeatureHasFieldPresence(fileDesc *filedesc.File, fieldDesc *descriptorpb.FieldDescriptorProto) bool { - fs := fieldDesc.GetOptions().GetFeatures() - if fs == nil || fs.FieldPresence == nil { - return fileDesc.L1.EditionFeatures.IsFieldPresence +// mergeEditionFeatures merges the parent and child feature sets. This function +// should be used when initializing Go descriptors from descriptor protos which +// is why the parent is a filedesc.EditionsFeatures (Go representation) while +// the child is a descriptorproto.FeatureSet (protoc representation). +// Any feature set by the child overwrites what is set by the parent. +func mergeEditionFeatures(parentDesc protoreflect.Descriptor, child *descriptorpb.FeatureSet) filedesc.EditionFeatures { + var parentFS filedesc.EditionFeatures + switch p := parentDesc.(type) { + case *filedesc.File: + parentFS = p.L1.EditionFeatures + case *filedesc.Message: + parentFS = p.L1.EditionFeatures + default: + panic(fmt.Sprintf("unknown parent type %T", parentDesc)) } - return fs.GetFieldPresence() == descriptorpb.FeatureSet_LEGACY_REQUIRED || - fs.GetFieldPresence() == descriptorpb.FeatureSet_EXPLICIT -} - -func resolveFeatureRepeatedFieldEncodingPacked(fileDesc *filedesc.File, fieldDesc *descriptorpb.FieldDescriptorProto) bool { - fs := fieldDesc.GetOptions().GetFeatures() - if fs == nil || fs.RepeatedFieldEncoding == nil { - return fileDesc.L1.EditionFeatures.IsPacked + if child == nil { + return parentFS } - return fs.GetRepeatedFieldEncoding() == descriptorpb.FeatureSet_PACKED -} - -func resolveFeatureEnforceUTF8(fileDesc *filedesc.File, fieldDesc *descriptorpb.FieldDescriptorProto) bool { - fs := fieldDesc.GetOptions().GetFeatures() - if fs == nil || fs.Utf8Validation == nil { - return fileDesc.L1.EditionFeatures.IsUTF8Validated + if fp := child.FieldPresence; fp != nil { + parentFS.IsFieldPresence = *fp == descriptorpb.FeatureSet_LEGACY_REQUIRED || + *fp == descriptorpb.FeatureSet_EXPLICIT + parentFS.IsLegacyRequired = *fp == descriptorpb.FeatureSet_LEGACY_REQUIRED } - return fs.GetUtf8Validation() == descriptorpb.FeatureSet_VERIFY -} - -func resolveFeatureDelimitedEncoding(fileDesc *filedesc.File, fieldDesc *descriptorpb.FieldDescriptorProto) bool { - fs := fieldDesc.GetOptions().GetFeatures() - if fs == nil || fs.MessageEncoding == nil { - return fileDesc.L1.EditionFeatures.IsDelimitedEncoded + if et := child.EnumType; et != nil { + parentFS.IsOpenEnum = *et == descriptorpb.FeatureSet_OPEN } - return fs.GetMessageEncoding() == descriptorpb.FeatureSet_DELIMITED -} -// initFileDescFromFeatureSet initializes editions related fields in fd based -// on fs. If fs is nil it is assumed to be an empty featureset and all fields -// will be initialized with the appropriate default. fd.L1.Edition must be set -// before calling this function. -func initFileDescFromFeatureSet(fd *filedesc.File, fs *descriptorpb.FeatureSet) { - dfs := getFeatureSetFor(fd.L1.Edition) - if fs == nil { - fs = &descriptorpb.FeatureSet{} + if rfe := child.RepeatedFieldEncoding; rfe != nil { + parentFS.IsPacked = *rfe == descriptorpb.FeatureSet_PACKED } - var fieldPresence descriptorpb.FeatureSet_FieldPresence - if fp := fs.FieldPresence; fp != nil { - fieldPresence = *fp - } else { - fieldPresence = *dfs.FieldPresence - } - fd.L1.EditionFeatures.IsFieldPresence = fieldPresence == descriptorpb.FeatureSet_LEGACY_REQUIRED || - fieldPresence == descriptorpb.FeatureSet_EXPLICIT - - var enumType descriptorpb.FeatureSet_EnumType - if et := fs.EnumType; et != nil { - enumType = *et - } else { - enumType = *dfs.EnumType + if utf8val := child.Utf8Validation; utf8val != nil { + parentFS.IsUTF8Validated = *utf8val == descriptorpb.FeatureSet_VERIFY } - fd.L1.EditionFeatures.IsOpenEnum = enumType == descriptorpb.FeatureSet_OPEN - var respeatedFieldEncoding descriptorpb.FeatureSet_RepeatedFieldEncoding - if rfe := fs.RepeatedFieldEncoding; rfe != nil { - respeatedFieldEncoding = *rfe - } else { - respeatedFieldEncoding = *dfs.RepeatedFieldEncoding + if me := child.MessageEncoding; me != nil { + parentFS.IsDelimitedEncoded = *me == descriptorpb.FeatureSet_DELIMITED } - fd.L1.EditionFeatures.IsPacked = respeatedFieldEncoding == descriptorpb.FeatureSet_PACKED - var isUTF8Validated descriptorpb.FeatureSet_Utf8Validation - if utf8val := fs.Utf8Validation; utf8val != nil { - isUTF8Validated = *utf8val - } else { - isUTF8Validated = *dfs.Utf8Validation + if jf := child.JsonFormat; jf != nil { + parentFS.IsJSONCompliant = *jf == descriptorpb.FeatureSet_ALLOW } - fd.L1.EditionFeatures.IsUTF8Validated = isUTF8Validated == descriptorpb.FeatureSet_VERIFY - var messageEncoding descriptorpb.FeatureSet_MessageEncoding - if me := fs.MessageEncoding; me != nil { - messageEncoding = *me - } else { - messageEncoding = *dfs.MessageEncoding + if goFeatures, ok := proto.GetExtension(child, gofeaturespb.E_Go).(*gofeaturespb.GoFeatures); ok && goFeatures != nil { + if luje := goFeatures.LegacyUnmarshalJsonEnum; luje != nil { + parentFS.GenerateLegacyUnmarshalJSON = *luje + } } - fd.L1.EditionFeatures.IsDelimitedEncoded = messageEncoding == descriptorpb.FeatureSet_DELIMITED - var jsonFormat descriptorpb.FeatureSet_JsonFormat - if jf := fs.JsonFormat; jf != nil { - jsonFormat = *jf - } else { - jsonFormat = *dfs.JsonFormat - } - fd.L1.EditionFeatures.IsJSONCompliant = jsonFormat == descriptorpb.FeatureSet_ALLOW + return parentFS +} + +// initFileDescFromFeatureSet initializes editions related fields in fd based +// on fs. If fs is nil it is assumed to be an empty featureset and all fields +// will be initialized with the appropriate default. fd.L1.Edition must be set +// before calling this function. +func initFileDescFromFeatureSet(fd *filedesc.File, fs *descriptorpb.FeatureSet) { + dfs := getFeatureSetFor(fd.L1.Edition) + // initialize the featureset with the defaults + fd.L1.EditionFeatures = mergeEditionFeatures(fd, dfs) + // overwrite any options explicitly specified + fd.L1.EditionFeatures = mergeEditionFeatures(fd, fs) } diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go index ec6572dfda..00b01fbd8c 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go @@ -175,6 +175,8 @@ func (s Syntax) String() string { return "proto2" case Proto3: return "proto3" + case Editions: + return "editions" default: return fmt.Sprintf("", s) } diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go index 0c045db6ab..7dcc2ff09e 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go @@ -160,8 +160,6 @@ func (p *SourcePath) appendFileOptions(b []byte) []byte { b = p.appendSingularField(b, "java_generic_services", nil) case 18: b = p.appendSingularField(b, "py_generic_services", nil) - case 42: - b = p.appendSingularField(b, "php_generic_services", nil) case 23: b = p.appendSingularField(b, "deprecated", nil) case 31: diff --git a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go index 38daa858d0..78624cf60b 100644 --- a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go +++ b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go @@ -64,6 +64,7 @@ const ( // should not be depended on, but they will always be time-ordered for easy // comparison. Edition_EDITION_2023 Edition = 1000 + Edition_EDITION_2024 Edition = 1001 // Placeholder editions for testing feature resolution. These should not be // used or relyed on outside of tests. Edition_EDITION_1_TEST_ONLY Edition = 1 @@ -71,31 +72,39 @@ const ( Edition_EDITION_99997_TEST_ONLY Edition = 99997 Edition_EDITION_99998_TEST_ONLY Edition = 99998 Edition_EDITION_99999_TEST_ONLY Edition = 99999 + // Placeholder for specifying unbounded edition support. This should only + // ever be used by plugins that can expect to never require any changes to + // support a new edition. + Edition_EDITION_MAX Edition = 2147483647 ) // Enum value maps for Edition. var ( Edition_name = map[int32]string{ - 0: "EDITION_UNKNOWN", - 998: "EDITION_PROTO2", - 999: "EDITION_PROTO3", - 1000: "EDITION_2023", - 1: "EDITION_1_TEST_ONLY", - 2: "EDITION_2_TEST_ONLY", - 99997: "EDITION_99997_TEST_ONLY", - 99998: "EDITION_99998_TEST_ONLY", - 99999: "EDITION_99999_TEST_ONLY", + 0: "EDITION_UNKNOWN", + 998: "EDITION_PROTO2", + 999: "EDITION_PROTO3", + 1000: "EDITION_2023", + 1001: "EDITION_2024", + 1: "EDITION_1_TEST_ONLY", + 2: "EDITION_2_TEST_ONLY", + 99997: "EDITION_99997_TEST_ONLY", + 99998: "EDITION_99998_TEST_ONLY", + 99999: "EDITION_99999_TEST_ONLY", + 2147483647: "EDITION_MAX", } Edition_value = map[string]int32{ "EDITION_UNKNOWN": 0, "EDITION_PROTO2": 998, "EDITION_PROTO3": 999, "EDITION_2023": 1000, + "EDITION_2024": 1001, "EDITION_1_TEST_ONLY": 1, "EDITION_2_TEST_ONLY": 2, "EDITION_99997_TEST_ONLY": 99997, "EDITION_99998_TEST_ONLY": 99998, "EDITION_99999_TEST_ONLY": 99999, + "EDITION_MAX": 2147483647, } ) @@ -954,21 +963,21 @@ type FeatureSet_Utf8Validation int32 const ( FeatureSet_UTF8_VALIDATION_UNKNOWN FeatureSet_Utf8Validation = 0 - FeatureSet_NONE FeatureSet_Utf8Validation = 1 FeatureSet_VERIFY FeatureSet_Utf8Validation = 2 + FeatureSet_NONE FeatureSet_Utf8Validation = 3 ) // Enum value maps for FeatureSet_Utf8Validation. var ( FeatureSet_Utf8Validation_name = map[int32]string{ 0: "UTF8_VALIDATION_UNKNOWN", - 1: "NONE", 2: "VERIFY", + 3: "NONE", } FeatureSet_Utf8Validation_value = map[string]int32{ "UTF8_VALIDATION_UNKNOWN": 0, - "NONE": 1, "VERIFY": 2, + "NONE": 3, } ) @@ -1643,12 +1652,12 @@ type FieldDescriptorProto struct { // If true, this is a proto3 "optional". When a proto3 field is optional, it // tracks presence regardless of field type. // - // When proto3_optional is true, this field must be belong to a oneof to - // signal to old proto3 clients that presence is tracked for this field. This - // oneof is known as a "synthetic" oneof, and this field must be its sole - // member (each proto3 optional field gets its own synthetic oneof). Synthetic - // oneofs exist in the descriptor only, and do not generate any API. Synthetic - // oneofs must be ordered after all "real" oneofs. + // When proto3_optional is true, this field must belong to a oneof to signal + // to old proto3 clients that presence is tracked for this field. This oneof + // is known as a "synthetic" oneof, and this field must be its sole member + // (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs + // exist in the descriptor only, and do not generate any API. Synthetic oneofs + // must be ordered after all "real" oneofs. // // For message fields, proto3_optional doesn't create any semantic change, // since non-repeated message fields always track presence. However it still @@ -2195,7 +2204,6 @@ type FileOptions struct { CcGenericServices *bool `protobuf:"varint,16,opt,name=cc_generic_services,json=ccGenericServices,def=0" json:"cc_generic_services,omitempty"` JavaGenericServices *bool `protobuf:"varint,17,opt,name=java_generic_services,json=javaGenericServices,def=0" json:"java_generic_services,omitempty"` PyGenericServices *bool `protobuf:"varint,18,opt,name=py_generic_services,json=pyGenericServices,def=0" json:"py_generic_services,omitempty"` - PhpGenericServices *bool `protobuf:"varint,42,opt,name=php_generic_services,json=phpGenericServices,def=0" json:"php_generic_services,omitempty"` // Is this file deprecated? // Depending on the target platform, this can emit Deprecated annotations // for everything in the file, or it will be completely ignored; in the very @@ -2244,7 +2252,6 @@ const ( Default_FileOptions_CcGenericServices = bool(false) Default_FileOptions_JavaGenericServices = bool(false) Default_FileOptions_PyGenericServices = bool(false) - Default_FileOptions_PhpGenericServices = bool(false) Default_FileOptions_Deprecated = bool(false) Default_FileOptions_CcEnableArenas = bool(true) ) @@ -2352,13 +2359,6 @@ func (x *FileOptions) GetPyGenericServices() bool { return Default_FileOptions_PyGenericServices } -func (x *FileOptions) GetPhpGenericServices() bool { - if x != nil && x.PhpGenericServices != nil { - return *x.PhpGenericServices - } - return Default_FileOptions_PhpGenericServices -} - func (x *FileOptions) GetDeprecated() bool { if x != nil && x.Deprecated != nil { return *x.Deprecated @@ -2472,10 +2472,6 @@ type MessageOptions struct { // for the message, or it will be completely ignored; in the very least, // this is a formalization for deprecating messages. Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"` - // NOTE: Do not set the option in .proto files. Always use the maps syntax - // instead. The option should only be implicitly set by the proto compiler - // parser. - // // Whether the message is an automatically generated map entry type for the // maps field. // @@ -2496,6 +2492,10 @@ type MessageOptions struct { // use a native map in the target language to hold the keys and values. // The reflection APIs in such implementations still need to work as // if the field is a repeated message field. + // + // NOTE: Do not set the option in .proto files. Always use the maps syntax + // instead. The option should only be implicitly set by the proto compiler + // parser. MapEntry *bool `protobuf:"varint,7,opt,name=map_entry,json=mapEntry" json:"map_entry,omitempty"` // Enable the legacy handling of JSON field name conflicts. This lowercases // and strips underscored from the fields before comparison in proto3 only. @@ -2655,19 +2655,11 @@ type FieldOptions struct { // call from multiple threads concurrently, while non-const methods continue // to require exclusive access. // - // Note that implementations may choose not to check required fields within - // a lazy sub-message. That is, calling IsInitialized() on the outer message - // may return true even if the inner message has missing required fields. - // This is necessary because otherwise the inner message would have to be - // parsed in order to perform the check, defeating the purpose of lazy - // parsing. An implementation which chooses not to check required fields - // must be consistent about it. That is, for any particular sub-message, the - // implementation must either *always* check its required fields, or *never* - // check its required fields, regardless of whether or not the message has - // been parsed. - // - // As of May 2022, lazy verifies the contents of the byte stream during - // parsing. An invalid byte stream will cause the overall parsing to fail. + // Note that lazy message fields are still eagerly verified to check + // ill-formed wireformat or missing required fields. Calling IsInitialized() + // on the outer message would fail if the inner message has missing required + // fields. Failed verification would result in parsing failure (except when + // uninitialized messages are acceptable). Lazy *bool `protobuf:"varint,5,opt,name=lazy,def=0" json:"lazy,omitempty"` // unverified_lazy does no correctness checks on the byte stream. This should // only be used where lazy with verification is prohibitive for performance @@ -4104,7 +4096,7 @@ type SourceCodeInfo_Location struct { // location. // // Each element is a field number or an index. They form a path from - // the root FileDescriptorProto to the place where the definition occurs. + // the root FileDescriptorProto to the place where the definition appears. // For example, this path: // // [ 4, 3, 2, 7, 1 ] @@ -4451,7 +4443,7 @@ var file_google_protobuf_descriptor_proto_rawDesc = []byte{ 0x1a, 0x37, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0xc7, 0x04, 0x0a, 0x15, 0x45, 0x78, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0xcc, 0x04, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, @@ -4468,337 +4460,355 @@ var file_google_protobuf_descriptor_proto_rawDesc = []byte{ 0x75, 0x72, 0x65, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x73, 0x12, 0x68, 0x0a, 0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x73, 0x12, 0x6d, 0x0a, 0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x3a, 0x0a, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x52, 0x0c, 0x76, - 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x94, 0x01, 0x0a, 0x0b, - 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4a, 0x04, 0x08, 0x04, - 0x10, 0x05, 0x22, 0x34, 0x0a, 0x11, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x45, 0x43, 0x4c, 0x41, - 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x4e, 0x56, 0x45, - 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x01, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, - 0x80, 0x80, 0x02, 0x22, 0xc1, 0x06, 0x0a, 0x14, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x3e, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, - 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x64, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x64, 0x65, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, - 0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x73, - 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, - 0x73, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0xb6, 0x02, 0x0a, 0x04, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, - 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x41, - 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x36, - 0x34, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, - 0x36, 0x34, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, - 0x33, 0x32, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x58, - 0x45, 0x44, 0x36, 0x34, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, - 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0c, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x0d, 0x12, 0x0d, 0x0a, 0x09, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x0e, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x10, 0x0f, 0x12, 0x11, 0x0a, - 0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, 0x10, 0x10, - 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, - 0x11, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x54, 0x36, 0x34, - 0x10, 0x12, 0x22, 0x43, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x0e, 0x4c, - 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12, - 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x50, 0x45, 0x41, 0x54, 0x45, - 0x44, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x51, - 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x02, 0x22, 0x63, 0x0a, 0x14, 0x4f, 0x6e, 0x65, 0x6f, 0x66, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe3, 0x02, 0x0a, - 0x13, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, + 0x65, 0x3a, 0x0a, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x42, 0x03, 0x88, + 0x01, 0x02, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x1a, 0x94, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, + 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x34, 0x0a, 0x11, 0x56, 0x65, 0x72, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0f, 0x0a, 0x0b, + 0x44, 0x45, 0x43, 0x4c, 0x41, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0e, 0x0a, + 0x0a, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x01, 0x2a, 0x09, 0x08, + 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xc1, 0x06, 0x0a, 0x14, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x41, 0x0a, + 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, + 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, + 0x1b, 0x0a, 0x09, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0xb6, + 0x02, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x10, 0x07, 0x12, 0x0d, 0x0a, + 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x09, 0x12, 0x0e, 0x0a, + 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x0a, 0x12, 0x10, 0x0a, + 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x0b, 0x12, + 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0c, 0x12, + 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x0d, + 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x0e, 0x12, + 0x11, 0x0a, 0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, + 0x10, 0x0f, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, + 0x44, 0x36, 0x34, 0x10, 0x10, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, + 0x4e, 0x54, 0x33, 0x32, 0x10, 0x11, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, + 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x12, 0x22, 0x43, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, + 0x41, 0x4c, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x52, 0x45, + 0x50, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, + 0x4c, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x02, 0x22, 0x63, 0x0a, 0x14, + 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x5d, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x61, - 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x3b, 0x0a, 0x11, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, - 0x6e, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x07, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, + 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0xe3, 0x02, 0x0a, 0x13, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, - 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0x89, 0x02, 0x0a, 0x15, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x38, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x10, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0f, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x10, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0f, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x22, 0xca, - 0x09, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, - 0x0a, 0x0c, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6a, 0x61, 0x76, 0x61, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, - 0x63, 0x6c, 0x61, 0x73, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x12, 0x6a, 0x61, 0x76, 0x61, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, - 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x6a, 0x61, 0x76, 0x61, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x70, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x1d, 0x6a, 0x61, - 0x76, 0x61, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x71, 0x75, 0x61, - 0x6c, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x19, 0x6a, 0x61, 0x76, 0x61, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x41, 0x6e, 0x64, 0x48, 0x61, 0x73, 0x68, - 0x12, 0x3a, 0x0a, 0x16, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x75, 0x74, 0x66, 0x38, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, - 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x74, 0x66, 0x38, 0x12, 0x53, 0x0a, 0x0c, - 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x3a, 0x05, 0x53, - 0x50, 0x45, 0x45, 0x44, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x46, 0x6f, - 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x6f, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x12, 0x35, 0x0a, 0x13, 0x63, 0x63, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, - 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x63, 0x63, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x15, 0x6a, 0x61, 0x76, 0x61, 0x5f, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x13, 0x6a, - 0x61, 0x76, 0x61, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x12, 0x35, 0x0a, 0x13, 0x70, 0x79, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, - 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x3a, - 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x70, 0x79, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, - 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x14, 0x70, 0x68, 0x70, - 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x73, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x12, - 0x70, 0x68, 0x70, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, - 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x63, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x18, 0x1f, 0x20, - 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x0e, 0x63, 0x63, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6f, 0x62, 0x6a, - 0x63, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x24, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x50, - 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x73, 0x68, 0x61, 0x72, 0x70, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x63, 0x73, 0x68, 0x61, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x77, 0x69, 0x66, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, - 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x77, 0x69, 0x66, 0x74, 0x50, 0x72, 0x65, - 0x66, 0x69, 0x78, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x68, 0x70, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, - 0x68, 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x23, 0x0a, - 0x0d, 0x70, 0x68, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x29, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x68, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x68, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x2c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x14, 0x70, 0x68, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x62, 0x79, - 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x72, 0x75, 0x62, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x66, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, - 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, - 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, - 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x09, - 0x0a, 0x05, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x44, - 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x49, 0x54, 0x45, - 0x5f, 0x52, 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x03, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, - 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x26, 0x10, 0x27, 0x22, 0xf4, 0x03, 0x0a, 0x0e, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, - 0x0a, 0x17, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x77, 0x69, - 0x72, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, - 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x14, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, - 0x65, 0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x4c, 0x0a, 0x1f, - 0x6e, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x1c, 0x6e, 0x6f, - 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x6f, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, - 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, - 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x56, - 0x0a, 0x26, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x65, 0x67, - 0x61, 0x63, 0x79, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, - 0x18, 0x01, 0x52, 0x22, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, - 0x67, 0x61, 0x63, 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, - 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, - 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, - 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, + 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x36, + 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5d, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, - 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, - 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, - 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x09, - 0x10, 0x0a, 0x22, 0xad, 0x0a, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x43, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x52, - 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x47, - 0x0a, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x3b, 0x0a, 0x11, 0x45, 0x6e, + 0x75, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x45, 0x6e, 0x75, 0x6d, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa7, 0x01, + 0x0a, 0x16, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x39, 0x0a, 0x07, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x89, 0x02, 0x0a, 0x15, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x30, 0x0a, 0x10, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, + 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, + 0x67, 0x12, 0x30, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, + 0x73, 0x65, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x69, 0x6e, 0x67, 0x22, 0x97, 0x09, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x70, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6a, 0x61, 0x76, 0x61, 0x50, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6f, + 0x75, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6a, 0x61, 0x76, 0x61, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x6a, 0x61, 0x76, 0x61, + 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x6a, 0x61, + 0x76, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, + 0x44, 0x0a, 0x1d, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x5f, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, + 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x19, 0x6a, 0x61, 0x76, 0x61, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x41, 0x6e, + 0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3a, 0x0a, 0x16, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x75, 0x74, 0x66, 0x38, 0x18, + 0x1b, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x13, 0x6a, 0x61, + 0x76, 0x61, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x74, 0x66, + 0x38, 0x12, 0x53, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x5f, 0x66, 0x6f, + 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x3a, 0x05, 0x53, 0x50, 0x45, 0x45, 0x44, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x69, 0x6d, + 0x69, 0x7a, 0x65, 0x46, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x6f, 0x5f, 0x70, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x6f, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x63, 0x63, 0x5f, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x63, 0x63, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x15, + 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, + 0x73, 0x65, 0x52, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x13, 0x70, 0x79, 0x5f, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x70, 0x79, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x25, + 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, + 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, + 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x63, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x3a, + 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x0e, 0x63, 0x63, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, + 0x72, 0x65, 0x6e, 0x61, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6f, 0x62, 0x6a, 0x63, 0x5f, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x73, 0x68, 0x61, 0x72, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x73, 0x68, + 0x61, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, + 0x73, 0x77, 0x69, 0x66, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x27, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x73, 0x77, 0x69, 0x66, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, + 0x28, 0x0a, 0x10, 0x70, 0x68, 0x70, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x68, 0x70, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x68, 0x70, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x70, 0x68, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x34, + 0x0a, 0x16, 0x70, 0x68, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, + 0x70, 0x68, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x62, 0x79, 0x5f, 0x70, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x62, 0x79, + 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, + 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, + 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, + 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, + 0x45, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x49, + 0x5a, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x49, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4e, + 0x54, 0x49, 0x4d, 0x45, 0x10, 0x03, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, + 0x02, 0x4a, 0x04, 0x08, 0x2a, 0x10, 0x2b, 0x4a, 0x04, 0x08, 0x26, 0x10, 0x27, 0x22, 0xf4, 0x03, + 0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x3c, 0x0a, 0x17, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, + 0x77, 0x69, 0x72, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x14, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x53, 0x65, 0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x4c, + 0x0a, 0x1f, 0x6e, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x1c, + 0x6e, 0x6f, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0a, + 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, + 0x74, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x56, 0x0a, 0x26, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6c, + 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x02, 0x18, 0x01, 0x52, 0x22, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, + 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, + 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, + 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, + 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, + 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, + 0x08, 0x09, 0x10, 0x0a, 0x22, 0xad, 0x0a, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, + 0x47, 0x52, 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x63, 0x6b, + 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, + 0x12, 0x47, 0x0a, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, + 0x4c, 0x52, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x04, 0x6c, 0x61, 0x7a, + 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x04, + 0x6c, 0x61, 0x7a, 0x79, 0x12, 0x2e, 0x0a, 0x0f, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, + 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0e, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, + 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x04, 0x77, + 0x65, 0x61, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, + 0x52, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x12, 0x28, 0x0a, 0x0c, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, + 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, + 0x6c, 0x73, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, + 0x12, 0x4b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, + 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4a, 0x53, - 0x54, 0x79, 0x70, 0x65, 0x3a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x52, - 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x04, 0x6c, 0x61, 0x7a, 0x79, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x04, 0x6c, 0x61, - 0x7a, 0x79, 0x12, 0x2e, 0x0a, 0x0f, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, - 0x73, 0x65, 0x52, 0x0e, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4c, 0x61, - 0x7a, 0x79, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, - 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x04, 0x77, 0x65, 0x61, - 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x04, - 0x77, 0x65, 0x61, 0x6b, 0x12, 0x28, 0x0a, 0x0c, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x72, 0x65, - 0x64, 0x61, 0x63, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, - 0x65, 0x52, 0x0b, 0x64, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x12, 0x4b, - 0x0a, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x57, 0x0a, 0x10, 0x65, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x07, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x57, 0x0a, 0x10, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x0f, 0x65, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x37, - 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x1a, 0x5a, 0x0a, 0x0e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, - 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2f, 0x0a, - 0x05, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, - 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f, 0x52, 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, - 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x49, 0x45, 0x43, 0x45, 0x10, 0x02, 0x22, 0x35, - 0x0a, 0x06, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, - 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x53, 0x54, - 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x55, 0x4d, - 0x42, 0x45, 0x52, 0x10, 0x02, 0x22, 0x55, 0x0a, 0x0f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x45, - 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x55, 0x4e, - 0x54, 0x49, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x02, 0x22, 0x8c, 0x02, 0x0a, - 0x10, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, - 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x01, - 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, - 0x02, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, - 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, - 0x04, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4f, 0x4e, 0x45, 0x4f, 0x46, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, 0x52, 0x47, - 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x06, 0x12, 0x1a, - 0x0a, 0x16, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, - 0x55, 0x4d, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, - 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, - 0x45, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x10, 0x09, 0x2a, 0x09, 0x08, 0xe8, 0x07, - 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x12, - 0x10, 0x13, 0x22, 0xac, 0x01, 0x0a, 0x0c, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, + 0x0f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, + 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, + 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, + 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x1a, 0x5a, 0x0a, 0x0e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0x2f, 0x0a, 0x05, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, + 0x4e, 0x47, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f, 0x52, 0x44, 0x10, 0x01, 0x12, 0x10, + 0x0a, 0x0c, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x49, 0x45, 0x43, 0x45, 0x10, 0x02, + 0x22, 0x35, 0x0a, 0x06, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, + 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, + 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, + 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x22, 0x55, 0x0a, 0x0f, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, + 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, + 0x00, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, + 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x54, 0x45, + 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x02, 0x22, 0x8c, + 0x02, 0x0a, 0x10, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, + 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x4c, 0x45, + 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, + 0x45, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, + 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x45, 0x4c, + 0x44, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4f, 0x4e, 0x45, 0x4f, 0x46, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, + 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x06, + 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, + 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, + 0x49, 0x43, 0x45, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x10, 0x09, 0x2a, 0x09, 0x08, + 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, + 0x08, 0x12, 0x10, 0x13, 0x22, 0xac, 0x01, 0x0a, 0x0c, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, + 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, + 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, + 0x80, 0x80, 0x02, 0x22, 0xd1, 0x02, 0x0a, 0x0b, 0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x69, + 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, + 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x56, 0x0a, 0x26, 0x64, + 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, + 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, + 0x22, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, + 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, + 0x63, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, @@ -4807,276 +4817,258 @@ var file_google_protobuf_descriptor_proto_rawDesc = []byte{ 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, - 0x02, 0x22, 0xd1, 0x02, 0x0a, 0x0b, 0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x69, - 0x61, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, - 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x56, 0x0a, 0x26, 0x64, 0x65, 0x70, - 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x6a, - 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, - 0x63, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x22, 0x64, - 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4a, - 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, - 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, - 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, - 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x81, 0x02, 0x0a, 0x10, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, - 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, - 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, - 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0c, 0x64, 0x65, - 0x62, 0x75, 0x67, 0x5f, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, - 0x64, 0x61, 0x63, 0x74, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, - 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, - 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, - 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xd5, 0x01, 0x0a, 0x0e, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x08, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, - 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x58, 0x0a, 0x14, - 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, - 0x02, 0x22, 0x99, 0x03, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, - 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x11, 0x69, 0x64, - 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, - 0x22, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x3a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, - 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x52, 0x10, 0x69, 0x64, 0x65, - 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x37, 0x0a, - 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, + 0x02, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x81, 0x02, 0x0a, 0x10, 0x45, 0x6e, 0x75, 0x6d, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, + 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, + 0x74, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, + 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0c, + 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x62, 0x75, 0x67, + 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x50, 0x0a, 0x10, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, - 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, - 0x0f, 0x4e, 0x4f, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x53, - 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x54, - 0x10, 0x02, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x9a, 0x03, - 0x0a, 0x13, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, - 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x61, - 0x72, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, - 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, - 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x4a, - 0x0a, 0x08, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x6e, - 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x65, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x02, 0x28, 0x08, 0x52, 0x0b, 0x69, - 0x73, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xfc, 0x09, 0x0a, 0x0a, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x12, 0x8b, 0x01, 0x0a, 0x0e, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x39, 0x88, - 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, 0x58, 0x50, - 0x4c, 0x49, 0x43, 0x49, 0x54, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x49, 0x4d, 0x50, - 0x4c, 0x49, 0x43, 0x49, 0x54, 0x18, 0xe7, 0x07, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, 0x58, 0x50, - 0x4c, 0x49, 0x43, 0x49, 0x54, 0x18, 0xe8, 0x07, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, - 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x66, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, - 0x42, 0x23, 0x88, 0x01, 0x01, 0x98, 0x01, 0x06, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x0b, 0x12, 0x06, - 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x09, 0x12, 0x04, 0x4f, 0x50, - 0x45, 0x4e, 0x18, 0xe7, 0x07, 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x92, 0x01, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x52, - 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x63, 0x6f, - 0x64, 0x69, 0x6e, 0x67, 0x42, 0x27, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, - 0x01, 0x0d, 0x12, 0x08, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, 0x45, 0x44, 0x18, 0xe6, 0x07, 0xa2, - 0x01, 0x0b, 0x12, 0x06, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x44, 0x18, 0xe7, 0x07, 0x52, 0x15, 0x72, - 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x63, 0x6f, - 0x64, 0x69, 0x6e, 0x67, 0x12, 0x78, 0x0a, 0x0f, 0x75, 0x74, 0x66, 0x38, 0x5f, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x55, 0x74, 0x66, 0x38, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x23, 0x88, 0x01, 0x01, 0x98, 0x01, - 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x09, 0x12, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x18, 0xe6, 0x07, - 0xa2, 0x01, 0x0b, 0x12, 0x06, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x18, 0xe7, 0x07, 0x52, 0x0e, - 0x75, 0x74, 0x66, 0x38, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x78, - 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, - 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x63, - 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x20, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, - 0xa2, 0x01, 0x14, 0x12, 0x0f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x5f, 0x50, 0x52, 0x45, 0x46, - 0x49, 0x58, 0x45, 0x44, 0x18, 0xe6, 0x07, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x7c, 0x0a, 0x0b, 0x6a, 0x73, 0x6f, 0x6e, - 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, + 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xd5, 0x01, 0x0a, 0x0e, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, + 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, + 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, + 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x58, + 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x46, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x42, 0x33, 0x88, 0x01, 0x01, 0x98, 0x01, 0x03, 0x98, 0x01, 0x06, - 0x98, 0x01, 0x01, 0xa2, 0x01, 0x17, 0x12, 0x12, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f, 0x42, - 0x45, 0x53, 0x54, 0x5f, 0x45, 0x46, 0x46, 0x4f, 0x52, 0x54, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x0a, - 0x12, 0x05, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x18, 0xe7, 0x07, 0x52, 0x0a, 0x6a, 0x73, 0x6f, 0x6e, - 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x5c, 0x0a, 0x0d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, - 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, - 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x10, - 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x10, 0x02, 0x12, - 0x13, 0x0a, 0x0f, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, - 0x45, 0x44, 0x10, 0x03, 0x22, 0x37, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, - 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4f, 0x50, 0x45, 0x4e, 0x10, - 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x02, 0x22, 0x56, 0x0a, - 0x15, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, - 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x50, 0x45, 0x41, 0x54, - 0x45, 0x44, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, 0x49, 0x4e, - 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x50, 0x41, 0x4e, - 0x44, 0x45, 0x44, 0x10, 0x02, 0x22, 0x43, 0x0a, 0x0e, 0x55, 0x74, 0x66, 0x38, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x54, 0x46, 0x38, 0x5f, - 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, - 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x0a, - 0x0a, 0x06, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x10, 0x02, 0x22, 0x53, 0x0a, 0x0f, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x0a, - 0x18, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, 0x49, 0x4e, - 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, - 0x45, 0x4e, 0x47, 0x54, 0x48, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x45, 0x44, 0x10, 0x01, - 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x44, 0x10, 0x02, 0x22, - 0x48, 0x0a, 0x0a, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x17, 0x0a, - 0x13, 0x4a, 0x53, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x4b, - 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x10, - 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f, 0x42, 0x45, 0x53, 0x54, - 0x5f, 0x45, 0x46, 0x46, 0x4f, 0x52, 0x54, 0x10, 0x02, 0x2a, 0x06, 0x08, 0xe8, 0x07, 0x10, 0xe9, - 0x07, 0x2a, 0x06, 0x08, 0xe9, 0x07, 0x10, 0xea, 0x07, 0x2a, 0x06, 0x08, 0x8b, 0x4e, 0x10, 0x90, - 0x4e, 0x4a, 0x06, 0x08, 0xe7, 0x07, 0x10, 0xe8, 0x07, 0x22, 0xfe, 0x02, 0x0a, 0x12, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, - 0x12, 0x58, 0x0a, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, - 0x65, 0x74, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x52, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0f, 0x6d, 0x69, - 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6d, - 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, - 0x0f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x1a, 0x87, 0x01, 0x0a, 0x18, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x45, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, - 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, + 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, + 0x80, 0x80, 0x02, 0x22, 0x99, 0x03, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, + 0x74, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, + 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x11, + 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, + 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x3a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, + 0x54, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x52, 0x10, 0x69, + 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, + 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x50, 0x0a, 0x10, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, + 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, + 0x54, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, + 0x13, 0x0a, 0x0f, 0x4e, 0x4f, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, + 0x54, 0x53, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, + 0x4e, 0x54, 0x10, 0x02, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, + 0x9a, 0x03, 0x0a, 0x13, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, + 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x61, 0x6d, 0x65, + 0x50, 0x61, 0x72, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x10, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x67, 0x67, 0x72, 0x65, + 0x67, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x1a, 0x4a, 0x0a, 0x08, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, + 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, + 0x08, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x02, 0x28, 0x08, 0x52, + 0x0b, 0x69, 0x73, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x8c, 0x0a, 0x0a, + 0x0a, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x12, 0x8b, 0x01, 0x0a, 0x0e, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, + 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x42, + 0x39, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, + 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x49, + 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x18, 0xe7, 0x07, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, + 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x18, 0xe8, 0x07, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x66, 0x0a, 0x09, 0x65, 0x6e, 0x75, + 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, + 0x70, 0x65, 0x42, 0x23, 0x88, 0x01, 0x01, 0x98, 0x01, 0x06, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x0b, + 0x12, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x09, 0x12, 0x04, + 0x4f, 0x50, 0x45, 0x4e, 0x18, 0xe7, 0x07, 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x92, 0x01, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, - 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0xa7, 0x02, 0x0a, 0x0e, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x44, 0x0a, - 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x1a, 0xce, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, - 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, - 0x12, 0x29, 0x0a, 0x10, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x65, 0x61, 0x64, - 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x74, - 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, - 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x6c, 0x65, 0x61, 0x64, - 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x6c, 0x65, 0x61, - 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x22, 0xd0, 0x02, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4d, 0x0a, 0x0a, 0x61, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xeb, 0x01, 0x0a, 0x0a, 0x41, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x6c, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x52, 0x0a, 0x08, 0x73, 0x65, 0x6d, - 0x61, 0x6e, 0x74, 0x69, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, - 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x6d, 0x61, 0x6e, - 0x74, 0x69, 0x63, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x22, 0x28, 0x0a, - 0x08, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, - 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, - 0x41, 0x4c, 0x49, 0x41, 0x53, 0x10, 0x02, 0x2a, 0xea, 0x01, 0x0a, 0x07, 0x45, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, - 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x44, 0x49, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x32, 0x10, 0xe6, 0x07, 0x12, 0x13, 0x0a, - 0x0e, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x33, 0x10, - 0xe7, 0x07, 0x12, 0x11, 0x0a, 0x0c, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x32, 0x30, - 0x32, 0x33, 0x10, 0xe8, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x31, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x17, - 0x0a, 0x13, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x32, 0x5f, 0x54, 0x45, 0x53, 0x54, - 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, 0x49, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x37, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, - 0x4c, 0x59, 0x10, 0x9d, 0x8d, 0x06, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x38, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, - 0x59, 0x10, 0x9e, 0x8d, 0x06, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x39, 0x39, 0x39, 0x39, 0x39, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, - 0x10, 0x9f, 0x8d, 0x06, 0x42, 0x7e, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x10, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x48, 0x01, 0x5a, - 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x70, 0x62, 0xf8, 0x01, - 0x01, 0xa2, 0x02, 0x03, 0x47, 0x50, 0x42, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, + 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x27, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, + 0x01, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, 0x45, 0x44, 0x18, 0xe6, + 0x07, 0xa2, 0x01, 0x0b, 0x12, 0x06, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x44, 0x18, 0xe7, 0x07, 0x52, + 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, + 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x78, 0x0a, 0x0f, 0x75, 0x74, 0x66, 0x38, 0x5f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x55, 0x74, 0x66, + 0x38, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x23, 0x88, 0x01, 0x01, + 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x09, 0x12, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x18, + 0xe6, 0x07, 0xa2, 0x01, 0x0b, 0x12, 0x06, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x18, 0xe7, 0x07, + 0x52, 0x0e, 0x75, 0x74, 0x66, 0x38, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x78, 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x6f, + 0x64, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, + 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x20, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, + 0x01, 0x01, 0xa2, 0x01, 0x14, 0x12, 0x0f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x5f, 0x50, 0x52, + 0x45, 0x46, 0x49, 0x58, 0x45, 0x44, 0x18, 0xe6, 0x07, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x7c, 0x0a, 0x0b, 0x6a, 0x73, + 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x4a, 0x73, 0x6f, + 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x42, 0x33, 0x88, 0x01, 0x01, 0x98, 0x01, 0x03, 0x98, + 0x01, 0x06, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x17, 0x12, 0x12, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, + 0x5f, 0x42, 0x45, 0x53, 0x54, 0x5f, 0x45, 0x46, 0x46, 0x4f, 0x52, 0x54, 0x18, 0xe6, 0x07, 0xa2, + 0x01, 0x0a, 0x12, 0x05, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x18, 0xe7, 0x07, 0x52, 0x0a, 0x6a, 0x73, + 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x5c, 0x0a, 0x0d, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x46, 0x49, 0x45, + 0x4c, 0x44, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, + 0x54, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x10, + 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, + 0x49, 0x52, 0x45, 0x44, 0x10, 0x03, 0x22, 0x37, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4f, 0x50, 0x45, + 0x4e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x02, 0x22, + 0x56, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x50, 0x45, + 0x41, 0x54, 0x45, 0x44, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, + 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, + 0x06, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x50, + 0x41, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x02, 0x22, 0x43, 0x0a, 0x0e, 0x55, 0x74, 0x66, 0x38, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x54, 0x46, + 0x38, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, + 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, + 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x22, 0x53, 0x0a, 0x0f, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, + 0x1c, 0x0a, 0x18, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, + 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, + 0x0f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x45, 0x44, + 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x44, 0x10, + 0x02, 0x22, 0x48, 0x0a, 0x0a, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, + 0x17, 0x0a, 0x13, 0x4a, 0x53, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x4c, 0x4f, + 0x57, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f, 0x42, 0x45, + 0x53, 0x54, 0x5f, 0x45, 0x46, 0x46, 0x4f, 0x52, 0x54, 0x10, 0x02, 0x2a, 0x06, 0x08, 0xe8, 0x07, + 0x10, 0xe9, 0x07, 0x2a, 0x06, 0x08, 0xe9, 0x07, 0x10, 0xea, 0x07, 0x2a, 0x06, 0x08, 0xea, 0x07, + 0x10, 0xeb, 0x07, 0x2a, 0x06, 0x08, 0x8b, 0x4e, 0x10, 0x90, 0x4e, 0x2a, 0x06, 0x08, 0x90, 0x4e, + 0x10, 0x91, 0x4e, 0x4a, 0x06, 0x08, 0xe7, 0x07, 0x10, 0xe8, 0x07, 0x22, 0xfe, 0x02, 0x0a, 0x12, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x73, 0x12, 0x58, 0x0a, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, + 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x53, 0x65, 0x74, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x52, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0f, + 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0e, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x41, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x45, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x1a, 0x87, 0x01, 0x0a, 0x18, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, + 0x74, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, + 0x32, 0x0a, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, + 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0xa7, 0x02, 0x0a, + 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x44, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xce, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, + 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x04, 0x73, 0x70, + 0x61, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x73, 0x70, + 0x61, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x65, + 0x61, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, + 0x11, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x6c, 0x65, + 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x6c, + 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xd0, 0x02, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4d, 0x0a, 0x0a, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xeb, 0x01, 0x0a, 0x0a, + 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, + 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x52, 0x0a, 0x08, 0x73, + 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x6d, + 0x61, 0x6e, 0x74, 0x69, 0x63, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x22, + 0x28, 0x0a, 0x08, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x12, 0x08, 0x0a, 0x04, 0x4e, + 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x09, + 0x0a, 0x05, 0x41, 0x4c, 0x49, 0x41, 0x53, 0x10, 0x02, 0x2a, 0x92, 0x02, 0x0a, 0x07, 0x45, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x44, + 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x32, 0x10, 0xe6, 0x07, 0x12, + 0x13, 0x0a, 0x0e, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, + 0x33, 0x10, 0xe7, 0x07, 0x12, 0x11, 0x0a, 0x0c, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x32, 0x30, 0x32, 0x33, 0x10, 0xe8, 0x07, 0x12, 0x11, 0x0a, 0x0c, 0x45, 0x44, 0x49, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x32, 0x30, 0x32, 0x34, 0x10, 0xe9, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x44, + 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x31, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, + 0x59, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x32, + 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x17, + 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x37, 0x5f, 0x54, 0x45, + 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x9d, 0x8d, 0x06, 0x12, 0x1d, 0x0a, 0x17, 0x45, + 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x38, 0x5f, 0x54, 0x45, 0x53, + 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x9e, 0x8d, 0x06, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, + 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x39, 0x5f, 0x54, 0x45, 0x53, 0x54, + 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x9f, 0x8d, 0x06, 0x12, 0x13, 0x0a, 0x0b, 0x45, 0x44, 0x49, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0xff, 0xff, 0xff, 0xff, 0x07, 0x42, 0x7e, + 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x10, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, + 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x48, 0x01, 0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x03, 0x47, 0x50, + 0x42, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, } var ( diff --git a/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go b/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go new file mode 100644 index 0000000000..25de5ae008 --- /dev/null +++ b/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go @@ -0,0 +1,177 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2023 Google Inc. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file or at +// https://developers.google.com/open-source/licenses/bsd + +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: reflect/protodesc/proto/go_features.proto + +package proto + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + descriptorpb "google.golang.org/protobuf/types/descriptorpb" + reflect "reflect" + sync "sync" +) + +type GoFeatures struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Whether or not to generate the deprecated UnmarshalJSON method for enums. + LegacyUnmarshalJsonEnum *bool `protobuf:"varint,1,opt,name=legacy_unmarshal_json_enum,json=legacyUnmarshalJsonEnum" json:"legacy_unmarshal_json_enum,omitempty"` +} + +func (x *GoFeatures) Reset() { + *x = GoFeatures{} + if protoimpl.UnsafeEnabled { + mi := &file_reflect_protodesc_proto_go_features_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GoFeatures) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GoFeatures) ProtoMessage() {} + +func (x *GoFeatures) ProtoReflect() protoreflect.Message { + mi := &file_reflect_protodesc_proto_go_features_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GoFeatures.ProtoReflect.Descriptor instead. +func (*GoFeatures) Descriptor() ([]byte, []int) { + return file_reflect_protodesc_proto_go_features_proto_rawDescGZIP(), []int{0} +} + +func (x *GoFeatures) GetLegacyUnmarshalJsonEnum() bool { + if x != nil && x.LegacyUnmarshalJsonEnum != nil { + return *x.LegacyUnmarshalJsonEnum + } + return false +} + +var file_reflect_protodesc_proto_go_features_proto_extTypes = []protoimpl.ExtensionInfo{ + { + ExtendedType: (*descriptorpb.FeatureSet)(nil), + ExtensionType: (*GoFeatures)(nil), + Field: 1002, + Name: "google.protobuf.go", + Tag: "bytes,1002,opt,name=go", + Filename: "reflect/protodesc/proto/go_features.proto", + }, +} + +// Extension fields to descriptorpb.FeatureSet. +var ( + // optional google.protobuf.GoFeatures go = 1002; + E_Go = &file_reflect_protodesc_proto_go_features_proto_extTypes[0] +) + +var File_reflect_protodesc_proto_go_features_proto protoreflect.FileDescriptor + +var file_reflect_protodesc_proto_go_features_proto_rawDesc = []byte{ + 0x0a, 0x29, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x64, + 0x65, 0x73, 0x63, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x20, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6a, + 0x0a, 0x0a, 0x47, 0x6f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x5c, 0x0a, 0x1a, + 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x75, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, + 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x1f, 0x88, 0x01, 0x01, 0x98, 0x01, 0x06, 0xa2, 0x01, 0x09, 0x12, 0x04, 0x74, 0x72, 0x75, + 0x65, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x0a, 0x12, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x18, 0xe7, + 0x07, 0x52, 0x17, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, + 0x61, 0x6c, 0x4a, 0x73, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x49, 0x0a, 0x02, 0x67, 0x6f, + 0x12, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x18, 0xea, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x6f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x73, 0x52, 0x02, 0x67, 0x6f, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x64, 0x65, 0x73, 0x63, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, +} + +var ( + file_reflect_protodesc_proto_go_features_proto_rawDescOnce sync.Once + file_reflect_protodesc_proto_go_features_proto_rawDescData = file_reflect_protodesc_proto_go_features_proto_rawDesc +) + +func file_reflect_protodesc_proto_go_features_proto_rawDescGZIP() []byte { + file_reflect_protodesc_proto_go_features_proto_rawDescOnce.Do(func() { + file_reflect_protodesc_proto_go_features_proto_rawDescData = protoimpl.X.CompressGZIP(file_reflect_protodesc_proto_go_features_proto_rawDescData) + }) + return file_reflect_protodesc_proto_go_features_proto_rawDescData +} + +var file_reflect_protodesc_proto_go_features_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_reflect_protodesc_proto_go_features_proto_goTypes = []interface{}{ + (*GoFeatures)(nil), // 0: google.protobuf.GoFeatures + (*descriptorpb.FeatureSet)(nil), // 1: google.protobuf.FeatureSet +} +var file_reflect_protodesc_proto_go_features_proto_depIdxs = []int32{ + 1, // 0: google.protobuf.go:extendee -> google.protobuf.FeatureSet + 0, // 1: google.protobuf.go:type_name -> google.protobuf.GoFeatures + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 1, // [1:2] is the sub-list for extension type_name + 0, // [0:1] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_reflect_protodesc_proto_go_features_proto_init() } +func file_reflect_protodesc_proto_go_features_proto_init() { + if File_reflect_protodesc_proto_go_features_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_reflect_protodesc_proto_go_features_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GoFeatures); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_reflect_protodesc_proto_go_features_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 1, + NumServices: 0, + }, + GoTypes: file_reflect_protodesc_proto_go_features_proto_goTypes, + DependencyIndexes: file_reflect_protodesc_proto_go_features_proto_depIdxs, + MessageInfos: file_reflect_protodesc_proto_go_features_proto_msgTypes, + ExtensionInfos: file_reflect_protodesc_proto_go_features_proto_extTypes, + }.Build() + File_reflect_protodesc_proto_go_features_proto = out.File + file_reflect_protodesc_proto_go_features_proto_rawDesc = nil + file_reflect_protodesc_proto_go_features_proto_goTypes = nil + file_reflect_protodesc_proto_go_features_proto_depIdxs = nil +} diff --git a/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.proto b/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.proto new file mode 100644 index 0000000000..d246571296 --- /dev/null +++ b/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.proto @@ -0,0 +1,28 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2023 Google Inc. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file or at +// https://developers.google.com/open-source/licenses/bsd + +syntax = "proto2"; + +package google.protobuf; + +import "google/protobuf/descriptor.proto"; + +option go_package = "google.golang.org/protobuf/types/gofeaturespb"; + +extend google.protobuf.FeatureSet { + optional GoFeatures go = 1002; +} + +message GoFeatures { + // Whether or not to generate the deprecated UnmarshalJSON method for enums. + optional bool legacy_unmarshal_json_enum = 1 [ + retention = RETENTION_RUNTIME, + targets = TARGET_TYPE_ENUM, + edition_defaults = { edition: EDITION_PROTO2, value: "true" }, + edition_defaults = { edition: EDITION_PROTO3, value: "false" } + ]; +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 77c7c724b1..76526fe4b4 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -52,7 +52,7 @@ github.com/chai2010/gettext-go github.com/chai2010/gettext-go/mo github.com/chai2010/gettext-go/plural github.com/chai2010/gettext-go/po -# github.com/cilium/charts v0.0.0-20240215004515-bc815e50489c +# github.com/cilium/charts v0.0.0-20240306101429-d0833cd64c89 ## explicit; go 1.17 github.com/cilium/charts # github.com/cilium/cilium v1.16.0-pre.0 @@ -640,8 +640,8 @@ github.com/go-openapi/analysis/internal/flatten/operations github.com/go-openapi/analysis/internal/flatten/replace github.com/go-openapi/analysis/internal/flatten/schutils github.com/go-openapi/analysis/internal/flatten/sortref -# github.com/go-openapi/errors v0.21.1 -## explicit; go 1.19 +# github.com/go-openapi/errors v0.22.0 +## explicit; go 1.20 github.com/go-openapi/errors # github.com/go-openapi/jsonpointer v0.20.2 ## explicit; go 1.19 @@ -667,8 +667,8 @@ github.com/go-openapi/runtime/yamlpc # github.com/go-openapi/spec v0.20.14 ## explicit; go 1.19 github.com/go-openapi/spec -# github.com/go-openapi/strfmt v0.22.2 -## explicit; go 1.19 +# github.com/go-openapi/strfmt v0.23.0 +## explicit; go 1.20 github.com/go-openapi/strfmt # github.com/go-openapi/swag v0.22.9 ## explicit; go 1.19 @@ -932,7 +932,7 @@ github.com/opencontainers/image-spec/specs-go/v1 github.com/opentracing/opentracing-go github.com/opentracing/opentracing-go/ext github.com/opentracing/opentracing-go/log -# github.com/osrg/gobgp/v3 v3.23.0 +# github.com/osrg/gobgp/v3 v3.24.0 ## explicit; go 1.20 github.com/osrg/gobgp/v3/pkg/packet/bgp # github.com/pelletier/go-toml v1.9.5 @@ -969,7 +969,7 @@ github.com/prometheus/client_golang/prometheus/promhttp # github.com/prometheus/client_model v0.6.0 ## explicit; go 1.19 github.com/prometheus/client_model/go -# github.com/prometheus/common v0.49.0 +# github.com/prometheus/common v0.50.0 ## explicit; go 1.21 github.com/prometheus/common/expfmt github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg @@ -1187,7 +1187,7 @@ go.uber.org/zap/zapgrpc # go4.org/netipx v0.0.0-20231129151722-fdeea329fbba ## explicit; go 1.18 go4.org/netipx -# golang.org/x/crypto v0.20.0 +# golang.org/x/crypto v0.21.0 ## explicit; go 1.18 golang.org/x/crypto/bcrypt golang.org/x/crypto/blowfish @@ -1215,7 +1215,7 @@ golang.org/x/exp/slices golang.org/x/exp/slog golang.org/x/exp/slog/internal golang.org/x/exp/slog/internal/buffer -# golang.org/x/net v0.21.0 +# golang.org/x/net v0.22.0 ## explicit; go 1.18 golang.org/x/net/context/ctxhttp golang.org/x/net/html @@ -1228,7 +1228,7 @@ golang.org/x/net/internal/socks golang.org/x/net/internal/timeseries golang.org/x/net/proxy golang.org/x/net/trace -# golang.org/x/oauth2 v0.17.0 +# golang.org/x/oauth2 v0.18.0 ## explicit; go 1.18 golang.org/x/oauth2 golang.org/x/oauth2/internal @@ -1236,13 +1236,13 @@ golang.org/x/oauth2/internal ## explicit; go 1.18 golang.org/x/sync/errgroup golang.org/x/sync/semaphore -# golang.org/x/sys v0.17.0 +# golang.org/x/sys v0.18.0 ## explicit; go 1.18 golang.org/x/sys/execabs golang.org/x/sys/plan9 golang.org/x/sys/unix golang.org/x/sys/windows -# golang.org/x/term v0.17.0 +# golang.org/x/term v0.18.0 ## explicit; go 1.18 golang.org/x/term # golang.org/x/text v0.14.0 @@ -1334,7 +1334,7 @@ google.golang.org/grpc/serviceconfig google.golang.org/grpc/stats google.golang.org/grpc/status google.golang.org/grpc/tap -# google.golang.org/protobuf v1.32.0 +# google.golang.org/protobuf v1.33.0 ## explicit; go 1.17 google.golang.org/protobuf/encoding/protodelim google.golang.org/protobuf/encoding/protojson @@ -1343,6 +1343,7 @@ google.golang.org/protobuf/encoding/protowire google.golang.org/protobuf/internal/descfmt google.golang.org/protobuf/internal/descopts google.golang.org/protobuf/internal/detrand +google.golang.org/protobuf/internal/editiondefaults google.golang.org/protobuf/internal/encoding/defval google.golang.org/protobuf/internal/encoding/json google.golang.org/protobuf/internal/encoding/messageset @@ -1367,6 +1368,7 @@ google.golang.org/protobuf/reflect/protoregistry google.golang.org/protobuf/runtime/protoiface google.golang.org/protobuf/runtime/protoimpl google.golang.org/protobuf/types/descriptorpb +google.golang.org/protobuf/types/gofeaturespb google.golang.org/protobuf/types/known/anypb google.golang.org/protobuf/types/known/durationpb google.golang.org/protobuf/types/known/emptypb