diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1e0bdc2b..442f0b2e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,7 +27,7 @@ jobs: - name: Install Go uses: actions/setup-go@v6 with: - go-version: "1.21.x" + go-version: "1.24.x" - name: Download dependencies run: | diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 717b5612..d30f588a 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -16,7 +16,7 @@ jobs: test: strategy: matrix: - go-version: [1.21.x, 1.24.x] + go-version: [1.24.x] os: [ubuntu-latest, windows-latest] targetplatform: [x86, x64] diff --git a/go.mod b/go.mod index 6306fb52..4b1f535c 100644 --- a/go.mod +++ b/go.mod @@ -1,28 +1,33 @@ module github.com/tableauio/tableau -go 1.21 +go 1.24.0 require ( + buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260209202127-80ab13bee0bf.1 + buf.build/go/protovalidate v1.1.0 github.com/bufbuild/protocompile v0.10.0 github.com/emirpasic/gods v1.18.1 github.com/protocolbuffers/txtpbfmt v0.0.0-20240820135758-21b1d9897dc7 github.com/rogpeppe/go-internal v1.10.0 github.com/spf13/cobra v1.9.1 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.1 github.com/subchen/go-xmldom v1.1.2 github.com/valyala/fastjson v1.6.7 github.com/xuri/excelize/v2 v2.9.0 go.uber.org/zap v1.24.0 - golang.org/x/sync v0.8.0 - golang.org/x/text v0.19.0 - google.golang.org/protobuf v1.34.2 + golang.org/x/sync v0.16.0 + golang.org/x/text v0.28.0 + google.golang.org/protobuf v1.36.11 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 ) require ( + cel.dev/expr v0.24.0 // indirect github.com/antchfx/xpath v0.0.0-20170515025933-1f3266e77307 // indirect + github.com/antlr4-go/antlr/v4 v4.13.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/google/cel-go v0.26.1 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect @@ -30,10 +35,14 @@ require ( github.com/richardlehane/mscfb v1.0.4 // indirect github.com/richardlehane/msoleps v1.0.4 // indirect github.com/spf13/pflag v1.0.6 // indirect + github.com/stoewer/go-strcase v1.3.1 // indirect github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d // indirect github.com/xuri/nfp v0.0.0-20240318013403-ab9948c2c4a7 // indirect go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect - golang.org/x/crypto v0.28.0 // indirect - golang.org/x/net v0.30.0 // indirect + golang.org/x/crypto v0.36.0 // indirect + golang.org/x/exp v0.0.0-20250813145105-42675adae3e6 // indirect + golang.org/x/net v0.37.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250811230008-5f3141c8851a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250811230008-5f3141c8851a // indirect ) diff --git a/go.sum b/go.sum index 61ecc27a..f836ece6 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,17 @@ +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260209202127-80ab13bee0bf.1 h1:PMmTMyvHScV9Mn8wc6ASge9uRcHy0jtqPd+fM35LmsQ= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260209202127-80ab13bee0bf.1/go.mod h1:tvtbpgaVXZX4g6Pn+AnzFycuRK3MOz5HJfEGeEllXYM= +buf.build/go/protovalidate v1.1.0 h1:pQqEQRpOo4SqS60qkvmhLTTQU9JwzEvdyiqAtXa5SeY= +buf.build/go/protovalidate v1.1.0/go.mod h1:bGZcPiAQDC3ErCHK3t74jSoJDFOs2JH3d7LWuTEIdss= +cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= +cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= github.com/antchfx/xpath v0.0.0-20170515025933-1f3266e77307 h1:C735MoY/X+UOx6SECmHk5pVOj51h839Ph13pEoY8UmU= github.com/antchfx/xpath v0.0.0-20170515025933-1f3266e77307/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk= +github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ= +github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/brianvoe/gofakeit/v6 v6.28.0 h1:Xib46XXuQfmlLS2EXRuJpqcw8St6qSZz75OUo0tgAW4= +github.com/brianvoe/gofakeit/v6 v6.28.0/go.mod h1:Xj58BMSnFqcn/fAQeSK+/PLtC5kSb7FJIq4JyGa8vEs= github.com/bufbuild/protocompile v0.10.0 h1:+jW/wnLMLxaCEG8AX9lD0bQ5v9h1RUiMKOBOT5ll9dM= github.com/bufbuild/protocompile v0.10.0/go.mod h1:G9qQIQo0xZ6Uyj6CMNz0saGmx2so+KONo8/KrELABiY= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= @@ -10,10 +20,16 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/cel-go v0.26.1 h1:iPbVVEdkhTX++hpe3lzSk7D3G3QSYqLGoHOcEio+UXQ= +github.com/google/cel-go v0.26.1/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= @@ -31,6 +47,8 @@ github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7 github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= github.com/richardlehane/msoleps v1.0.4 h1:WuESlvhX3gH2IHcd8UqyCuFY5yiq/GR/yqaSM/9/g00= github.com/richardlehane/msoleps v1.0.4/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= +github.com/rodaine/protogofakeit v0.1.1 h1:ZKouljuRM3A+TArppfBqnH8tGZHOwM/pjvtXe9DaXH8= +github.com/rodaine/protogofakeit v0.1.1/go.mod h1:pXn/AstBYMaSfc1/RqH3N82pBuxtWgejz1AlYpY1mI0= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -38,10 +56,17 @@ github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs= +github.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/subchen/go-xmldom v1.1.2 h1:7evI2YqfYYOnuj+PBwyaOZZYjl3iWq35P6KfBUw9jeU= github.com/subchen/go-xmldom v1.1.2/go.mod h1:6Pg/HuX5/T4Jlj0IPJF1sRxKVoI/rrKP6LIMge9d5/8= github.com/valyala/fastjson v1.6.7 h1:ZE4tRy0CIkh+qDc5McjatheGX2czdn8slQjomexVpBM= @@ -60,21 +85,29 @@ go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= -golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= -golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= +golang.org/x/exp v0.0.0-20250813145105-42675adae3e6 h1:SbTAbRFnd5kjQXbczszQ0hdk3ctwYf3qBNH9jIsGclE= +golang.org/x/exp v0.0.0-20250813145105-42675adae3e6/go.mod h1:4QTo5u+SEIbbKW1RacMZq1YEfOBqeXa19JeshGi+zc4= golang.org/x/image v0.18.0 h1:jGzIakQa/ZXI1I0Fxvaa9W7yP25TqT6cHIHn+6CqvSQ= golang.org/x/image v0.18.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= -golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +google.golang.org/genproto/googleapis/api v0.0.0-20250811230008-5f3141c8851a h1:DMCgtIAIQGZqJXMVzJF4MV8BlWoJh2ZuFiRdAleyr58= +google.golang.org/genproto/googleapis/api v0.0.0-20250811230008-5f3141c8851a/go.mod h1:y2yVLIE/CSMCPXaHnSKXxu1spLPnglFLegmgdY23uuE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250811230008-5f3141c8851a h1:tPE/Kp+x9dMSwUm/uM0JKK0IfdiJkwAbSMSeZBXXJXc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250811230008-5f3141c8851a/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/confgen/confgen.go b/internal/confgen/confgen.go index 41535a23..90633a58 100644 --- a/internal/confgen/confgen.go +++ b/internal/confgen/confgen.go @@ -215,16 +215,16 @@ func (gen *Generator) convert(prFiles *protoregistry.Files, fd protoreflect.File if sheetInfo.HasScatter() { if sheetInfo.HasMerger() { return xerrors.NewKV("option Scatter and Merger cannot be both set at one sheet", - xerrors.KeyModule, xerrors.ModuleConf, xerrors.KeyBookName, workbook.Name, xerrors.KeySheetName, specifiedSheetName) + xerrors.KeyModule, xerrors.ModuleConf, xerrors.KeyBookName, workbook.Name, xerrors.KeySheetName, sheetName) } err := gen.processScatter(imp, sheetInfo) if err != nil { - return xerrors.WrapKV(err, xerrors.KeyModule, xerrors.ModuleConf, xerrors.KeyBookName, workbook.Name, xerrors.KeySheetName, specifiedSheetName) + return xerrors.WrapKV(err, xerrors.KeyModule, xerrors.ModuleConf, xerrors.KeyBookName, workbook.Name, xerrors.KeySheetName, sheetName) } } else { err := gen.processMerger(imp, sheetInfo) if err != nil { - return xerrors.WrapKV(err, xerrors.KeyModule, xerrors.ModuleConf, xerrors.KeyBookName, workbook.Name, xerrors.KeySheetName, specifiedSheetName) + return xerrors.WrapKV(err, xerrors.KeyModule, xerrors.ModuleConf, xerrors.KeyBookName, workbook.Name, xerrors.KeySheetName, sheetName) } } diff --git a/internal/confgen/parser.go b/internal/confgen/parser.go index 88181be0..720b82e7 100644 --- a/internal/confgen/parser.go +++ b/internal/confgen/parser.go @@ -569,7 +569,7 @@ func (p *sheetParser) checkListKeyUnique(field *Field, keyData string) error { func (p *sheetParser) checkKeyUnique(md protoreflect.MessageDescriptor, fdOpts *tableaupb.FieldOptions, keyData string) error { fd := p.findFieldByName(md, fdOpts.Key) if fd == nil { - return xerrors.Newf(fmt.Sprintf("key field not found in proto definition: %s", fdOpts.Key)) + return xerrors.Newf("key field not found in proto definition: %s", fdOpts.Key) } keyField := p.parseFieldDescriptor(fd) defer keyField.release() @@ -631,7 +631,7 @@ func (p *sheetParser) checkListKeySequence(field *Field, reflectList protoreflec func (p *sheetParser) checkKeySequence(md protoreflect.MessageDescriptor, fdOpts *tableaupb.FieldOptions, keyData string, valueCount int64, merged bool) error { fd := p.findFieldByName(md, fdOpts.Key) if fd == nil { - return xerrors.Newf(fmt.Sprintf("key field not found in proto definition: %s", fdOpts.Key)) + return xerrors.Newf("key field not found in proto definition: %s", fdOpts.Key) } keyField := p.parseFieldDescriptor(fd) defer keyField.release() diff --git a/internal/confgen/util.go b/internal/confgen/util.go index 6641a5d1..43626d2f 100644 --- a/internal/confgen/util.go +++ b/internal/confgen/util.go @@ -6,6 +6,7 @@ import ( "strings" "sync" + "buf.build/go/protovalidate" "github.com/tableauio/tableau/format" "github.com/tableauio/tableau/internal/importer" "github.com/tableauio/tableau/internal/strcase" @@ -275,6 +276,9 @@ func parseOutputFormats(msg proto.Message, opt *options.ConfOutputOption) []form // storeMessage stores a message to one or multiple file formats. func storeMessage(msg proto.Message, name, locationName, outputDir string, opt *options.ConfOutputOption) error { + if err := protovalidate.Validate(msg); err != nil { + return err + } outputDir = filepath.Join(outputDir, opt.Subdir) formats := parseOutputFormats(msg, opt) for _, fmt := range formats { diff --git a/internal/confgen/util_test.go b/internal/confgen/util_test.go index 7ef6ce3c..159a0286 100644 --- a/internal/confgen/util_test.go +++ b/internal/confgen/util_test.go @@ -124,6 +124,70 @@ func Test_storeMessage(t *testing.T) { }, wantErr: false, }, + { + name: "protovalidate-field-pass", + args: args{ + msg: &unittestpb.ValidatedConf{ + Id: 0, + Name: "short", + }, + name: "ValidatedConf", + outputDir: "_out/", + opt: &options.ConfOutputOption{ + Formats: []format.Format{"json"}, + Pretty: true, + }, + }, + wantErr: false, + }, + { + name: "protovalidate-field-fail", + args: args{ + msg: &unittestpb.ValidatedConf{ + Id: 0, + Name: "this exceeds max_len of 10", + }, + name: "ValidatedConf", + outputDir: "_out/", + opt: &options.ConfOutputOption{ + Formats: []format.Format{"json"}, + Pretty: true, + }, + }, + wantErr: true, + }, + { + name: "protovalidate-message-pass", + args: args{ + msg: &unittestpb.ValidatedConf{ + Id: 0, + Name: "", + }, + name: "ValidatedConf", + outputDir: "_out/", + opt: &options.ConfOutputOption{ + Formats: []format.Format{"json"}, + Pretty: true, + }, + }, + wantErr: false, + }, + { + name: "protovalidate-message-fail", + args: args{ + msg: &unittestpb.ValidatedConf{ + Id: 1, + Name: "", + }, + name: "ValidatedConf", + outputDir: "_out/", + opt: &options.ConfOutputOption{ + Formats: []format.Format{"json"}, + Pretty: true, + }, + }, + wantErr: true, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/internal/importer/book/sheet.go b/internal/importer/book/sheet.go index d78de8b3..4f226f9f 100644 --- a/internal/importer/book/sheet.go +++ b/internal/importer/book/sheet.go @@ -163,6 +163,7 @@ func (s *Sheet) ToWorkseet() *internalpb.Worksheet { Patch: s.Meta.Patch, WithParentDir: s.Meta.WithParentDir, ScatterWithoutBookName: s.Meta.ScatterWithoutBookName, + Validate: s.Meta.Validate, // Loader options: OrderedMap: s.Meta.OrderedMap, Index: parseIndexes(s.Meta.Index), diff --git a/internal/protogen/exporter.go b/internal/protogen/exporter.go index 49fc90a5..09841081 100644 --- a/internal/protogen/exporter.go +++ b/internal/protogen/exporter.go @@ -5,6 +5,7 @@ import ( "regexp" "strings" + "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" "github.com/emirpasic/gods/sets/treeset" "github.com/rogpeppe/go-internal/lockedfile" "github.com/tableauio/tableau/internal/printer" @@ -17,6 +18,7 @@ import ( "github.com/tableauio/tableau/proto/tableaupb/internalpb" "github.com/tableauio/tableau/xerrors" "google.golang.org/protobuf/encoding/prototext" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" ) @@ -363,8 +365,18 @@ func (x *sheetExporter) exportMessager() error { if x.be.messagerPatternRegexp != nil && !x.be.messagerPatternRegexp.MatchString(x.ws.Name) { return xerrors.Newf("messager %s does not match pattern %q", x.ws.Name, x.be.messagerPatternRegexp.String()) } + msgValidate := x.ws.GetOptions().GetValidate() + if msgValidate != "" { + x.ws.Options.Validate = "" + } x.p.P("message ", x.ws.Name, " {") x.p.P(" option (tableau.worksheet) = {", marshalToText(x.ws.Options), "};") + if msgValidate != "" { + x.Imports[bufValidateProtoPath] = true + rules := &validate.MessageRules{} + unmarshalFromText(rules, msgValidate) + x.p.P(" option (buf.validate.message) = {", marshalToText(rules), "};") + } x.p.P("") md := x.findMDFromGeneratedProtos(x.ws.Name) @@ -398,6 +410,15 @@ func (x *sheetExporter) exportField(depth int, field *internalpb.Field, prefix s if field.Note != "" { note = " // " + field.Note } + if field.Options.GetProp().GetFieldValidate() != "" { + x.Imports[bufValidateProtoPath] = true + } + // Save message_validate before genFieldOptionsString clears it + msgValidate := field.Options.GetProp().GetMessageValidate() + if msgValidate != "" { + x.Imports[bufValidateProtoPath] = true + field.Options.Prop.MessageValidate = "" + } x.p.P(printer.Indent(depth), label, field.FullType, " ", field.Name, " = ", field.Number, " ", genFieldOptionsString(field.Options), ";", note) var oldMD protoreflect.MessageDescriptor @@ -460,6 +481,13 @@ func (x *sheetExporter) exportField(depth int, field *internalpb.Field, prefix s // x.g.P("") x.p.P(printer.Indent(depth), "message ", typeName, " {") + // Handle message_validate for nested message + if msgValidate != "" { + rules := &validate.MessageRules{} + unmarshalFromText(rules, msgValidate) + x.p.P(printer.Indent(depth+1), "option (buf.validate.message) = {", marshalToText(rules), "};") + } + x.assignFieldNumbers(field.Fields, oldMD) for _, subField := range field.Fields { var nestedOldFD protoreflect.FieldDescriptor @@ -477,10 +505,13 @@ func (x *sheetExporter) exportField(depth int, field *internalpb.Field, prefix s func genFieldOptionsString(opts *tableaupb.FieldOptions) string { jsonName := "" + fieldValidate := "" // remember and then clear protobuf built-in options if opts.Prop != nil { jsonName = opts.Prop.JsonName opts.Prop.JsonName = "" + fieldValidate = opts.Prop.FieldValidate + opts.Prop.FieldValidate = "" // set nil if field prop is empty if IsEmptyFieldProp(opts.Prop) { @@ -493,11 +524,16 @@ func genFieldOptionsString(opts *tableaupb.FieldOptions) string { if jsonName != "" { fieldOpts += `, json_name="` + jsonName + `"` } + if fieldValidate != "" { + rules := &validate.FieldRules{} + unmarshalFromText(rules, fieldValidate) + fieldOpts += `, (buf.validate.field) = {` + marshalToText(rules) + `}` + } fieldOpts += "]" return fieldOpts } -func marshalToText(m protoreflect.ProtoMessage) string { +func marshalToText(m proto.Message) string { // text := proto.CompactTextString(field.Options) bin, err := prototext.Marshal(m) if err != nil { @@ -509,6 +545,13 @@ func marshalToText(m protoreflect.ProtoMessage) string { return text } +func unmarshalFromText(m proto.Message, s string) { + err := prototext.Unmarshal([]byte(s), m) + if err != nil { + panic(err) + } +} + func isSameFieldMessageType(left, right *internalpb.Field) bool { if left.GetType() == right.GetType() && left.GetFullType() == right.GetFullType() && diff --git a/internal/protogen/exporter_test.go b/internal/protogen/exporter_test.go index d2d2801d..341b352f 100644 --- a/internal/protogen/exporter_test.go +++ b/internal/protogen/exporter_test.go @@ -15,7 +15,6 @@ import ( "github.com/tableauio/tableau/proto/tableaupb/internalpb" _ "github.com/tableauio/tableau/proto/tableaupb/unittestpb" "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/reflect/protoregistry" ) @@ -199,7 +198,7 @@ func Test_isSameFieldMessageType(t *testing.T) { func Test_marshalToText(t *testing.T) { type args struct { - m protoreflect.ProtoMessage + m proto.Message } tests := []struct { name string @@ -688,6 +687,91 @@ func Test_sheetExporter_exportMessager(t *testing.T) { }, wantErr: true, }, + { + name: "export-messager-with-validate", + x: &sheetExporter{ + ws: &internalpb.Worksheet{ + Name: "ItemConf", + Options: &tableaupb.WorksheetOptions{ + Name: "ItemConf", + Validate: `cel:{id:"item.id" message:"id must be positive" expression:"this.id > 0"}`, + }, + Fields: []*internalpb.Field{ + {Name: "id", Type: "uint32", FullType: "uint32", Options: &tableaupb.FieldOptions{Name: "ID"}}, + }, + }, + p: printer.New(), + be: &bookExporter{ + gen: &Generator{ + OutputOpt: &options.ProtoOutputOption{}, + }, + messagerPatternRegexp: regexp.MustCompile(`Conf$`), + }, + typeInfos: &xproto.TypeInfos{}, + nestedMessages: make(map[string]*internalpb.Field), + Imports: make(map[string]bool), + }, + want: `message ItemConf { + option (tableau.worksheet) = {name:"ItemConf"}; + option (buf.validate.message) = {cel:{id:"item.id" message:"id must be positive" expression:"this.id > 0"}}; + + uint32 id = 1 [(tableau.field) = {name:"ID"}]; +} + +`, + wantErr: false, + }, + { + name: "export-messager-with-message-validate-on-nested-message", + x: &sheetExporter{ + ws: &internalpb.Worksheet{ + Name: "ItemConf", + Options: &tableaupb.WorksheetOptions{ + Name: "ItemConf", + }, + Fields: []*internalpb.Field{ + { + Name: "item_map", Type: "map", FullType: "map", + MapEntry: &internalpb.Field_MapEntry{KeyType: "uint32", ValueType: "Item", ValueFullType: "Item"}, + Options: &tableaupb.FieldOptions{ + Key: "ID", + Layout: tableaupb.Layout_LAYOUT_VERTICAL, + Prop: &tableaupb.FieldProp{ + MessageValidate: `cel:{id:"item.id_name" message:"id must be positive when name is non-empty" expression:"this.id == 0u || this.name != ''"}`, + }, + }, + Fields: []*internalpb.Field{ + {Name: "id", Type: "uint32", FullType: "uint32", Options: &tableaupb.FieldOptions{Name: "ID"}}, + {Name: "name", Type: "string", FullType: "string", Options: &tableaupb.FieldOptions{Name: "Name"}}, + }, + }, + }, + }, + p: printer.New(), + be: &bookExporter{ + gen: &Generator{ + OutputOpt: &options.ProtoOutputOption{}, + }, + messagerPatternRegexp: regexp.MustCompile(`Conf$`), + }, + typeInfos: &xproto.TypeInfos{}, + nestedMessages: make(map[string]*internalpb.Field), + Imports: make(map[string]bool), + }, + want: `message ItemConf { + option (tableau.worksheet) = {name:"ItemConf"}; + + map item_map = 1 [(tableau.field) = {key:"ID" layout:LAYOUT_VERTICAL}]; + message Item { + option (buf.validate.message) = {cel:{id:"item.id_name" message:"id must be positive when name is non-empty" expression:"this.id == 0u || this.name != ''"}}; + uint32 id = 1 [(tableau.field) = {name:"ID"}]; + string name = 2 [(tableau.field) = {name:"Name"}]; + } +} + +`, + wantErr: false, + }, { name: "field-number-compatibility-delete-fields-and-add-new-fields", x: &sheetExporter{ diff --git a/internal/protogen/field_prop.go b/internal/protogen/field_prop.go index 5481255c..ce79e4ec 100644 --- a/internal/protogen/field_prop.go +++ b/internal/protogen/field_prop.go @@ -17,14 +17,15 @@ func ExtractMapFieldProp(prop *tableaupb.FieldProp) *tableaupb.FieldProp { return nil } p := &tableaupb.FieldProp{ - JsonName: prop.JsonName, - Fixed: prop.Fixed, - Size: prop.Size, - Present: prop.Present, - Optional: prop.Optional, - Patch: prop.Patch, - Sep: prop.Sep, - Subsep: prop.Subsep, + JsonName: prop.JsonName, + Fixed: prop.Fixed, + Size: prop.Size, + Present: prop.Present, + Optional: prop.Optional, + Patch: prop.Patch, + Sep: prop.Sep, + Subsep: prop.Subsep, + MessageValidate: prop.MessageValidate, } if IsEmptyFieldProp(p) { return nil @@ -38,16 +39,17 @@ func ExtractListFieldProp(prop *tableaupb.FieldProp, isScalarList bool) *tableau return nil } p := &tableaupb.FieldProp{ - JsonName: prop.JsonName, - Fixed: prop.Fixed, - Size: prop.Size, - Present: prop.Present, - Optional: prop.Optional, - Patch: prop.Patch, - Form: prop.Form, // for vertical incell union list - Sep: prop.Sep, - Subsep: prop.Subsep, - Cross: prop.Cross, + JsonName: prop.JsonName, + Fixed: prop.Fixed, + Size: prop.Size, + Present: prop.Present, + Optional: prop.Optional, + Patch: prop.Patch, + Form: prop.Form, // for vertical incell union list + Sep: prop.Sep, + Subsep: prop.Subsep, + Cross: prop.Cross, + MessageValidate: prop.MessageValidate, } if isScalarList { p.Range = prop.Range @@ -66,13 +68,14 @@ func ExtractStructFieldProp(prop *tableaupb.FieldProp) *tableaupb.FieldProp { return nil } p := &tableaupb.FieldProp{ - JsonName: prop.JsonName, - Form: prop.Form, - Present: prop.Present, - Optional: prop.Optional, - Patch: prop.Patch, - Sep: prop.Sep, - Subsep: prop.Subsep, + JsonName: prop.JsonName, + Form: prop.Form, + Present: prop.Present, + Optional: prop.Optional, + Patch: prop.Patch, + Sep: prop.Sep, + Subsep: prop.Subsep, + MessageValidate: prop.MessageValidate, } if IsEmptyFieldProp(p) { return nil @@ -89,17 +92,18 @@ func ExtractScalarFieldProp(prop *tableaupb.FieldProp) *tableaupb.FieldProp { return nil } p := &tableaupb.FieldProp{ - JsonName: prop.JsonName, - Unique: prop.Unique, - Sequence: prop.Sequence, - Range: prop.Range, - Refer: prop.Refer, - Default: prop.Default, - Present: prop.Present, - Optional: prop.Optional, - Patch: prop.Patch, - Pattern: prop.Pattern, - Order: prop.Order, + JsonName: prop.JsonName, + Unique: prop.Unique, + Sequence: prop.Sequence, + Range: prop.Range, + Refer: prop.Refer, + Default: prop.Default, + Present: prop.Present, + Optional: prop.Optional, + Patch: prop.Patch, + Pattern: prop.Pattern, + Order: prop.Order, + FieldValidate: prop.FieldValidate, } if IsEmptyFieldProp(p) { return nil diff --git a/internal/protogen/parser.go b/internal/protogen/parser.go index 768eaf91..f2500af6 100644 --- a/internal/protogen/parser.go +++ b/internal/protogen/parser.go @@ -17,7 +17,8 @@ import ( ) const ( - tableauProtoPath = "tableau/protobuf/tableau.proto" + tableauProtoPath = "tableau/protobuf/tableau.proto" + bufValidateProtoPath = "buf/validate/validate.proto" ) const ( diff --git a/internal/x/xproto/protoc/compiler.go b/internal/x/xproto/protoc/compiler.go index b0b654d3..8b373c75 100644 --- a/internal/x/xproto/protoc/compiler.go +++ b/internal/x/xproto/protoc/compiler.go @@ -20,6 +20,7 @@ import ( "google.golang.org/protobuf/reflect/protoregistry" "google.golang.org/protobuf/types/descriptorpb" + _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" _ "github.com/tableauio/tableau/proto/tableaupb" ) diff --git a/proto/tableau/protobuf/internal/metabook.proto b/proto/tableau/protobuf/internal/metabook.proto index 0a1fa0ae..e5e39e73 100644 --- a/proto/tableau/protobuf/internal/metabook.proto +++ b/proto/tableau/protobuf/internal/metabook.proto @@ -80,6 +80,11 @@ message Metasheet { // This concept is much like it is in k8s, see // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/. map labels = 24 [(tableau.field) = {name:"Labels" layout:LAYOUT_INCELL prop:{optional:true}}]; + // Protovalidate message-level constraints. The value is a text-format + // representation of buf.validate.MessageConstraints. + // + // See https://github.com/bufbuild/protovalidate. + string validate = 25 [(tableau.field) = {name:"Validate" prop:{optional:true}}]; ////////// Loader related options below ////////// // Generate ordered map accessers diff --git a/proto/tableau/protobuf/tableau.proto b/proto/tableau/protobuf/tableau.proto index 2975234c..18d88cc3 100644 --- a/proto/tableau/protobuf/tableau.proto +++ b/proto/tableau/protobuf/tableau.proto @@ -208,6 +208,11 @@ message WorksheetOptions { bool with_parent_dir = 22; // confgen(scatter): export JSON/Bin/Text filenames without book name prefix. bool scatter_without_book_name = 23; + // Protovalidate message-level constraints. The value is a text-format + // representation of buf.validate.MessageConstraints. + // + // See https://github.com/bufbuild/protovalidate. + string validate = 24; ////////// Loader related options below ////////// // Generate OrderedMap accessers or not. @@ -359,6 +364,17 @@ message FieldProp { string pattern = 16; // Ensure this field's value is in order. Order order = 17; + // Protovalidate field-level rules. The value is a text-format + // representation of buf.validate.FieldConstraints, e.g.: "string:{max_len:10}". + // + // See https://github.com/bufbuild/protovalidate. + string field_validate = 18; + // Protovalidate message-level constraints for the nested message + // corresponding to this field. The value is a text-format + // representation of buf.validate.MessageConstraints. + // + // See https://github.com/bufbuild/protovalidate. + string message_validate = 19; } // Layout of list and map. diff --git a/proto/tableau/protobuf/unittest/unittest.proto b/proto/tableau/protobuf/unittest/unittest.proto index a39e018d..35a5887c 100644 --- a/proto/tableau/protobuf/unittest/unittest.proto +++ b/proto/tableau/protobuf/unittest/unittest.proto @@ -7,6 +7,7 @@ package unittest; option go_package = "github.com/tableauio/tableau/proto/tableaupb/unittestpb"; option (tableau.workbook) = {name: "unittest/Unittest#*.csv"}; +import "buf/validate/validate.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; import "tableau/protobuf/tableau.proto"; @@ -310,6 +311,20 @@ message Transpose { } } +message ValidatedConf { + option (tableau.worksheet) = {name:"ValidatedConf" namerow:1 typerow:2 noterow:3 datarow:4}; + option (buf.validate.message) = { + cel: { + id: "validated_conf.id_name" + message: "id must be positive when name is non-empty" + expression: "this.id == 0u || this.name != ''" + } + }; + + uint32 id = 1 [(tableau.field) = {name:"ID"}]; + string name = 2 [(tableau.field) = {name:"Name"}, (buf.validate.field) = {string:{max_len:10}}]; +} + message FieldPresentMap { option (tableau.worksheet) = {name:"FieldPresentMap"}; diff --git a/proto/tableaupb/internalpb/metabook.pb.go b/proto/tableaupb/internalpb/metabook.pb.go index 016256f1..f3da8459 100644 --- a/proto/tableaupb/internalpb/metabook.pb.go +++ b/proto/tableaupb/internalpb/metabook.pb.go @@ -141,6 +141,11 @@ type Metasheet struct { // This concept is much like it is in k8s, see // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/. Labels map[string]string `protobuf:"bytes,24,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Protovalidate message-level constraints. The value is a text-format + // representation of buf.validate.MessageConstraints. + // + // See https://github.com/bufbuild/protovalidate. + Validate string `protobuf:"bytes,25,opt,name=validate,proto3" json:"validate,omitempty"` // //////// Loader related options below ////////// // Generate ordered map accessers OrderedMap bool `protobuf:"varint,50,opt,name=ordered_map,json=orderedMap,proto3" json:"ordered_map,omitempty"` @@ -378,6 +383,13 @@ func (x *Metasheet) GetLabels() map[string]string { return nil } +func (x *Metasheet) GetValidate() string { + if x != nil { + return x.Validate + } + return "" +} + func (x *Metasheet) GetOrderedMap() bool { if x != nil { return x.OrderedMap @@ -778,7 +790,7 @@ var file_tableau_protobuf_internal_metabook_proto_rawDesc = []byte{ 0x13, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x73, 0x68, 0x65, 0x65, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x12, 0x82, 0xb5, 0x18, 0x0e, 0x0a, 0x08, 0x40, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x41, 0x55, 0x10, - 0x01, 0x28, 0x02, 0x22, 0xc3, 0x0c, 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x73, 0x68, 0x65, 0x65, + 0x01, 0x28, 0x02, 0x22, 0xf3, 0x0c, 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x73, 0x68, 0x65, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x05, 0x73, 0x68, 0x65, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, 0x53, 0x68, 0x65, 0x65, 0x74, 0x52, 0x05, 0x73, 0x68, 0x65, 0x65, 0x74, 0x12, 0x25, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, @@ -855,7 +867,10 @@ var file_tableau_protobuf_internal_metabook_proto_rawDesc = []byte{ 0x4d, 0x65, 0x74, 0x61, 0x73, 0x68, 0x65, 0x65, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x12, 0x82, 0xb5, 0x18, 0x0e, 0x0a, 0x06, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x20, 0x03, 0x7a, 0x02, 0x58, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x12, 0x35, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x70, + 0x73, 0x12, 0x2e, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x18, 0x19, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x12, 0x82, 0xb5, 0x18, 0x0e, 0x0a, 0x08, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x7a, 0x02, 0x58, 0x01, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x32, 0x20, 0x01, 0x28, 0x08, 0x42, 0x14, 0x82, 0xb5, 0x18, 0x10, 0x0a, 0x0a, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x4d, 0x61, 0x70, 0x7a, 0x02, 0x58, 0x01, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x4d, 0x61, 0x70, 0x12, 0x25, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, diff --git a/proto/tableaupb/tableau.pb.go b/proto/tableaupb/tableau.pb.go index 3fe2e1c2..71e834ae 100644 --- a/proto/tableaupb/tableau.pb.go +++ b/proto/tableaupb/tableau.pb.go @@ -919,6 +919,11 @@ type WorksheetOptions struct { WithParentDir bool `protobuf:"varint,22,opt,name=with_parent_dir,json=withParentDir,proto3" json:"with_parent_dir,omitempty"` // confgen(scatter): export JSON/Bin/Text filenames without book name prefix. ScatterWithoutBookName bool `protobuf:"varint,23,opt,name=scatter_without_book_name,json=scatterWithoutBookName,proto3" json:"scatter_without_book_name,omitempty"` + // Protovalidate message-level constraints. The value is a text-format + // representation of buf.validate.MessageConstraints. + // + // See https://github.com/bufbuild/protovalidate. + Validate string `protobuf:"bytes,24,opt,name=validate,proto3" json:"validate,omitempty"` // //////// Loader related options below ////////// // Generate OrderedMap accessers or not. OrderedMap bool `protobuf:"varint,50,opt,name=ordered_map,json=orderedMap,proto3" json:"ordered_map,omitempty"` @@ -1156,6 +1161,13 @@ func (x *WorksheetOptions) GetScatterWithoutBookName() bool { return false } +func (x *WorksheetOptions) GetValidate() string { + if x != nil { + return x.Validate + } + return "" +} + func (x *WorksheetOptions) GetOrderedMap() bool { if x != nil { return x.OrderedMap @@ -1367,6 +1379,17 @@ type FieldProp struct { Pattern string `protobuf:"bytes,16,opt,name=pattern,proto3" json:"pattern,omitempty"` // Ensure this field's value is in order. Order Order `protobuf:"varint,17,opt,name=order,proto3,enum=tableau.Order" json:"order,omitempty"` + // Protovalidate field-level rules. The value is a text-format + // representation of buf.validate.FieldConstraints, e.g.: "string:{max_len:10}". + // + // See https://github.com/bufbuild/protovalidate. + FieldValidate string `protobuf:"bytes,18,opt,name=field_validate,json=fieldValidate,proto3" json:"field_validate,omitempty"` + // Protovalidate message-level constraints for the nested message + // corresponding to this field. The value is a text-format + // representation of buf.validate.MessageConstraints. + // + // See https://github.com/bufbuild/protovalidate. + MessageValidate string `protobuf:"bytes,19,opt,name=message_validate,json=messageValidate,proto3" json:"message_validate,omitempty"` } func (x *FieldProp) Reset() { @@ -1520,6 +1543,20 @@ func (x *FieldProp) GetOrder() Order { return Order_ORDER_NONE } +func (x *FieldProp) GetFieldValidate() string { + if x != nil { + return x.FieldValidate + } + return "" +} + +func (x *FieldProp) GetMessageValidate() string { + if x != nil { + return x.MessageValidate + } + return "" +} + var file_tableau_protobuf_tableau_proto_extTypes = []protoimpl.ExtensionInfo{ { ExtendedType: (*descriptorpb.FileOptions)(nil), @@ -1672,7 +1709,7 @@ var file_tableau_protobuf_tableau_proto_rawDesc = []byte{ 0x6f, 0x74, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x65, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, - 0x70, 0x22, 0x87, 0x08, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x68, 0x65, 0x65, 0x74, 0x4f, + 0x70, 0x22, 0xa3, 0x08, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x68, 0x65, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x61, 0x6d, 0x65, 0x72, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6e, 0x61, 0x6d, @@ -1718,154 +1755,161 @@ var file_tableau_protobuf_tableau_proto_rawDesc = []byte{ 0x61, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x42, 0x6f, 0x6f, - 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, - 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x32, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x65, 0x64, 0x4d, 0x61, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x33, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x4d, 0x0a, 0x0c, - 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x34, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x57, 0x6f, 0x72, - 0x6b, 0x73, 0x68, 0x65, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x61, - 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, - 0x6c, 0x61, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x35, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x4c, - 0x61, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbc, 0x01, 0x0a, 0x0c, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x6f, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x06, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, - 0x2e, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x06, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, - 0x21, 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x52, 0x04, 0x73, 0x70, - 0x61, 0x6e, 0x12, 0x26, 0x0a, 0x04, 0x70, 0x72, 0x6f, 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x50, 0x72, 0x6f, 0x70, 0x52, 0x04, 0x70, 0x72, 0x6f, 0x70, 0x22, 0xed, 0x03, 0x0a, 0x09, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1b, - 0x0a, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, - 0x52, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x66, 0x69, 0x78, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x69, 0x78, - 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x21, 0x0a, 0x04, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x46, - 0x6f, 0x72, 0x6d, 0x52, 0x04, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x73, 0x6f, - 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x73, - 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, - 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x24, 0x0a, 0x05, - 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x70, 0x61, 0x74, - 0x63, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x73, 0x65, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x70, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x70, 0x12, 0x14, 0x0a, 0x05, - 0x63, 0x72, 0x6f, 0x73, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x72, 0x6f, - 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x24, 0x0a, 0x05, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x0b, 0x0a, - 0x09, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x2a, 0x5b, 0x0a, 0x06, 0x4c, 0x61, - 0x79, 0x6f, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x44, - 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x41, 0x59, 0x4f, - 0x55, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x15, 0x0a, - 0x11, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x4f, 0x4e, 0x54, - 0x41, 0x4c, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x49, - 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x10, 0x03, 0x2a, 0x42, 0x0a, 0x04, 0x53, 0x70, 0x61, 0x6e, 0x12, - 0x10, 0x0a, 0x0c, 0x53, 0x50, 0x41, 0x4e, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, - 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x50, 0x41, 0x4e, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, - 0x43, 0x45, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x50, 0x41, 0x4e, 0x5f, 0x49, - 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x43, 0x45, 0x4c, 0x4c, 0x10, 0x02, 0x2a, 0xcb, 0x01, 0x0a, 0x04, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x45, 0x46, - 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, - 0x4e, 0x55, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x55, 0x4c, - 0x54, 0x49, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x52, - 0x55, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, - 0x55, 0x4c, 0x54, 0x49, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, - 0x4e, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x4d, - 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, - 0x55, 0x4c, 0x54, 0x49, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, - 0x45, 0x5f, 0x43, 0x53, 0x56, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x4f, 0x44, 0x45, 0x5f, - 0x55, 0x45, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x0b, 0x2a, 0x36, 0x0a, 0x04, 0x46, 0x6f, 0x72, - 0x6d, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, - 0x54, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x54, 0x45, 0x58, 0x54, - 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, - 0x02, 0x2a, 0x3b, 0x0a, 0x05, 0x50, 0x61, 0x74, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x41, - 0x54, 0x43, 0x48, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x41, - 0x54, 0x43, 0x48, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x01, 0x12, 0x0f, 0x0a, - 0x0b, 0x50, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x45, 0x52, 0x47, 0x45, 0x10, 0x02, 0x2a, 0x67, - 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x52, 0x44, 0x45, 0x52, - 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x52, 0x44, 0x45, 0x52, - 0x5f, 0x41, 0x53, 0x43, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, - 0x44, 0x45, 0x53, 0x43, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, - 0x53, 0x54, 0x52, 0x49, 0x43, 0x54, 0x4c, 0x59, 0x5f, 0x41, 0x53, 0x43, 0x10, 0x03, 0x12, 0x17, - 0x0a, 0x13, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x43, 0x54, 0x4c, 0x59, - 0x5f, 0x44, 0x45, 0x53, 0x43, 0x10, 0x04, 0x3a, 0x54, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x62, - 0x6f, 0x6f, 0x6b, 0x12, 0x1c, 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, 0x18, 0xd0, 0x86, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x61, 0x75, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x62, 0x6f, 0x6f, 0x6b, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x62, 0x6f, 0x6f, 0x6b, 0x3a, 0x5a, 0x0a, - 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x68, 0x65, 0x65, 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd0, 0x86, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x57, 0x6f, - 0x72, 0x6b, 0x73, 0x68, 0x65, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x09, - 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x68, 0x65, 0x65, 0x74, 0x3a, 0x51, 0x0a, 0x06, 0x73, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x70, + 0x18, 0x32, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x4d, + 0x61, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x33, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x4d, 0x0a, 0x0c, 0x6c, 0x61, 0x6e, 0x67, + 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x34, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, + 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x68, 0x65, + 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6c, 0x61, 0x6e, 0x67, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x35, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0x39, 0x0a, 0x0b, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x4c, 0x61, 0x6e, 0x67, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbc, 0x01, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x27, 0x0a, 0x06, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x4c, 0x61, 0x79, + 0x6f, 0x75, 0x74, 0x52, 0x06, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x21, 0x0a, 0x04, 0x73, + 0x70, 0x61, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x61, 0x75, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x12, 0x26, + 0x0a, 0x04, 0x70, 0x72, 0x6f, 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x6f, 0x70, + 0x52, 0x04, 0x70, 0x72, 0x6f, 0x70, 0x22, 0xbf, 0x04, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x50, 0x72, 0x6f, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x75, 0x6e, + 0x69, 0x71, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x75, 0x6e, + 0x69, 0x71, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x66, 0x65, 0x72, 0x12, 0x1f, 0x0a, + 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x48, + 0x01, 0x52, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x18, + 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x78, 0x65, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x69, 0x78, 0x65, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x12, 0x21, 0x0a, 0x04, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x0d, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x52, + 0x04, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x24, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x63, + 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, + 0x75, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x12, 0x10, + 0x0a, 0x03, 0x73, 0x65, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x65, 0x70, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x72, 0x6f, 0x73, + 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, + 0x75, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x25, + 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, + 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x2a, 0x5b, 0x0a, 0x06, 0x4c, 0x61, 0x79, 0x6f, + 0x75, 0x74, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x45, 0x46, + 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, + 0x5f, 0x56, 0x45, 0x52, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x4c, + 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x4f, 0x4e, 0x54, 0x41, 0x4c, + 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x49, 0x4e, 0x43, + 0x45, 0x4c, 0x4c, 0x10, 0x03, 0x2a, 0x42, 0x0a, 0x04, 0x53, 0x70, 0x61, 0x6e, 0x12, 0x10, 0x0a, + 0x0c, 0x53, 0x50, 0x41, 0x4e, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, + 0x13, 0x0a, 0x0f, 0x53, 0x50, 0x41, 0x4e, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x45, + 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x50, 0x41, 0x4e, 0x5f, 0x49, 0x4e, 0x4e, + 0x45, 0x52, 0x5f, 0x43, 0x45, 0x4c, 0x4c, 0x10, 0x02, 0x2a, 0xcb, 0x01, 0x0a, 0x04, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, + 0x4c, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x4e, 0x55, + 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, + 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x55, 0x43, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x55, 0x4c, + 0x54, 0x49, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x49, + 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x4f, 0x44, + 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x55, 0x4c, + 0x54, 0x49, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x45, 0x5f, + 0x43, 0x53, 0x56, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x45, + 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x0b, 0x2a, 0x36, 0x0a, 0x04, 0x46, 0x6f, 0x72, 0x6d, 0x12, + 0x10, 0x0a, 0x0c, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, + 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x54, 0x45, 0x58, 0x54, 0x10, 0x01, + 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x02, 0x2a, + 0x3b, 0x0a, 0x05, 0x50, 0x61, 0x74, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x41, 0x54, 0x43, + 0x48, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x41, 0x54, 0x43, + 0x48, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x50, + 0x41, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x45, 0x52, 0x47, 0x45, 0x10, 0x02, 0x2a, 0x67, 0x0a, 0x05, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x4e, + 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x41, + 0x53, 0x43, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x44, 0x45, + 0x53, 0x43, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x53, 0x54, + 0x52, 0x49, 0x43, 0x54, 0x4c, 0x59, 0x5f, 0x41, 0x53, 0x43, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, + 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x43, 0x54, 0x4c, 0x59, 0x5f, 0x44, + 0x45, 0x53, 0x43, 0x10, 0x04, 0x3a, 0x54, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x62, 0x6f, 0x6f, + 0x6b, 0x12, 0x1c, 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, 0x18, + 0xd0, 0x86, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, + 0x75, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x62, 0x6f, 0x6f, 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x62, 0x6f, 0x6f, 0x6b, 0x3a, 0x5a, 0x0a, 0x09, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x68, 0x65, 0x65, 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd0, 0x86, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x57, 0x6f, 0x72, 0x6b, + 0x73, 0x68, 0x65, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x09, 0x77, 0x6f, + 0x72, 0x6b, 0x73, 0x68, 0x65, 0x65, 0x74, 0x3a, 0x51, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xd1, 0x86, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x3a, 0x4e, 0x0a, 0x05, 0x75, 0x6e, + 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd1, 0x86, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x3a, 0x4e, 0x0a, 0x05, - 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd2, 0x86, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x3a, 0x4c, 0x0a, 0x05, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 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, 0x18, 0xd2, 0x86, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x3a, 0x4c, 0x0a, 0x05, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x12, 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, 0x18, 0xd0, 0x86, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x3a, 0x4a, 0x0a, 0x05, 0x65, 0x74, 0x79, 0x70, + 0x65, 0x12, 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, 0x18, + 0xd0, 0x86, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, + 0x75, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x65, + 0x74, 0x79, 0x70, 0x65, 0x3a, 0x56, 0x0a, 0x06, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 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, 0x18, 0xd0, 0x86, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x61, 0x75, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x06, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x4f, 0x0a, 0x05, + 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 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, 0x18, 0xd0, 0x86, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x3a, 0x4a, 0x0a, 0x05, 0x65, 0x74, - 0x79, 0x70, 0x65, 0x12, 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, 0x18, 0xd0, 0x86, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x61, 0x75, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x05, 0x65, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x56, 0x0a, 0x06, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x12, 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, 0x18, 0xd0, 0x86, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x06, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x4f, - 0x0a, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 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, 0x18, 0xd0, 0x86, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x88, 0x01, 0x01, 0x42, - 0x75, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x0c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x69, 0x6f, 0x2f, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x61, 0x75, 0x70, 0x62, 0xa2, 0x02, 0x03, 0x54, 0x50, 0x42, 0xaa, 0x02, 0x18, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x88, 0x01, 0x01, 0x42, 0x75, 0x0a, + 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x0c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x69, 0x6f, 0x2f, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x61, 0x75, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, + 0x75, 0x70, 0x62, 0xa2, 0x02, 0x03, 0x54, 0x50, 0x42, 0xaa, 0x02, 0x18, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x61, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x61, 0x75, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto/tableaupb/unittestpb/unittest.pb.go b/proto/tableaupb/unittestpb/unittest.pb.go index bcfba59a..8ee7323a 100644 --- a/proto/tableaupb/unittestpb/unittest.pb.go +++ b/proto/tableaupb/unittestpb/unittest.pb.go @@ -9,6 +9,7 @@ package unittestpb import ( + _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" _ "github.com/tableauio/tableau/proto/tableaupb" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -1260,6 +1261,61 @@ func (x *Transpose) GetHeroMap() map[int32]*Transpose_Hero { return nil } +type ValidatedConf struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *ValidatedConf) Reset() { + *x = ValidatedConf{} + if protoimpl.UnsafeEnabled { + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValidatedConf) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValidatedConf) ProtoMessage() {} + +func (x *ValidatedConf) ProtoReflect() protoreflect.Message { + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[22] + 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 ValidatedConf.ProtoReflect.Descriptor instead. +func (*ValidatedConf) Descriptor() ([]byte, []int) { + return file_tableau_protobuf_unittest_unittest_proto_rawDescGZIP(), []int{22} +} + +func (x *ValidatedConf) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ValidatedConf) GetName() string { + if x != nil { + return x.Name + } + return "" +} + type FieldPresentMap struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1271,7 +1327,7 @@ type FieldPresentMap struct { func (x *FieldPresentMap) Reset() { *x = FieldPresentMap{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[22] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1284,7 +1340,7 @@ func (x *FieldPresentMap) String() string { func (*FieldPresentMap) ProtoMessage() {} func (x *FieldPresentMap) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[22] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1297,7 +1353,7 @@ func (x *FieldPresentMap) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldPresentMap.ProtoReflect.Descriptor instead. func (*FieldPresentMap) Descriptor() ([]byte, []int) { - return file_tableau_protobuf_unittest_unittest_proto_rawDescGZIP(), []int{22} + return file_tableau_protobuf_unittest_unittest_proto_rawDescGZIP(), []int{23} } func (x *FieldPresentMap) GetPlayerMap() map[int32]*FieldPresentMap_Player { @@ -1319,7 +1375,7 @@ type IncellMap_Fruit struct { func (x *IncellMap_Fruit) Reset() { *x = IncellMap_Fruit{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[25] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1332,7 +1388,7 @@ func (x *IncellMap_Fruit) String() string { func (*IncellMap_Fruit) ProtoMessage() {} func (x *IncellMap_Fruit) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[25] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1374,7 +1430,7 @@ type IncellMap_Item struct { func (x *IncellMap_Item) Reset() { *x = IncellMap_Item{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[28] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1387,7 +1443,7 @@ func (x *IncellMap_Item) String() string { func (*IncellMap_Item) ProtoMessage() {} func (x *IncellMap_Item) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[28] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1429,7 +1485,7 @@ type MallConf_Shop struct { func (x *MallConf_Shop) Reset() { *x = MallConf_Shop{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[31] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1442,7 +1498,7 @@ func (x *MallConf_Shop) String() string { func (*MallConf_Shop) ProtoMessage() {} func (x *MallConf_Shop) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[31] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1484,7 +1540,7 @@ type MallConf_Shop_Goods struct { func (x *MallConf_Shop_Goods) Reset() { *x = MallConf_Shop_Goods{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[33] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1497,7 +1553,7 @@ func (x *MallConf_Shop_Goods) String() string { func (*MallConf_Shop_Goods) ProtoMessage() {} func (x *MallConf_Shop_Goods) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[33] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1540,7 +1596,7 @@ type ActivityConf_Activity struct { func (x *ActivityConf_Activity) Reset() { *x = ActivityConf_Activity{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[35] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1553,7 +1609,7 @@ func (x *ActivityConf_Activity) String() string { func (*ActivityConf_Activity) ProtoMessage() {} func (x *ActivityConf_Activity) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[35] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1603,7 +1659,7 @@ type ActivityConf_Activity_Chapter struct { func (x *ActivityConf_Activity_Chapter) Reset() { *x = ActivityConf_Activity_Chapter{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[37] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1616,7 +1672,7 @@ func (x *ActivityConf_Activity_Chapter) String() string { func (*ActivityConf_Activity_Chapter) ProtoMessage() {} func (x *ActivityConf_Activity_Chapter) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[37] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1666,7 +1722,7 @@ type ActivityConf_Activity_Chapter_Section struct { func (x *ActivityConf_Activity_Chapter_Section) Reset() { *x = ActivityConf_Activity_Chapter_Section{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[38] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1679,7 +1735,7 @@ func (x *ActivityConf_Activity_Chapter_Section) String() string { func (*ActivityConf_Activity_Chapter_Section) ProtoMessage() {} func (x *ActivityConf_Activity_Chapter_Section) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[38] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1728,7 +1784,7 @@ type ActivityConf_Activity_Chapter_Section_Reward struct { func (x *ActivityConf_Activity_Chapter_Section_Reward) Reset() { *x = ActivityConf_Activity_Chapter_Section_Reward{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[40] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1741,7 +1797,7 @@ func (x *ActivityConf_Activity_Chapter_Section_Reward) String() string { func (*ActivityConf_Activity_Chapter_Section_Reward) ProtoMessage() {} func (x *ActivityConf_Activity_Chapter_Section_Reward) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[40] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1783,7 +1839,7 @@ type RewardConf_Reward struct { func (x *RewardConf_Reward) Reset() { *x = RewardConf_Reward{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[42] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1796,7 +1852,7 @@ func (x *RewardConf_Reward) String() string { func (*RewardConf_Reward) ProtoMessage() {} func (x *RewardConf_Reward) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[42] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1838,7 +1894,7 @@ type PatchMergeConf_Time struct { func (x *PatchMergeConf_Time) Reset() { *x = PatchMergeConf_Time{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[44] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1851,7 +1907,7 @@ func (x *PatchMergeConf_Time) String() string { func (*PatchMergeConf_Time) ProtoMessage() {} func (x *PatchMergeConf_Time) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[44] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1893,7 +1949,7 @@ type RecursivePatchConf_Shop struct { func (x *RecursivePatchConf_Shop) Reset() { *x = RecursivePatchConf_Shop{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[48] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1906,7 +1962,7 @@ func (x *RecursivePatchConf_Shop) String() string { func (*RecursivePatchConf_Shop) ProtoMessage() {} func (x *RecursivePatchConf_Shop) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[48] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1951,7 +2007,7 @@ type RecursivePatchConf_Shop_Goods struct { func (x *RecursivePatchConf_Shop_Goods) Reset() { *x = RecursivePatchConf_Shop_Goods{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[50] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1964,7 +2020,7 @@ func (x *RecursivePatchConf_Shop_Goods) String() string { func (*RecursivePatchConf_Shop_Goods) ProtoMessage() {} func (x *RecursivePatchConf_Shop_Goods) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[50] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2029,7 +2085,7 @@ type RecursivePatchConf_Shop_Goods_Currency struct { func (x *RecursivePatchConf_Shop_Goods_Currency) Reset() { *x = RecursivePatchConf_Shop_Goods_Currency{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[52] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2042,7 +2098,7 @@ func (x *RecursivePatchConf_Shop_Goods_Currency) String() string { func (*RecursivePatchConf_Shop_Goods_Currency) ProtoMessage() {} func (x *RecursivePatchConf_Shop_Goods_Currency) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[52] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2098,7 +2154,7 @@ type RecursivePatchConf_Shop_Goods_Award struct { func (x *RecursivePatchConf_Shop_Goods_Award) Reset() { *x = RecursivePatchConf_Shop_Goods_Award{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[53] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2111,7 +2167,7 @@ func (x *RecursivePatchConf_Shop_Goods_Award) String() string { func (*RecursivePatchConf_Shop_Goods_Award) ProtoMessage() {} func (x *RecursivePatchConf_Shop_Goods_Award) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[53] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2154,7 +2210,7 @@ type UniqueFieldInVerticalStructList_Item struct { func (x *UniqueFieldInVerticalStructList_Item) Reset() { *x = UniqueFieldInVerticalStructList_Item{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[57] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2167,7 +2223,7 @@ func (x *UniqueFieldInVerticalStructList_Item) String() string { func (*UniqueFieldInVerticalStructList_Item) ProtoMessage() {} func (x *UniqueFieldInVerticalStructList_Item) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[57] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2218,7 +2274,7 @@ type VerticalUniqueFieldStructMap_Main struct { func (x *VerticalUniqueFieldStructMap_Main) Reset() { *x = VerticalUniqueFieldStructMap_Main{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[59] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2231,7 +2287,7 @@ func (x *VerticalUniqueFieldStructMap_Main) String() string { func (*VerticalUniqueFieldStructMap_Main) ProtoMessage() {} func (x *VerticalUniqueFieldStructMap_Main) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[59] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2287,7 +2343,7 @@ type VerticalUniqueFieldStructMap_Main_Sub struct { func (x *VerticalUniqueFieldStructMap_Main_Sub) Reset() { *x = VerticalUniqueFieldStructMap_Main_Sub{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[62] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2300,7 +2356,7 @@ func (x *VerticalUniqueFieldStructMap_Main_Sub) String() string { func (*VerticalUniqueFieldStructMap_Main_Sub) ProtoMessage() {} func (x *VerticalUniqueFieldStructMap_Main_Sub) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[62] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2343,7 +2399,7 @@ type DocumentUniqueFieldStructList_Item struct { func (x *DocumentUniqueFieldStructList_Item) Reset() { *x = DocumentUniqueFieldStructList_Item{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[63] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2356,7 +2412,7 @@ func (x *DocumentUniqueFieldStructList_Item) String() string { func (*DocumentUniqueFieldStructList_Item) ProtoMessage() {} func (x *DocumentUniqueFieldStructList_Item) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[63] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2406,7 +2462,7 @@ type DocumentUniqueFieldStructMap_Chapter struct { func (x *DocumentUniqueFieldStructMap_Chapter) Reset() { *x = DocumentUniqueFieldStructMap_Chapter{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[65] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2419,7 +2475,7 @@ func (x *DocumentUniqueFieldStructMap_Chapter) String() string { func (*DocumentUniqueFieldStructMap_Chapter) ProtoMessage() {} func (x *DocumentUniqueFieldStructMap_Chapter) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[65] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2469,7 +2525,7 @@ type DocumentUniqueFieldStructMap_ChapterInfo struct { func (x *DocumentUniqueFieldStructMap_ChapterInfo) Reset() { *x = DocumentUniqueFieldStructMap_ChapterInfo{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[69] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2482,7 +2538,7 @@ func (x *DocumentUniqueFieldStructMap_ChapterInfo) String() string { func (*DocumentUniqueFieldStructMap_ChapterInfo) ProtoMessage() {} func (x *DocumentUniqueFieldStructMap_ChapterInfo) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[69] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2531,7 +2587,7 @@ type DocumentUniqueFieldStructMap_Chapter_Section struct { func (x *DocumentUniqueFieldStructMap_Chapter_Section) Reset() { *x = DocumentUniqueFieldStructMap_Chapter_Section{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[71] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2544,7 +2600,7 @@ func (x *DocumentUniqueFieldStructMap_Chapter_Section) String() string { func (*DocumentUniqueFieldStructMap_Chapter_Section) ProtoMessage() {} func (x *DocumentUniqueFieldStructMap_Chapter_Section) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[71] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2587,7 +2643,7 @@ type DocumentUniqueFieldStructMap_ChapterInfo_Section struct { func (x *DocumentUniqueFieldStructMap_ChapterInfo_Section) Reset() { *x = DocumentUniqueFieldStructMap_ChapterInfo_Section{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[73] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2600,7 +2656,7 @@ func (x *DocumentUniqueFieldStructMap_ChapterInfo_Section) String() string { func (*DocumentUniqueFieldStructMap_ChapterInfo_Section) ProtoMessage() {} func (x *DocumentUniqueFieldStructMap_ChapterInfo_Section) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[73] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2650,7 +2706,7 @@ type DocumentUniqueFieldStructMap_ChapterInfo_Section_Section struct { func (x *DocumentUniqueFieldStructMap_ChapterInfo_Section_Section) Reset() { *x = DocumentUniqueFieldStructMap_ChapterInfo_Section_Section{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[75] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2663,7 +2719,7 @@ func (x *DocumentUniqueFieldStructMap_ChapterInfo_Section_Section) String() stri func (*DocumentUniqueFieldStructMap_ChapterInfo_Section_Section) ProtoMessage() {} func (x *DocumentUniqueFieldStructMap_ChapterInfo_Section_Section) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[75] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2712,7 +2768,7 @@ type DocumentUniqueFieldStructMap_ChapterInfo_Section_Section_Section struct { func (x *DocumentUniqueFieldStructMap_ChapterInfo_Section_Section_Section) Reset() { *x = DocumentUniqueFieldStructMap_ChapterInfo_Section_Section_Section{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[77] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2725,7 +2781,7 @@ func (x *DocumentUniqueFieldStructMap_ChapterInfo_Section_Section_Section) Strin func (*DocumentUniqueFieldStructMap_ChapterInfo_Section_Section_Section) ProtoMessage() {} func (x *DocumentUniqueFieldStructMap_ChapterInfo_Section_Section_Section) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[77] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2768,7 +2824,7 @@ type SequenceFieldInVerticalStructList_Item struct { func (x *SequenceFieldInVerticalStructList_Item) Reset() { *x = SequenceFieldInVerticalStructList_Item{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[78] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2781,7 +2837,7 @@ func (x *SequenceFieldInVerticalStructList_Item) String() string { func (*SequenceFieldInVerticalStructList_Item) ProtoMessage() {} func (x *SequenceFieldInVerticalStructList_Item) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[78] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2830,7 +2886,7 @@ type SequenceKeyInVerticalKeyedList_Item struct { func (x *SequenceKeyInVerticalKeyedList_Item) Reset() { *x = SequenceKeyInVerticalKeyedList_Item{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[79] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2843,7 +2899,7 @@ func (x *SequenceKeyInVerticalKeyedList_Item) String() string { func (*SequenceKeyInVerticalKeyedList_Item) ProtoMessage() {} func (x *SequenceKeyInVerticalKeyedList_Item) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[79] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2885,7 +2941,7 @@ type SequenceKeyInVerticalKeyedList_Item_Prop struct { func (x *SequenceKeyInVerticalKeyedList_Item_Prop) Reset() { *x = SequenceKeyInVerticalKeyedList_Item_Prop{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[81] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2898,7 +2954,7 @@ func (x *SequenceKeyInVerticalKeyedList_Item_Prop) String() string { func (*SequenceKeyInVerticalKeyedList_Item_Prop) ProtoMessage() {} func (x *SequenceKeyInVerticalKeyedList_Item_Prop) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[81] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2940,7 +2996,7 @@ type VerticalSequenceFieldStructMap_Main struct { func (x *VerticalSequenceFieldStructMap_Main) Reset() { *x = VerticalSequenceFieldStructMap_Main{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[83] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2953,7 +3009,7 @@ func (x *VerticalSequenceFieldStructMap_Main) String() string { func (*VerticalSequenceFieldStructMap_Main) ProtoMessage() {} func (x *VerticalSequenceFieldStructMap_Main) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[83] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2995,7 +3051,7 @@ type VerticalSequenceFieldStructMap_Main_Sub struct { func (x *VerticalSequenceFieldStructMap_Main_Sub) Reset() { *x = VerticalSequenceFieldStructMap_Main_Sub{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[85] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3008,7 +3064,7 @@ func (x *VerticalSequenceFieldStructMap_Main_Sub) String() string { func (*VerticalSequenceFieldStructMap_Main_Sub) ProtoMessage() {} func (x *VerticalSequenceFieldStructMap_Main_Sub) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[85] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3051,7 +3107,7 @@ type DocumentSequenceFieldStructList_Item struct { func (x *DocumentSequenceFieldStructList_Item) Reset() { *x = DocumentSequenceFieldStructList_Item{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[86] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3064,7 +3120,7 @@ func (x *DocumentSequenceFieldStructList_Item) String() string { func (*DocumentSequenceFieldStructList_Item) ProtoMessage() {} func (x *DocumentSequenceFieldStructList_Item) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[86] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3113,7 +3169,7 @@ type Transpose_Hero struct { func (x *Transpose_Hero) Reset() { *x = Transpose_Hero{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[88] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3126,7 +3182,7 @@ func (x *Transpose_Hero) String() string { func (*Transpose_Hero) ProtoMessage() {} func (x *Transpose_Hero) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[88] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3172,7 +3228,7 @@ type FieldPresentMap_Player struct { func (x *FieldPresentMap_Player) Reset() { *x = FieldPresentMap_Player{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[90] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3185,7 +3241,7 @@ func (x *FieldPresentMap_Player) String() string { func (*FieldPresentMap_Player) ProtoMessage() {} func (x *FieldPresentMap_Player) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[90] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3198,7 +3254,7 @@ func (x *FieldPresentMap_Player) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldPresentMap_Player.ProtoReflect.Descriptor instead. func (*FieldPresentMap_Player) Descriptor() ([]byte, []int) { - return file_tableau_protobuf_unittest_unittest_proto_rawDescGZIP(), []int{22, 1} + return file_tableau_protobuf_unittest_unittest_proto_rawDescGZIP(), []int{23, 1} } func (x *FieldPresentMap_Player) GetId() int32 { @@ -3255,7 +3311,7 @@ type FieldPresentMap_Player_Weapon struct { func (x *FieldPresentMap_Player_Weapon) Reset() { *x = FieldPresentMap_Player_Weapon{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[91] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3268,7 +3324,7 @@ func (x *FieldPresentMap_Player_Weapon) String() string { func (*FieldPresentMap_Player_Weapon) ProtoMessage() {} func (x *FieldPresentMap_Player_Weapon) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[91] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3281,7 +3337,7 @@ func (x *FieldPresentMap_Player_Weapon) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldPresentMap_Player_Weapon.ProtoReflect.Descriptor instead. func (*FieldPresentMap_Player_Weapon) Descriptor() ([]byte, []int) { - return file_tableau_protobuf_unittest_unittest_proto_rawDescGZIP(), []int{22, 1, 0} + return file_tableau_protobuf_unittest_unittest_proto_rawDescGZIP(), []int{23, 1, 0} } func (x *FieldPresentMap_Player_Weapon) GetName() string { @@ -3310,7 +3366,7 @@ type FieldPresentMap_Player_Info struct { func (x *FieldPresentMap_Player_Info) Reset() { *x = FieldPresentMap_Player_Info{} if protoimpl.UnsafeEnabled { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[92] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3323,7 +3379,7 @@ func (x *FieldPresentMap_Player_Info) String() string { func (*FieldPresentMap_Player_Info) ProtoMessage() {} func (x *FieldPresentMap_Player_Info) ProtoReflect() protoreflect.Message { - mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[92] + mi := &file_tableau_protobuf_unittest_unittest_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3336,7 +3392,7 @@ func (x *FieldPresentMap_Player_Info) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldPresentMap_Player_Info.ProtoReflect.Descriptor instead. func (*FieldPresentMap_Player_Info) Descriptor() ([]byte, []int) { - return file_tableau_protobuf_unittest_unittest_proto_rawDescGZIP(), []int{22, 1, 1} + return file_tableau_protobuf_unittest_unittest_proto_rawDescGZIP(), []int{23, 1, 1} } func (x *FieldPresentMap_Player_Info) GetLevel() int32 { @@ -3359,842 +3415,857 @@ var file_tableau_protobuf_unittest_unittest_proto_rawDesc = []byte{ 0x0a, 0x28, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x75, 0x6e, 0x69, 0x74, - 0x74, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbd, 0x01, - 0x0a, 0x0f, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, 0x61, - 0x70, 0x12, 0x4f, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x53, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x2e, 0x49, - 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0c, 0x82, 0xb5, 0x18, - 0x08, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x20, 0x03, 0x52, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x4d, - 0x61, 0x70, 0x1a, 0x3a, 0x0a, 0x0c, 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x1d, - 0x82, 0xb5, 0x18, 0x19, 0x0a, 0x0f, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x49, 0x6e, 0x63, 0x65, - 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x22, 0xf0, 0x05, - 0x0a, 0x09, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x52, 0x0a, 0x09, 0x66, - 0x72, 0x75, 0x69, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, - 0x4d, 0x61, 0x70, 0x2e, 0x46, 0x72, 0x75, 0x69, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x42, 0x12, 0x82, 0xb5, 0x18, 0x0e, 0x0a, 0x05, 0x46, 0x72, 0x75, 0x69, 0x74, 0x1a, 0x03, - 0x4b, 0x65, 0x79, 0x20, 0x03, 0x52, 0x08, 0x66, 0x72, 0x75, 0x69, 0x74, 0x4d, 0x61, 0x70, 0x12, - 0x51, 0x0a, 0x0a, 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, - 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x2e, 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x4d, - 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x06, 0x46, - 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x20, 0x03, 0x52, 0x09, 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x4d, - 0x61, 0x70, 0x12, 0x4e, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, - 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x61, - 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x11, 0x82, 0xb5, 0x18, 0x0d, 0x0a, 0x04, 0x49, 0x74, - 0x65, 0x6d, 0x1a, 0x03, 0x4b, 0x65, 0x79, 0x20, 0x03, 0x52, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x4d, - 0x61, 0x70, 0x1a, 0x56, 0x0a, 0x0d, 0x46, 0x72, 0x75, 0x69, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, - 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x2e, 0x46, 0x72, 0x75, 0x69, 0x74, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5c, 0x0a, 0x05, 0x46, 0x72, - 0x75, 0x69, 0x74, 0x12, 0x30, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x13, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x72, 0x75, 0x69, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x09, 0x82, 0xb5, 0x18, 0x05, 0x0a, 0x03, 0x4b, 0x65, 0x79, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x53, 0x0a, 0x0e, 0x46, 0x6c, 0x61, 0x76, - 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x75, 0x6e, - 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x72, 0x75, 0x69, 0x74, 0x46, 0x6c, 0x61, 0x76, - 0x6f, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x54, 0x0a, - 0x0c, 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, - 0x4d, 0x61, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x1a, 0x72, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x30, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, - 0x65, 0x73, 0x74, 0x2e, 0x46, 0x72, 0x75, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x09, 0x82, - 0xb5, 0x18, 0x05, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x38, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x75, - 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x72, 0x75, 0x69, 0x74, 0x46, 0x6c, 0x61, - 0x76, 0x6f, 0x72, 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x17, 0x82, 0xb5, 0x18, 0x13, 0x0a, 0x09, 0x49, - 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, - 0x22, 0x6d, 0x0a, 0x10, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x69, 0x73, - 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, - 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x04, 0x49, - 0x74, 0x65, 0x6d, 0x20, 0x03, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x3a, - 0x1e, 0x82, 0xb5, 0x18, 0x1a, 0x0a, 0x10, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x22, - 0xd7, 0x01, 0x0a, 0x0a, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, - 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x05, 0x42, 0x0d, 0x82, 0xb5, 0x18, 0x09, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x20, - 0x03, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0b, - 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0e, 0x32, 0x15, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x72, 0x75, - 0x69, 0x74, 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x06, - 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x20, 0x03, 0x52, 0x0a, 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x69, 0x73, - 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, - 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x04, 0x49, - 0x74, 0x65, 0x6d, 0x20, 0x03, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x3a, - 0x18, 0x82, 0xb5, 0x18, 0x14, 0x0a, 0x0a, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4c, 0x69, 0x73, - 0x74, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x22, 0xb6, 0x01, 0x0a, 0x08, 0x49, 0x74, - 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x46, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6d, - 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, - 0x65, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x49, 0x74, 0x65, - 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x1a, - 0x02, 0x49, 0x44, 0x20, 0x01, 0x52, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x1a, 0x4a, - 0x0a, 0x0c, 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x24, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0e, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x16, 0x82, 0xb5, 0x18, 0x12, - 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x04, 0x22, 0xfa, 0x03, 0x0a, 0x08, 0x4d, 0x61, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x12, - 0x4a, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x6c, - 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x1a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x44, - 0x20, 0x01, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x70, 0x4d, 0x61, 0x70, 0x1a, 0x53, 0x0a, 0x0c, 0x53, - 0x68, 0x6f, 0x70, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x75, - 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x66, - 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0xb4, 0x02, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x25, 0x0a, 0x07, 0x73, 0x68, 0x6f, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, - 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x44, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x70, 0x49, 0x64, - 0x12, 0x53, 0x0a, 0x09, 0x67, 0x6f, 0x6f, 0x64, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4d, - 0x61, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x47, 0x6f, 0x6f, - 0x64, 0x73, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0f, 0x82, 0xb5, 0x18, 0x0b, - 0x1a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x44, 0x20, 0x01, 0x52, 0x08, 0x67, 0x6f, 0x6f, - 0x64, 0x73, 0x4d, 0x61, 0x70, 0x1a, 0x5a, 0x0a, 0x0d, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x4d, 0x61, - 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, - 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, - 0x2e, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x54, 0x0a, 0x05, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x12, 0x28, 0x0a, 0x08, 0x67, 0x6f, - 0x6f, 0x64, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0d, 0x82, 0xb5, - 0x18, 0x09, 0x0a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x44, 0x52, 0x07, 0x67, 0x6f, 0x6f, - 0x64, 0x73, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, - 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x3a, 0x16, 0x82, 0xb5, 0x18, 0x12, 0x0a, 0x08, 0x4d, - 0x61, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x22, - 0x9b, 0x09, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, - 0x12, 0x5e, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x61, 0x70, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, - 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, - 0x12, 0x82, 0xb5, 0x18, 0x0e, 0x1a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x49, - 0x44, 0x20, 0x01, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x70, - 0x1a, 0x5f, 0x0a, 0x10, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x70, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x41, 0x63, - 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0xad, 0x07, 0x0a, 0x08, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x31, - 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x10, 0x82, 0xb5, 0x18, 0x0c, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x69, 0x74, 0x79, 0x49, 0x44, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x49, - 0x64, 0x12, 0x37, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x12, 0x82, 0xb5, 0x18, 0x0e, 0x0a, 0x0c, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x0c, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x63, 0x0a, 0x0b, 0x63, 0x68, - 0x61, 0x70, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2f, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x42, 0x11, 0x82, 0xb5, 0x18, 0x0d, 0x1a, 0x09, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, - 0x44, 0x20, 0x01, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x1a, - 0x66, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x41, + 0x74, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x26, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbd, 0x01, 0x0a, 0x0f, 0x53, + 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x4f, + 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x69, 0x6d, 0x70, + 0x6c, 0x65, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, + 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x04, + 0x49, 0x74, 0x65, 0x6d, 0x20, 0x03, 0x52, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x1a, + 0x3a, 0x0a, 0x0c, 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x1d, 0x82, 0xb5, 0x18, + 0x19, 0x0a, 0x0f, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, + 0x61, 0x70, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x22, 0xf0, 0x05, 0x0a, 0x09, 0x49, + 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x52, 0x0a, 0x09, 0x66, 0x72, 0x75, 0x69, + 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x75, 0x6e, + 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, + 0x2e, 0x46, 0x72, 0x75, 0x69, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x12, + 0x82, 0xb5, 0x18, 0x0e, 0x0a, 0x05, 0x46, 0x72, 0x75, 0x69, 0x74, 0x1a, 0x03, 0x4b, 0x65, 0x79, + 0x20, 0x03, 0x52, 0x08, 0x66, 0x72, 0x75, 0x69, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x51, 0x0a, 0x0a, + 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x63, 0x65, + 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x2e, 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x06, 0x46, 0x6c, 0x61, 0x76, + 0x6f, 0x72, 0x20, 0x03, 0x52, 0x09, 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x12, + 0x4e, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x63, + 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x42, 0x11, 0x82, 0xb5, 0x18, 0x0d, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x1a, + 0x03, 0x4b, 0x65, 0x79, 0x20, 0x03, 0x52, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x1a, + 0x56, 0x0a, 0x0d, 0x46, 0x72, 0x75, 0x69, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x63, + 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x2e, 0x46, 0x72, 0x75, 0x69, 0x74, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5c, 0x0a, 0x05, 0x46, 0x72, 0x75, 0x69, 0x74, + 0x12, 0x30, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, + 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x72, 0x75, 0x69, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x42, 0x09, 0x82, 0xb5, 0x18, 0x05, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x53, 0x0a, 0x0e, 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x4d, + 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x2e, 0x46, 0x72, 0x75, 0x69, 0x74, 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x54, 0x0a, 0x0c, 0x49, 0x74, + 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x75, 0x6e, + 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, + 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x72, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x30, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, + 0x2e, 0x46, 0x72, 0x75, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x09, 0x82, 0xb5, 0x18, 0x05, + 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x38, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x75, 0x6e, 0x69, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x72, 0x75, 0x69, 0x74, 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, + 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x17, 0x82, 0xb5, 0x18, 0x13, 0x0a, 0x09, 0x49, 0x6e, 0x63, 0x65, + 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x22, 0x6d, 0x0a, + 0x10, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x39, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, + 0x49, 0x74, 0x65, 0x6d, 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, + 0x20, 0x03, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x1e, 0x82, 0xb5, + 0x18, 0x1a, 0x0a, 0x10, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x22, 0xd7, 0x01, 0x0a, + 0x0a, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0a, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, + 0x0d, 0x82, 0xb5, 0x18, 0x09, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x03, 0x52, 0x09, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x66, 0x6c, 0x61, + 0x76, 0x6f, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, + 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x72, 0x75, 0x69, 0x74, 0x46, + 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x06, 0x46, 0x6c, 0x61, + 0x76, 0x6f, 0x72, 0x20, 0x03, 0x52, 0x0a, 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x39, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, + 0x49, 0x74, 0x65, 0x6d, 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, + 0x20, 0x03, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x18, 0x82, 0xb5, + 0x18, 0x14, 0x0a, 0x0a, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x10, 0x01, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x22, 0xb6, 0x01, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x43, + 0x6f, 0x6e, 0x66, 0x12, 0x46, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6d, 0x61, 0x70, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, + 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x61, + 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x1a, 0x02, 0x49, 0x44, + 0x20, 0x01, 0x52, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x1a, 0x4a, 0x0a, 0x0c, 0x49, + 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x24, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x75, + 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x16, 0x82, 0xb5, 0x18, 0x12, 0x0a, 0x08, 0x49, + 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x22, + 0xfa, 0x03, 0x0a, 0x08, 0x4d, 0x61, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x4a, 0x0a, 0x08, + 0x73, 0x68, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x6c, 0x6c, 0x43, 0x6f, + 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, + 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x1a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x44, 0x20, 0x01, 0x52, + 0x07, 0x73, 0x68, 0x6f, 0x70, 0x4d, 0x61, 0x70, 0x1a, 0x53, 0x0a, 0x0c, 0x53, 0x68, 0x6f, 0x70, + 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x75, 0x6e, 0x69, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, + 0x6f, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xb4, 0x02, + 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x25, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x06, 0x53, + 0x68, 0x6f, 0x70, 0x49, 0x44, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x53, 0x0a, + 0x09, 0x67, 0x6f, 0x6f, 0x64, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x6c, 0x6c, + 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x4d, + 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0f, 0x82, 0xb5, 0x18, 0x0b, 0x1a, 0x07, 0x47, + 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x44, 0x20, 0x01, 0x52, 0x08, 0x67, 0x6f, 0x6f, 0x64, 0x73, 0x4d, + 0x61, 0x70, 0x1a, 0x5a, 0x0a, 0x0d, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x4d, 0x61, 0x70, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, + 0x4d, 0x61, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x47, 0x6f, + 0x6f, 0x64, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x54, + 0x0a, 0x05, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x12, 0x28, 0x0a, 0x08, 0x67, 0x6f, 0x6f, 0x64, 0x73, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0d, 0x82, 0xb5, 0x18, 0x09, 0x0a, + 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x44, 0x52, 0x07, 0x67, 0x6f, 0x6f, 0x64, 0x73, 0x49, + 0x64, 0x12, 0x21, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x05, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x3a, 0x16, 0x82, 0xb5, 0x18, 0x12, 0x0a, 0x08, 0x4d, 0x61, 0x6c, 0x6c, + 0x43, 0x6f, 0x6e, 0x66, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x22, 0x9b, 0x09, 0x0a, + 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x5e, 0x0a, + 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xe7, 0x04, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x70, - 0x74, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0f, 0x82, 0xb5, 0x18, 0x0b, 0x0a, 0x09, 0x43, - 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, 0x44, 0x52, 0x09, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, - 0x72, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x11, 0x82, 0xb5, 0x18, 0x0d, 0x0a, - 0x0b, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x0b, 0x63, 0x68, - 0x61, 0x70, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x5a, 0x0a, 0x0c, 0x73, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2f, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x06, 0x82, 0xb5, 0x18, 0x02, 0x20, 0x01, 0x52, 0x0b, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x99, 0x03, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x2e, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0f, 0x82, 0xb5, 0x18, 0x0b, 0x0a, 0x09, 0x53, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x52, 0x09, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x34, 0x0a, 0x0c, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x11, 0x82, 0xb5, 0x18, 0x0d, 0x0a, 0x0b, 0x53, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x0b, 0x73, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x71, 0x0a, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x75, 0x6e, - 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, - 0x6f, 0x6e, 0x66, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x43, 0x68, 0x61, - 0x70, 0x74, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x12, 0x82, 0xb5, 0x18, - 0x0e, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, 0x02, 0x49, 0x44, 0x20, 0x02, 0x52, - 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, 0x61, 0x70, 0x1a, 0x74, 0x0a, 0x0e, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, - 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x43, - 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0x3f, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0x82, 0xb5, 0x18, 0x04, 0x0a, 0x02, 0x49, 0x44, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x42, 0x09, 0x82, 0xb5, 0x18, 0x05, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x52, 0x03, 0x6e, 0x75, - 0x6d, 0x3a, 0x1a, 0x82, 0xb5, 0x18, 0x16, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x22, 0xb2, 0x03, - 0x0a, 0x0a, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x54, 0x0a, 0x0a, - 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, 0x61, 0x70, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x10, 0x82, 0xb5, 0x18, 0x0c, 0x1a, 0x08, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x49, 0x44, 0x20, 0x01, 0x52, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, - 0x61, 0x70, 0x1a, 0x59, 0x0a, 0x0e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, 0x61, 0x70, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x31, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xd8, 0x01, - 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x2b, 0x0a, 0x09, 0x72, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0e, 0x82, 0xb5, 0x18, - 0x0a, 0x0a, 0x08, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x49, 0x44, 0x52, 0x08, 0x72, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x55, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6d, 0x61, - 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, - 0x73, 0x74, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x42, 0x10, 0x82, 0xb5, 0x18, 0x0c, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x1a, 0x02, 0x49, - 0x44, 0x20, 0x02, 0x52, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x1a, 0x4a, 0x0a, 0x0c, - 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x24, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, - 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x18, 0x82, 0xb5, 0x18, 0x14, 0x0a, 0x0a, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x04, 0x22, 0xd5, 0x02, 0x0a, 0x0e, 0x59, 0x61, 0x6d, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x61, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x08, 0x82, 0xb5, 0x18, 0x04, 0x0a, 0x02, 0x49, 0x44, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x1b, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0x82, 0xb5, - 0x18, 0x05, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x21, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0b, 0x82, 0xb5, 0x18, - 0x07, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x24, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, - 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x77, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, - 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x42, 0x10, 0x82, 0xb5, 0x18, 0x0c, 0x0a, - 0x0a, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x70, 0x65, 0x72, - 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, 0x52, 0x61, - 0x74, 0x69, 0x6f, 0x52, 0x05, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x0a, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x62, 0x6c, - 0x6f, 0x62, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x0a, 0x04, - 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x12, 0x18, 0x0a, 0x02, 0x6f, 0x6b, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x08, 0x82, 0xb5, 0x18, 0x04, 0x0a, 0x02, 0x4f, 0x4b, - 0x52, 0x02, 0x6f, 0x6b, 0x3a, 0x14, 0x82, 0xb5, 0x18, 0x10, 0x0a, 0x0e, 0x59, 0x61, 0x6d, 0x6c, - 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x22, 0x83, 0x01, 0x0a, 0x10, 0x50, - 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x12, - 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0x82, - 0xb5, 0x18, 0x06, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x2c, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x05, 0x42, 0x0d, 0x82, 0xb5, 0x18, 0x09, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, - 0x20, 0x03, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x21, 0x82, - 0xb5, 0x18, 0x1d, 0x0a, 0x10, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0xa8, 0x01, 0x01, - 0x22, 0xcc, 0x06, 0x0a, 0x0e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x32, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, 0x4e, 0x61, 0x6d, 0x65, 0x32, 0x52, - 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x32, 0x12, 0x26, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x33, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, 0x4e, 0x61, 0x6d, - 0x65, 0x33, 0x48, 0x00, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x33, 0x88, 0x01, 0x01, 0x12, 0x3d, - 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x75, - 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x72, - 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x0a, 0x82, 0xb5, 0x18, - 0x06, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, - 0x0a, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x05, 0x42, 0x0d, 0x82, 0xb5, 0x18, 0x09, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x20, 0x03, - 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x12, 0x72, - 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x73, - 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x42, 0x18, 0x82, 0xb5, 0x18, 0x14, 0x0a, 0x0c, 0x52, - 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x20, 0x03, 0x7a, 0x02, 0x60, - 0x01, 0x52, 0x10, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x52, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6d, 0x61, 0x70, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x2e, - 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x10, 0x82, 0xb5, - 0x18, 0x0c, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x1a, 0x02, 0x49, 0x44, 0x20, 0x02, 0x52, 0x07, - 0x69, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x12, 0x73, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x08, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x74, - 0x63, 0x68, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x52, 0x65, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, - 0x1b, 0x82, 0xb5, 0x18, 0x17, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x49, 0x74, - 0x65, 0x6d, 0x1a, 0x02, 0x49, 0x44, 0x20, 0x02, 0x7a, 0x02, 0x60, 0x01, 0x52, 0x0e, 0x72, 0x65, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x1a, 0x86, 0x01, 0x0a, - 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x06, 0x45, 0x78, 0x70, 0x69, 0x72, 0x79, 0x52, 0x06, 0x65, - 0x78, 0x70, 0x69, 0x72, 0x79, 0x1a, 0x4a, 0x0a, 0x0c, 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, + 0x76, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x12, 0x82, 0xb5, + 0x18, 0x0e, 0x1a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x49, 0x44, 0x20, 0x01, + 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x70, 0x1a, 0x5f, 0x0a, + 0x10, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xad, + 0x07, 0x0a, 0x08, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x31, 0x0a, 0x0b, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x10, 0x82, 0xb5, 0x18, 0x0c, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x49, 0x44, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x37, + 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x12, 0x82, 0xb5, 0x18, 0x0e, 0x0a, 0x0c, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x63, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x70, 0x74, + 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x75, + 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x43, 0x68, + 0x61, 0x70, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x11, 0x82, + 0xb5, 0x18, 0x0d, 0x1a, 0x09, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, 0x44, 0x20, 0x01, + 0x52, 0x0a, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x1a, 0x66, 0x0a, 0x0f, + 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x3d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xe7, 0x04, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, + 0x12, 0x2e, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0f, 0x82, 0xb5, 0x18, 0x0b, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x70, + 0x74, 0x65, 0x72, 0x49, 0x44, 0x52, 0x09, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x34, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x11, 0x82, 0xb5, 0x18, 0x0d, 0x0a, 0x0b, 0x43, 0x68, + 0x61, 0x70, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x70, 0x74, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x5a, 0x0a, 0x0c, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x75, + 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x43, 0x68, + 0x61, 0x70, 0x74, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0x82, + 0xb5, 0x18, 0x02, 0x20, 0x01, 0x52, 0x0b, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, + 0x73, 0x74, 0x1a, 0x99, 0x03, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, + 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x0f, 0x82, 0xb5, 0x18, 0x0b, 0x0a, 0x09, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x44, 0x52, 0x09, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x34, + 0x0a, 0x0c, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x11, 0x82, 0xb5, 0x18, 0x0d, 0x0a, 0x0b, 0x53, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x0b, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x71, 0x0a, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6d, + 0x61, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, + 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, + 0x72, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x12, 0x82, 0xb5, 0x18, 0x0e, 0x0a, 0x06, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, 0x02, 0x49, 0x44, 0x20, 0x02, 0x52, 0x09, 0x72, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x4d, 0x61, 0x70, 0x1a, 0x74, 0x0a, 0x0e, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x75, 0x6e, 0x69, + 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x6f, + 0x6e, 0x66, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x70, + 0x74, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, + 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x08, 0x82, 0xb5, 0x18, 0x04, 0x0a, 0x02, 0x49, 0x44, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x1b, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, + 0x82, 0xb5, 0x18, 0x05, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x3a, 0x1a, + 0x82, 0xb5, 0x18, 0x16, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x6f, + 0x6e, 0x66, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x22, 0xb2, 0x03, 0x0a, 0x0a, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x54, 0x0a, 0x0a, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x43, + 0x6f, 0x6e, 0x66, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x42, 0x10, 0x82, 0xb5, 0x18, 0x0c, 0x1a, 0x08, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x49, 0x44, 0x20, 0x01, 0x52, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, 0x61, 0x70, 0x1a, + 0x59, 0x0a, 0x0e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x31, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xd8, 0x01, 0x0a, 0x06, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x2b, 0x0a, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x08, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x49, 0x44, 0x52, 0x08, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x49, 0x64, 0x12, 0x55, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x10, + 0x82, 0xb5, 0x18, 0x0c, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x1a, 0x02, 0x49, 0x44, 0x20, 0x02, + 0x52, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x1a, 0x4a, 0x0a, 0x0c, 0x49, 0x74, 0x65, + 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x75, 0x6e, 0x69, + 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x18, 0x82, 0xb5, 0x18, 0x14, 0x0a, 0x0a, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x22, + 0xd5, 0x02, 0x0a, 0x0e, 0x59, 0x61, 0x6d, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, + 0x82, 0xb5, 0x18, 0x04, 0x0a, 0x02, 0x49, 0x44, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x03, + 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0x82, 0xb5, 0x18, 0x05, 0x0a, + 0x03, 0x4e, 0x75, 0x6d, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x24, 0x0a, 0x06, + 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0c, 0x82, 0xb5, + 0x18, 0x08, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x42, 0x10, 0x82, 0xb5, 0x18, 0x0c, 0x0a, 0x0a, 0x50, 0x65, + 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x01, 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, + 0x52, 0x05, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x0a, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x0a, 0x04, 0x42, 0x6c, 0x6f, + 0x62, 0x52, 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x12, 0x18, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x08, 0x82, 0xb5, 0x18, 0x04, 0x0a, 0x02, 0x4f, 0x4b, 0x52, 0x02, 0x6f, + 0x6b, 0x3a, 0x14, 0x82, 0xb5, 0x18, 0x10, 0x0a, 0x0e, 0x59, 0x61, 0x6d, 0x6c, 0x53, 0x63, 0x61, + 0x6c, 0x61, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x22, 0x83, 0x01, 0x0a, 0x10, 0x50, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x1e, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, + 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0a, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, + 0x42, 0x0d, 0x82, 0xb5, 0x18, 0x09, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x20, 0x03, 0x52, + 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x21, 0x82, 0xb5, 0x18, 0x1d, + 0x0a, 0x10, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0xa8, 0x01, 0x01, 0x22, 0xcc, 0x06, + 0x0a, 0x0e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, + 0x82, 0xb5, 0x18, 0x06, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x21, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, 0x4e, 0x61, 0x6d, 0x65, 0x32, 0x52, 0x05, 0x6e, 0x61, + 0x6d, 0x65, 0x32, 0x12, 0x26, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x33, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, 0x4e, 0x61, 0x6d, 0x65, 0x33, 0x48, + 0x00, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x33, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x04, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x75, 0x6e, 0x69, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x0a, 0x04, + 0x54, 0x69, 0x6d, 0x65, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0a, 0x70, 0x72, + 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x42, 0x0d, + 0x82, 0xb5, 0x18, 0x09, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x20, 0x03, 0x52, 0x09, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x05, 0x42, 0x18, 0x82, 0xb5, 0x18, 0x14, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x20, 0x03, 0x7a, 0x02, 0x60, 0x01, 0x52, 0x10, + 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x52, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, + 0x74, 0x63, 0x68, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x49, 0x74, 0x65, + 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x10, 0x82, 0xb5, 0x18, 0x0c, 0x0a, + 0x04, 0x49, 0x74, 0x65, 0x6d, 0x1a, 0x02, 0x49, 0x44, 0x20, 0x02, 0x52, 0x07, 0x69, 0x74, 0x65, + 0x6d, 0x4d, 0x61, 0x70, 0x12, 0x73, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, + 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, + 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x4d, + 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x1b, 0x82, 0xb5, + 0x18, 0x17, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x1a, + 0x02, 0x49, 0x44, 0x20, 0x02, 0x7a, 0x02, 0x60, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x1a, 0x86, 0x01, 0x0a, 0x04, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0b, 0x82, + 0xb5, 0x18, 0x07, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x82, 0xb5, + 0x18, 0x08, 0x0a, 0x06, 0x45, 0x78, 0x70, 0x69, 0x72, 0x79, 0x52, 0x06, 0x65, 0x78, 0x70, 0x69, + 0x72, 0x79, 0x1a, 0x4a, 0x0a, 0x0c, 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, + 0x74, 0x65, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x51, + 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x51, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x49, 0x74, 0x65, 0x6d, - 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x75, 0x6e, 0x69, 0x74, - 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x1f, 0x82, 0xb5, 0x18, 0x1b, 0x0a, 0x0e, 0x50, 0x61, 0x74, 0x63, - 0x68, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x04, 0xa8, 0x01, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x33, 0x22, - 0xaa, 0x0b, 0x0a, 0x12, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, - 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x54, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x70, 0x5f, 0x6d, - 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, - 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, - 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x4d, 0x61, 0x70, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x1a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, - 0x44, 0x20, 0x01, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x70, 0x4d, 0x61, 0x70, 0x1a, 0x5d, 0x0a, 0x0c, - 0x53, 0x68, 0x6f, 0x70, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, - 0x76, 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xb9, 0x09, 0x0a, 0x04, - 0x53, 0x68, 0x6f, 0x70, 0x12, 0x25, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x06, 0x53, 0x68, 0x6f, - 0x70, 0x49, 0x44, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x5d, 0x0a, 0x09, 0x67, - 0x6f, 0x6f, 0x64, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, - 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, - 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, - 0x70, 0x2e, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, - 0x0f, 0x82, 0xb5, 0x18, 0x0b, 0x1a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x44, 0x20, 0x01, - 0x52, 0x08, 0x67, 0x6f, 0x6f, 0x64, 0x73, 0x4d, 0x61, 0x70, 0x1a, 0x64, 0x0a, 0x0d, 0x47, 0x6f, - 0x6f, 0x64, 0x73, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x75, - 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, - 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x2e, - 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0xc4, 0x07, 0x0a, 0x05, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x12, 0x28, 0x0a, 0x08, 0x67, 0x6f, - 0x6f, 0x64, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0d, 0x82, 0xb5, - 0x18, 0x09, 0x0a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x44, 0x52, 0x07, 0x67, 0x6f, 0x6f, - 0x64, 0x73, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0c, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x52, 0x04, - 0x64, 0x65, 0x73, 0x63, 0x12, 0x73, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, - 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x75, 0x6e, 0x69, + 0x01, 0x3a, 0x1f, 0x82, 0xb5, 0x18, 0x1b, 0x0a, 0x0e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, + 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0xa8, + 0x01, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x33, 0x22, 0xaa, 0x0b, 0x0a, + 0x12, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x12, 0x54, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, + 0x2e, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x1a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x44, 0x20, 0x01, + 0x52, 0x07, 0x73, 0x68, 0x6f, 0x70, 0x4d, 0x61, 0x70, 0x1a, 0x5d, 0x0a, 0x0c, 0x53, 0x68, 0x6f, + 0x70, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x50, - 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x47, 0x6f, - 0x6f, 0x64, 0x73, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x61, 0x70, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x42, 0x16, 0x82, 0xb5, 0x18, 0x12, 0x0a, 0x08, 0x43, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x63, 0x79, 0x1a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x20, 0x02, 0x52, 0x0b, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x61, 0x70, 0x12, 0x2a, 0x0a, 0x08, 0x74, 0x61, 0x67, - 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x0f, 0x82, 0xb5, 0x18, - 0x0b, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x20, 0x02, 0x7a, 0x02, 0x60, 0x01, 0x52, 0x07, 0x74, 0x61, - 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x5b, 0x0a, 0x0a, 0x61, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x75, 0x6e, 0x69, 0x74, + 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xb9, 0x09, 0x0a, 0x04, 0x53, 0x68, 0x6f, + 0x70, 0x12, 0x25, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x44, + 0x52, 0x06, 0x73, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x5d, 0x0a, 0x09, 0x67, 0x6f, 0x6f, 0x64, + 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x75, 0x6e, + 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, + 0x50, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x47, + 0x6f, 0x6f, 0x64, 0x73, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0f, 0x82, 0xb5, + 0x18, 0x0b, 0x1a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x44, 0x20, 0x01, 0x52, 0x08, 0x67, + 0x6f, 0x6f, 0x64, 0x73, 0x4d, 0x61, 0x70, 0x1a, 0x64, 0x0a, 0x0d, 0x47, 0x6f, 0x6f, 0x64, 0x73, + 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x47, 0x6f, 0x6f, - 0x64, 0x73, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x42, 0x0d, 0x82, 0xb5, 0x18, 0x09, 0x0a, 0x05, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x20, 0x02, 0x52, 0x09, 0x61, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x69, - 0x73, 0x74, 0x1a, 0x70, 0x0a, 0x10, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x61, - 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, + 0x64, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xc4, 0x07, + 0x0a, 0x05, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x12, 0x28, 0x0a, 0x08, 0x67, 0x6f, 0x6f, 0x64, 0x73, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0d, 0x82, 0xb5, 0x18, 0x09, 0x0a, + 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x44, 0x52, 0x07, 0x67, 0x6f, 0x6f, 0x64, 0x73, 0x49, + 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x52, 0x04, 0x64, 0x65, 0x73, + 0x63, 0x12, 0x73, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x61, + 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x47, 0x6f, 0x6f, 0x64, 0x73, - 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xc0, 0x03, 0x0a, 0x08, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x79, 0x12, 0x1e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x30, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x05, 0x42, 0x11, 0x82, 0xb5, 0x18, 0x0d, 0x0a, 0x05, 0x50, 0x72, 0x69, - 0x63, 0x65, 0x20, 0x03, 0x7a, 0x02, 0x60, 0x01, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x6d, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6c, 0x69, 0x73, - 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, - 0x73, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x63, - 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x47, 0x6f, 0x6f, 0x64, 0x73, - 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0d, 0x82, 0xb5, 0x18, 0x09, 0x0a, 0x05, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x03, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x75, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, - 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, - 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, - 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x47, 0x6f, 0x6f, 0x64, - 0x73, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0f, 0x82, 0xb5, 0x18, - 0x0b, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x03, 0x52, 0x0b, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x3c, 0x0a, 0x0e, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0x82, 0xb5, - 0x18, 0x04, 0x0a, 0x02, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x03, 0x6e, 0x75, - 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0x82, 0xb5, 0x18, 0x05, 0x0a, 0x03, 0x4e, - 0x75, 0x6d, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x3a, 0x23, 0x82, 0xb5, 0x18, 0x1f, 0x0a, 0x12, 0x52, - 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, - 0x66, 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0xa8, 0x01, 0x02, 0x22, 0xa6, 0x02, 0x0a, - 0x10, 0x4a, 0x73, 0x6f, 0x6e, 0x55, 0x74, 0x69, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x3b, 0x0a, 0x0c, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, - 0x73, 0x74, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x52, 0x0b, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x37, - 0x0a, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, - 0x74, 0x63, 0x68, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x52, 0x09, 0x6c, 0x69, - 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x45, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x75, 0x6e, 0x69, - 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x55, 0x74, 0x69, 0x6c, 0x54, 0x65, - 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x1a, 0x55, - 0x0a, 0x0d, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x74, 0x63, - 0x68, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x87, 0x02, 0x0a, 0x1f, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x09, 0x69, 0x74, 0x65, - 0x6d, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x75, - 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x06, 0x82, 0xb5, - 0x18, 0x02, 0x20, 0x01, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x68, - 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x02, 0x49, 0x44, 0x7a, 0x02, 0x10, 0x01, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, - 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x0a, 0x04, 0x44, 0x65, - 0x73, 0x63, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x3a, 0x25, 0x82, 0xb5, 0x18, 0x21, 0x0a, 0x1f, - 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x56, 0x65, 0x72, - 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, - 0xc0, 0x06, 0x0a, 0x1c, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x71, - 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, - 0x12, 0x5e, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x65, - 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x69, 0x6e, 0x4d, - 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x1a, 0x06, 0x4d, - 0x61, 0x69, 0x6e, 0x49, 0x44, 0x20, 0x01, 0x52, 0x07, 0x6d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x70, - 0x1a, 0x67, 0x0a, 0x0c, 0x4d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x41, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x65, 0x72, - 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x69, 0x6e, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xb2, 0x04, 0x0a, 0x04, 0x4d, 0x61, - 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x07, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x06, 0x4d, 0x61, 0x69, 0x6e, 0x49, - 0x44, 0x52, 0x06, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x09, 0x6d, 0x61, 0x69, - 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x12, 0x82, 0xb5, - 0x18, 0x0e, 0x0a, 0x08, 0x4d, 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, 0x10, 0x01, - 0x52, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x6e, 0x0a, 0x0b, 0x6d, 0x61, - 0x69, 0x6e, 0x5f, 0x6b, 0x76, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x3a, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x74, 0x69, + 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x16, 0x82, 0xb5, 0x18, 0x12, 0x0a, 0x08, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x79, 0x1a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x20, 0x02, 0x52, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x79, 0x4d, 0x61, 0x70, 0x12, 0x2a, 0x0a, 0x08, 0x74, 0x61, 0x67, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x0f, 0x82, 0xb5, 0x18, 0x0b, 0x0a, 0x03, + 0x54, 0x61, 0x67, 0x20, 0x02, 0x7a, 0x02, 0x60, 0x01, 0x52, 0x07, 0x74, 0x61, 0x67, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x5b, 0x0a, 0x0a, 0x61, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, + 0x74, 0x2e, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, + 0x43, 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x2e, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x42, 0x0d, 0x82, 0xb5, 0x18, 0x09, 0x0a, 0x05, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x20, 0x02, 0x52, 0x09, 0x61, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x1a, + 0x70, 0x0a, 0x10, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, + 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x2e, 0x43, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0xc0, 0x03, 0x0a, 0x08, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x1e, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0x82, 0xb5, + 0x18, 0x06, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x30, + 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x05, 0x42, 0x11, 0x82, 0xb5, 0x18, 0x0d, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x20, + 0x03, 0x7a, 0x02, 0x60, 0x01, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x6d, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, + 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x2e, 0x43, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0d, 0x82, 0xb5, 0x18, 0x09, 0x0a, 0x05, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x20, 0x03, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x75, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, + 0x2e, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x2e, 0x43, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0f, 0x82, 0xb5, 0x18, 0x0b, 0x0a, 0x07, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x03, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x3c, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0x82, 0xb5, 0x18, 0x04, 0x0a, + 0x02, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0x82, 0xb5, 0x18, 0x05, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x52, + 0x03, 0x6e, 0x75, 0x6d, 0x3a, 0x23, 0x82, 0xb5, 0x18, 0x1f, 0x0a, 0x12, 0x52, 0x65, 0x63, 0x75, + 0x72, 0x73, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x10, 0x01, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0xa8, 0x01, 0x02, 0x22, 0xa6, 0x02, 0x0a, 0x10, 0x4a, 0x73, + 0x6f, 0x6e, 0x55, 0x74, 0x69, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, + 0x0a, 0x0c, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, + 0x50, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x52, 0x0b, + 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x37, 0x0a, 0x0a, 0x6c, + 0x69, 0x73, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, + 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x12, 0x45, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, + 0x73, 0x74, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x55, 0x74, 0x69, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x1a, 0x55, 0x0a, 0x0d, 0x4d, + 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, + 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x87, 0x02, 0x0a, 0x1f, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x49, 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x75, 0x6e, 0x69, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x49, 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x06, 0x82, 0xb5, 0x18, 0x02, 0x20, + 0x01, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x68, 0x0a, 0x04, 0x49, + 0x74, 0x65, 0x6d, 0x12, 0x1c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x02, 0x49, 0x44, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x22, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, 0x10, 0x01, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x52, + 0x04, 0x64, 0x65, 0x73, 0x63, 0x3a, 0x25, 0x82, 0xb5, 0x18, 0x21, 0x0a, 0x1f, 0x55, 0x6e, 0x69, + 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, + 0x61, 0x6c, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xc0, 0x06, 0x0a, + 0x1c, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x5e, 0x0a, + 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x69, 0x6e, 0x2e, 0x4d, 0x61, 0x69, - 0x6e, 0x4b, 0x76, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x12, 0x82, 0xb5, 0x18, - 0x0e, 0x0a, 0x06, 0x4d, 0x61, 0x69, 0x6e, 0x4b, 0x56, 0x20, 0x03, 0x7a, 0x02, 0x58, 0x01, 0x52, - 0x09, 0x6d, 0x61, 0x69, 0x6e, 0x4b, 0x76, 0x4d, 0x61, 0x70, 0x12, 0x5f, 0x0a, 0x07, 0x73, 0x75, - 0x62, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x75, 0x6e, - 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, - 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x69, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x4d, 0x61, 0x70, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0d, 0x82, 0xb5, 0x18, 0x09, 0x1a, 0x05, 0x53, 0x75, 0x62, 0x49, - 0x44, 0x20, 0x01, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4d, 0x61, 0x70, 0x1a, 0x3c, 0x0a, 0x0e, 0x4d, - 0x61, 0x69, 0x6e, 0x4b, 0x76, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6a, 0x0a, 0x0b, 0x53, 0x75, 0x62, - 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x75, 0x6e, 0x69, 0x74, - 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, 0x6e, 0x69, - 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, - 0x70, 0x2e, 0x4d, 0x61, 0x69, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x57, 0x0a, 0x03, 0x53, 0x75, 0x62, 0x12, 0x22, 0x0a, 0x06, - 0x73, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0b, 0x82, 0xb5, - 0x18, 0x07, 0x0a, 0x05, 0x53, 0x75, 0x62, 0x49, 0x44, 0x52, 0x05, 0x73, 0x75, 0x62, 0x49, 0x64, - 0x12, 0x2c, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x11, 0x82, 0xb5, 0x18, 0x0d, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x4e, 0x61, 0x6d, - 0x65, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x07, 0x73, 0x75, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x3a, 0x22, - 0x82, 0xb5, 0x18, 0x1e, 0x0a, 0x1c, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, 0x6e, - 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, - 0x61, 0x70, 0x22, 0x83, 0x02, 0x0a, 0x1d, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, - 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x69, 0x73, - 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, + 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x70, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x1a, 0x06, 0x4d, 0x61, 0x69, 0x6e, + 0x49, 0x44, 0x20, 0x01, 0x52, 0x07, 0x6d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x70, 0x1a, 0x67, 0x0a, + 0x0c, 0x4d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x41, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, + 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, + 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x69, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xb2, 0x04, 0x0a, 0x04, 0x4d, 0x61, 0x69, 0x6e, 0x12, + 0x25, 0x0a, 0x07, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x06, 0x4d, 0x61, 0x69, 0x6e, 0x49, 0x44, 0x52, 0x06, + 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x09, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x12, 0x82, 0xb5, 0x18, 0x0e, 0x0a, + 0x08, 0x4d, 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x08, 0x6d, + 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x6e, 0x0a, 0x0b, 0x6d, 0x61, 0x69, 0x6e, 0x5f, + 0x6b, 0x76, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x75, + 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, + 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x69, 0x6e, 0x2e, 0x4d, 0x61, 0x69, 0x6e, 0x4b, 0x76, + 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x12, 0x82, 0xb5, 0x18, 0x0e, 0x0a, 0x06, + 0x4d, 0x61, 0x69, 0x6e, 0x4b, 0x56, 0x20, 0x03, 0x7a, 0x02, 0x58, 0x01, 0x52, 0x09, 0x6d, 0x61, + 0x69, 0x6e, 0x4b, 0x76, 0x4d, 0x61, 0x70, 0x12, 0x5f, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x5f, 0x6d, + 0x61, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x71, + 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, + 0x2e, 0x4d, 0x61, 0x69, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x0d, 0x82, 0xb5, 0x18, 0x09, 0x1a, 0x05, 0x53, 0x75, 0x62, 0x49, 0x44, 0x20, 0x01, + 0x52, 0x06, 0x73, 0x75, 0x62, 0x4d, 0x61, 0x70, 0x1a, 0x3c, 0x0a, 0x0e, 0x4d, 0x61, 0x69, 0x6e, + 0x4b, 0x76, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6a, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x4d, 0x61, 0x70, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, + 0x74, 0x2e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x4d, + 0x61, 0x69, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x57, 0x0a, 0x03, 0x53, 0x75, 0x62, 0x12, 0x22, 0x0a, 0x06, 0x73, 0x75, 0x62, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, + 0x05, 0x53, 0x75, 0x62, 0x49, 0x44, 0x52, 0x05, 0x73, 0x75, 0x62, 0x49, 0x64, 0x12, 0x2c, 0x0a, + 0x08, 0x73, 0x75, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x11, 0x82, 0xb5, 0x18, 0x0d, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, + 0x10, 0x01, 0x52, 0x07, 0x73, 0x75, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x3a, 0x22, 0x82, 0xb5, 0x18, + 0x1e, 0x0a, 0x1c, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x71, 0x75, + 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x22, + 0x83, 0x02, 0x0a, 0x1d, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, + 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x56, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, + 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x49, 0x74, + 0x65, 0x6d, 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, + 0x08, 0x69, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x65, 0x0a, 0x04, 0x49, 0x74, 0x65, + 0x6d, 0x12, 0x1c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0c, 0x82, + 0xb5, 0x18, 0x08, 0x0a, 0x02, 0x49, 0x44, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x22, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, + 0xb5, 0x18, 0x0a, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x42, 0x09, 0x82, 0xb5, 0x18, 0x05, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x52, 0x03, 0x6e, 0x75, 0x6d, + 0x3a, 0x23, 0x82, 0xb5, 0x18, 0x1f, 0x0a, 0x1d, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x9b, 0x12, 0x0a, 0x1c, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x66, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, - 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, - 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, 0x49, 0x74, 0x65, - 0x6d, 0x73, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x65, 0x0a, 0x04, - 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x02, 0x49, 0x44, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x22, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, 0x10, 0x01, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x42, 0x09, 0x82, 0xb5, 0x18, 0x05, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x52, 0x03, - 0x6e, 0x75, 0x6d, 0x3a, 0x23, 0x82, 0xb5, 0x18, 0x1f, 0x0a, 0x1d, 0x44, 0x6f, 0x63, 0x75, 0x6d, - 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x9b, 0x12, 0x0a, 0x1c, 0x44, 0x6f, 0x63, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x66, 0x0a, 0x07, 0x63, 0x68, 0x61, - 0x70, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x75, 0x6e, 0x69, - 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, - 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, - 0x61, 0x70, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, - 0x17, 0x82, 0xb5, 0x18, 0x13, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x1a, 0x04, - 0x40, 0x6b, 0x65, 0x79, 0x7a, 0x02, 0x58, 0x01, 0x52, 0x07, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, - 0x72, 0x12, 0x69, 0x0a, 0x0a, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x53, 0x63, - 0x61, 0x6c, 0x61, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x13, 0x82, 0xb5, - 0x18, 0x0f, 0x0a, 0x09, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x4d, 0x61, 0x70, 0x7a, 0x02, 0x58, - 0x01, 0x52, 0x09, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x4d, 0x61, 0x70, 0x12, 0x6b, 0x0a, 0x0a, - 0x69, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x35, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, - 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x15, 0x82, 0xb5, 0x18, 0x11, 0x0a, 0x09, 0x49, - 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x20, 0x03, 0x7a, 0x02, 0x58, 0x01, 0x52, 0x09, - 0x69, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x77, 0x0a, 0x0c, 0x63, 0x68, 0x61, - 0x70, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x37, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, - 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, - 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x1b, 0x82, 0xb5, 0x18, 0x17, 0x0a, 0x0b, - 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x04, 0x40, 0x6b, 0x65, - 0x79, 0x7a, 0x02, 0x58, 0x01, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, 0x6e, - 0x66, 0x6f, 0x1a, 0x6a, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x44, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, - 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x43, 0x68, 0x61, 0x70, - 0x74, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x80, - 0x03, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x04, 0x40, - 0x6b, 0x65, 0x79, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, - 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x6a, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x3b, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, - 0x72, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x13, - 0x82, 0xb5, 0x18, 0x0f, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x04, 0x40, - 0x6b, 0x65, 0x79, 0x52, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x72, 0x0a, 0x0c, - 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, + 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x17, 0x82, 0xb5, + 0x18, 0x13, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x1a, 0x04, 0x40, 0x6b, 0x65, + 0x79, 0x7a, 0x02, 0x58, 0x01, 0x52, 0x07, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x12, 0x69, + 0x0a, 0x0a, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, + 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, + 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x13, 0x82, 0xb5, 0x18, 0x0f, 0x0a, + 0x09, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x4d, 0x61, 0x70, 0x7a, 0x02, 0x58, 0x01, 0x52, 0x09, + 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x4d, 0x61, 0x70, 0x12, 0x6b, 0x0a, 0x0a, 0x69, 0x6e, 0x63, + 0x65, 0x6c, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x2e, 0x53, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0x4f, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x04, - 0x40, 0x6b, 0x65, 0x79, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, - 0x0a, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x1a, 0x3c, 0x0a, 0x0e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x3c, 0x0a, 0x0e, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x72, 0x0a, - 0x10, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, - 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, - 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0xbe, 0x08, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x20, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, - 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x04, 0x40, 0x6b, 0x65, 0x79, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, 0x10, - 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x72, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, - 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, - 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, - 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x17, 0x82, 0xb5, 0x18, 0x13, 0x0a, - 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x04, 0x40, 0x6b, 0x65, 0x79, 0x7a, 0x02, - 0x58, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x76, 0x0a, 0x0c, 0x53, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x50, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x75, + 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x42, 0x15, 0x82, 0xb5, 0x18, 0x11, 0x0a, 0x09, 0x49, 0x6e, 0x63, 0x65, + 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x20, 0x03, 0x7a, 0x02, 0x58, 0x01, 0x52, 0x09, 0x69, 0x6e, 0x63, + 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x77, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, + 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x1a, 0xfc, 0x05, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x20, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, - 0x18, 0x0a, 0x0a, 0x04, 0x40, 0x6b, 0x65, 0x79, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x22, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, 0x10, 0x01, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x7a, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, - 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x43, - 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, - 0x17, 0x82, 0xb5, 0x18, 0x13, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x04, - 0x40, 0x6b, 0x65, 0x79, 0x7a, 0x02, 0x58, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x1a, 0x7e, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x58, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, - 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, - 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0xae, 0x03, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, - 0x0a, 0x04, 0x40, 0x6b, 0x65, 0x79, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x22, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, - 0xb5, 0x18, 0x0a, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4f, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x1b, 0x82, 0xb5, 0x18, 0x17, 0x0a, 0x0b, 0x43, 0x68, 0x61, + 0x70, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x04, 0x40, 0x6b, 0x65, 0x79, 0x7a, 0x02, + 0x58, 0x01, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x1a, + 0x6a, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x44, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2e, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x80, 0x03, 0x0a, 0x07, + 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x04, 0x40, 0x6b, 0x65, 0x79, + 0x7a, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x6a, 0x0a, + 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, + 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x2e, 0x53, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x13, 0x82, 0xb5, 0x18, + 0x0f, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x04, 0x40, 0x6b, 0x65, 0x79, + 0x52, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x72, 0x0a, 0x0c, 0x53, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x75, 0x6e, 0x69, + 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, + 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, + 0x61, 0x70, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4f, 0x0a, + 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x04, 0x40, 0x6b, 0x65, + 0x79, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x3c, + 0x0a, 0x0e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, + 0x49, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x72, 0x0a, 0x10, 0x43, 0x68, + 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x32, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xbe, + 0x08, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, + 0x0a, 0x0a, 0x04, 0x40, 0x6b, 0x65, 0x79, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x22, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, + 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x72, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x17, 0x82, 0xb5, 0x18, 0x13, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x04, 0x40, 0x6b, 0x65, 0x79, 0x7a, 0x02, 0x58, 0x01, 0x52, - 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x86, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x60, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x75, 0x6e, 0x69, - 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, - 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, - 0x61, 0x70, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x4f, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x03, + 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x76, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x50, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x75, 0x6e, 0x69, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, + 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, + 0x70, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0xfc, 0x05, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x04, 0x40, 0x6b, 0x65, 0x79, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x3a, 0x22, 0x82, 0xb5, 0x18, 0x1e, 0x0a, 0x1c, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x22, 0x8b, 0x02, 0x0a, 0x21, 0x53, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, - 0x61, 0x6c, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x55, 0x0a, 0x09, - 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x30, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, - 0x61, 0x6c, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, - 0x6d, 0x42, 0x06, 0x82, 0xb5, 0x18, 0x02, 0x20, 0x01, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x4c, - 0x69, 0x73, 0x74, 0x1a, 0x66, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1c, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x02, 0x49, - 0x44, 0x7a, 0x02, 0x20, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x0a, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x03, 0x6e, 0x75, 0x6d, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x03, 0x4e, 0x75, - 0x6d, 0x7a, 0x03, 0x20, 0xb9, 0x60, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x3a, 0x27, 0x82, 0xb5, 0x18, - 0x23, 0x0a, 0x21, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x49, 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x4c, 0x69, 0x73, 0x74, 0x22, 0xf8, 0x03, 0x0a, 0x1e, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x65, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x4b, 0x65, - 0x79, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x5f, - 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x75, 0x6e, 0x69, - 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4b, 0x65, - 0x79, 0x49, 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x4b, 0x65, 0x79, 0x65, 0x64, - 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x1a, - 0x02, 0x49, 0x44, 0x20, 0x01, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x1a, - 0xd7, 0x02, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x6d, 0x65, 0x12, 0x7a, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, + 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x43, 0x68, 0x61, 0x70, + 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x17, 0x82, 0xb5, + 0x18, 0x13, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x04, 0x40, 0x6b, 0x65, + 0x79, 0x7a, 0x02, 0x58, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x7e, + 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x58, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x42, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, + 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xae, + 0x03, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x04, 0x40, + 0x6b, 0x65, 0x79, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, + 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x82, 0x01, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x4f, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, + 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x43, 0x68, 0x61, 0x70, 0x74, + 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x42, 0x17, 0x82, 0xb5, 0x18, 0x13, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x1a, 0x04, 0x40, 0x6b, 0x65, 0x79, 0x7a, 0x02, 0x58, 0x01, 0x52, 0x07, 0x73, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x86, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x60, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, + 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, + 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, + 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4f, + 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x04, 0x40, 0x6b, + 0x65, 0x79, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a, + 0x22, 0x82, 0xb5, 0x18, 0x1e, 0x0a, 0x1c, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x55, + 0x6e, 0x69, 0x71, 0x75, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x4d, 0x61, 0x70, 0x22, 0x8b, 0x02, 0x0a, 0x21, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x55, 0x0a, 0x09, 0x69, 0x74, 0x65, + 0x6d, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x75, + 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x06, + 0x82, 0xb5, 0x18, 0x02, 0x20, 0x01, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x73, 0x74, + 0x1a, 0x66, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x02, 0x49, 0x44, 0x7a, 0x02, - 0x20, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x65, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, - 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, - 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x49, - 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x4b, 0x65, 0x79, 0x65, 0x64, 0x4c, 0x69, - 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x70, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x1a, 0x06, 0x50, 0x72, 0x6f, 0x70, - 0x49, 0x44, 0x20, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x70, 0x1a, 0x6e, 0x0a, - 0x0c, 0x50, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, - 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x65, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x4b, - 0x65, 0x79, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x50, 0x72, - 0x6f, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5a, 0x0a, - 0x04, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x25, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x06, 0x50, 0x72, - 0x6f, 0x70, 0x49, 0x44, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x09, - 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x52, - 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x3a, 0x24, 0x82, 0xb5, 0x18, 0x20, 0x0a, - 0x1e, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x56, 0x65, - 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x4b, 0x65, 0x79, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, - 0xf2, 0x04, 0x0a, 0x1e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, - 0x61, 0x70, 0x12, 0x60, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, + 0x20, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x7a, 0x03, + 0x20, 0xb9, 0x60, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x3a, 0x27, 0x82, 0xb5, 0x18, 0x23, 0x0a, 0x21, + 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x56, + 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, + 0x74, 0x22, 0xf8, 0x03, 0x0a, 0x1e, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4b, 0x65, + 0x79, 0x49, 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x4b, 0x65, 0x79, 0x65, 0x64, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, + 0x73, 0x74, 0x2e, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x49, 0x6e, + 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x4b, 0x65, 0x79, 0x65, 0x64, 0x4c, 0x69, 0x73, + 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x1a, 0x02, 0x49, 0x44, + 0x20, 0x01, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0xd7, 0x02, 0x0a, + 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x02, 0x49, 0x44, 0x7a, 0x02, 0x20, 0x01, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x65, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, + 0x2e, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x56, 0x65, + 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x4b, 0x65, 0x79, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x2e, + 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x1a, 0x06, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x44, 0x20, + 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x70, 0x1a, 0x6e, 0x0a, 0x0c, 0x50, 0x72, + 0x6f, 0x70, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x75, 0x6e, + 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4b, + 0x65, 0x79, 0x49, 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x4b, 0x65, 0x79, 0x65, + 0x64, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5a, 0x0a, 0x04, 0x50, 0x72, + 0x6f, 0x70, 0x12, 0x25, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x06, 0x50, 0x72, 0x6f, 0x70, 0x49, + 0x44, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x09, 0x70, 0x72, 0x6f, + 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, + 0x18, 0x0a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x08, 0x70, 0x72, + 0x6f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x3a, 0x24, 0x82, 0xb5, 0x18, 0x20, 0x0a, 0x1e, 0x53, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, + 0x63, 0x61, 0x6c, 0x4b, 0x65, 0x79, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xf2, 0x04, 0x0a, + 0x1e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x12, + 0x60, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x35, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x65, 0x72, + 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x69, 0x6e, + 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x1a, 0x06, + 0x4d, 0x61, 0x69, 0x6e, 0x49, 0x44, 0x20, 0x01, 0x52, 0x07, 0x6d, 0x61, 0x69, 0x6e, 0x4d, 0x61, + 0x70, 0x1a, 0x69, 0x0a, 0x0c, 0x4d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x65, + 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x69, + 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xdc, 0x02, 0x0a, + 0x04, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x2a, 0x0a, 0x07, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x11, 0x82, 0xb5, 0x18, 0x0d, 0x0a, 0x06, 0x4d, 0x61, + 0x69, 0x6e, 0x49, 0x44, 0x7a, 0x03, 0x20, 0xe9, 0x07, 0x52, 0x06, 0x6d, 0x61, 0x69, 0x6e, 0x49, + 0x64, 0x12, 0x61, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x65, + 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x69, + 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0d, 0x82, + 0xb5, 0x18, 0x09, 0x1a, 0x05, 0x53, 0x75, 0x62, 0x49, 0x44, 0x20, 0x01, 0x52, 0x06, 0x73, 0x75, + 0x62, 0x4d, 0x61, 0x70, 0x1a, 0x6c, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x4d, 0x61, 0x70, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x4d, - 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0e, 0x82, 0xb5, 0x18, - 0x0a, 0x1a, 0x06, 0x4d, 0x61, 0x69, 0x6e, 0x49, 0x44, 0x20, 0x01, 0x52, 0x07, 0x6d, 0x61, 0x69, - 0x6e, 0x4d, 0x61, 0x70, 0x1a, 0x69, 0x0a, 0x0c, 0x4d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x70, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x2e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, - 0x4d, 0x61, 0x69, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0xdc, 0x02, 0x0a, 0x04, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x2a, 0x0a, 0x07, 0x6d, 0x61, 0x69, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x11, 0x82, 0xb5, 0x18, 0x0d, 0x0a, - 0x06, 0x4d, 0x61, 0x69, 0x6e, 0x49, 0x44, 0x7a, 0x03, 0x20, 0xe9, 0x07, 0x52, 0x06, 0x6d, 0x61, - 0x69, 0x6e, 0x49, 0x64, 0x12, 0x61, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x5f, 0x6d, 0x61, 0x70, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x2e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, - 0x4d, 0x61, 0x69, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x42, 0x0d, 0x82, 0xb5, 0x18, 0x09, 0x1a, 0x05, 0x53, 0x75, 0x62, 0x49, 0x44, 0x20, 0x01, 0x52, - 0x06, 0x73, 0x75, 0x62, 0x4d, 0x61, 0x70, 0x1a, 0x6c, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x4d, 0x61, - 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, - 0x73, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x71, 0x75, 0x65, + 0x61, 0x69, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x57, 0x0a, 0x03, 0x53, 0x75, 0x62, 0x12, 0x26, 0x0a, 0x06, 0x73, 0x75, 0x62, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0f, 0x82, 0xb5, 0x18, 0x0b, 0x0a, + 0x05, 0x53, 0x75, 0x62, 0x49, 0x44, 0x7a, 0x02, 0x20, 0x01, 0x52, 0x05, 0x73, 0x75, 0x62, 0x49, + 0x64, 0x12, 0x28, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x0d, 0x82, 0xb5, 0x18, 0x09, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x4e, 0x61, + 0x6d, 0x65, 0x52, 0x07, 0x73, 0x75, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x3a, 0x24, 0x82, 0xb5, 0x18, + 0x20, 0x0a, 0x1e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x61, - 0x70, 0x2e, 0x4d, 0x61, 0x69, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x57, 0x0a, 0x03, 0x53, 0x75, 0x62, 0x12, 0x26, 0x0a, 0x06, - 0x73, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0f, 0x82, 0xb5, - 0x18, 0x0b, 0x0a, 0x05, 0x53, 0x75, 0x62, 0x49, 0x44, 0x7a, 0x02, 0x20, 0x01, 0x52, 0x05, 0x73, - 0x75, 0x62, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0x82, 0xb5, 0x18, 0x09, 0x0a, 0x07, 0x53, 0x75, - 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x07, 0x73, 0x75, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x3a, 0x24, - 0x82, 0xb5, 0x18, 0x20, 0x0a, 0x1e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, + 0x70, 0x22, 0x86, 0x02, 0x0a, 0x1f, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x4d, 0x61, 0x70, 0x22, 0x86, 0x02, 0x0a, 0x1f, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x58, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x6d, - 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x75, 0x6e, - 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x53, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x0b, 0x82, 0xb5, 0x18, - 0x07, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x4c, 0x69, - 0x73, 0x74, 0x1a, 0x62, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1d, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0d, 0x82, 0xb5, 0x18, 0x09, 0x0a, 0x02, 0x49, 0x44, - 0x7a, 0x03, 0x20, 0xe9, 0x07, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x58, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, + 0x69, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x1a, + 0x62, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1d, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x0d, 0x82, 0xb5, 0x18, 0x09, 0x0a, 0x02, 0x49, 0x44, 0x7a, 0x03, 0x20, + 0xe9, 0x07, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x42, 0x09, 0x82, 0xb5, 0x18, 0x05, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x52, 0x03, + 0x6e, 0x75, 0x6d, 0x3a, 0x25, 0x82, 0xb5, 0x18, 0x21, 0x0a, 0x1f, 0x44, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xff, 0x01, 0x0a, 0x09, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x08, 0x68, 0x65, 0x72, 0x6f, + 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x75, 0x6e, 0x69, + 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x2e, + 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0a, 0x82, 0xb5, + 0x18, 0x06, 0x1a, 0x02, 0x49, 0x44, 0x20, 0x01, 0x52, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x4d, 0x61, + 0x70, 0x1a, 0x54, 0x0a, 0x0c, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x2e, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x04, 0x48, 0x65, 0x72, 0x6f, 0x12, + 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x08, 0x82, 0xb5, 0x18, + 0x04, 0x0a, 0x02, 0x49, 0x44, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x0a, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x03, 0x6e, 0x75, 0x6d, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0x82, 0xb5, 0x18, 0x05, 0x0a, 0x03, 0x4e, 0x75, - 0x6d, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x3a, 0x25, 0x82, 0xb5, 0x18, 0x21, 0x0a, 0x1f, 0x44, 0x6f, - 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xff, 0x01, - 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x08, 0x68, - 0x65, 0x72, 0x6f, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, - 0x73, 0x65, 0x2e, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, - 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x1a, 0x02, 0x49, 0x44, 0x20, 0x01, 0x52, 0x07, 0x68, 0x65, 0x72, - 0x6f, 0x4d, 0x61, 0x70, 0x1a, 0x54, 0x0a, 0x0c, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x61, 0x70, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x2e, 0x48, 0x65, 0x72, 0x6f, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x04, 0x48, 0x65, - 0x72, 0x6f, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x08, - 0x82, 0xb5, 0x18, 0x04, 0x0a, 0x02, 0x49, 0x44, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, - 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x11, 0x82, 0xb5, - 0x18, 0x0d, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x60, 0x01, 0x22, - 0xc5, 0x06, 0x0a, 0x0f, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, - 0x4d, 0x61, 0x70, 0x12, 0x53, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x6d, 0x61, - 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, + 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x11, 0x82, 0xb5, 0x18, 0x0d, 0x0a, + 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x60, 0x01, 0x22, 0xd9, 0x01, 0x0a, + 0x0d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x18, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0x82, 0xb5, 0x18, 0x04, + 0x0a, 0x02, 0x49, 0x44, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x11, 0xba, 0x48, 0x04, 0x72, 0x02, 0x18, 0x0a, 0x82, + 0xb5, 0x18, 0x06, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a, + 0x86, 0x01, 0xba, 0x48, 0x68, 0x1a, 0x66, 0x0a, 0x16, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x2e, 0x69, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x2a, 0x69, 0x64, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x76, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x69, + 0x73, 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x20, 0x74, 0x68, 0x69, + 0x73, 0x2e, 0x69, 0x64, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x75, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, + 0x69, 0x73, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x21, 0x3d, 0x20, 0x27, 0x27, 0x82, 0xb5, 0x18, + 0x17, 0x0a, 0x0d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, + 0x10, 0x01, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x22, 0xc5, 0x06, 0x0a, 0x0f, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x53, 0x0a, 0x0a, + 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, + 0x1a, 0x02, 0x49, 0x44, 0x20, 0x01, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, + 0x70, 0x1a, 0x5e, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x2e, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0xe5, 0x04, 0x0a, 0x06, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x08, 0x82, 0xb5, 0x18, 0x04, 0x0a, 0x02, + 0x49, 0x44, 0x52, 0x02, 0x69, 0x64, 0x12, 0x51, 0x0a, 0x06, 0x77, 0x65, 0x61, 0x70, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, + 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x61, + 0x70, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x57, 0x65, 0x61, 0x70, 0x6f, 0x6e, 0x42, + 0x10, 0x82, 0xb5, 0x18, 0x0c, 0x0a, 0x06, 0x57, 0x65, 0x61, 0x70, 0x6f, 0x6e, 0x7a, 0x02, 0x50, + 0x01, 0x52, 0x06, 0x77, 0x65, 0x61, 0x70, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x04, 0x69, 0x6e, 0x66, + 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, + 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, + 0x61, 0x70, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x10, + 0x82, 0xb5, 0x18, 0x0c, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x28, 0x02, 0x7a, 0x02, 0x50, 0x01, + 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x2d, 0x0a, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x42, 0x10, 0x82, 0xb5, 0x18, 0x0c, 0x0a, + 0x04, 0x48, 0x65, 0x72, 0x6f, 0x20, 0x03, 0x7a, 0x02, 0x50, 0x01, 0x52, 0x08, 0x68, 0x65, 0x72, + 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x5a, 0x0a, 0x08, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x6d, 0x61, + 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, - 0x61, 0x70, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x42, 0x0a, 0x82, 0xb5, 0x18, 0x06, 0x1a, 0x02, 0x49, 0x44, 0x20, 0x01, 0x52, 0x09, 0x70, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x1a, 0x5e, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x75, 0x6e, - 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, - 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xe5, 0x04, 0x0a, 0x06, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, - 0x08, 0x82, 0xb5, 0x18, 0x04, 0x0a, 0x02, 0x49, 0x44, 0x52, 0x02, 0x69, 0x64, 0x12, 0x51, 0x0a, - 0x06, 0x77, 0x65, 0x61, 0x70, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, - 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, - 0x57, 0x65, 0x61, 0x70, 0x6f, 0x6e, 0x42, 0x10, 0x82, 0xb5, 0x18, 0x0c, 0x0a, 0x06, 0x57, 0x65, - 0x61, 0x70, 0x6f, 0x6e, 0x7a, 0x02, 0x50, 0x01, 0x52, 0x06, 0x77, 0x65, 0x61, 0x70, 0x6f, 0x6e, - 0x12, 0x4b, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, - 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x10, 0x82, 0xb5, 0x18, 0x0c, 0x0a, 0x04, 0x49, 0x6e, 0x66, - 0x6f, 0x28, 0x02, 0x7a, 0x02, 0x50, 0x01, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x2d, 0x0a, - 0x09, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, - 0x42, 0x10, 0x82, 0xb5, 0x18, 0x0c, 0x0a, 0x04, 0x48, 0x65, 0x72, 0x6f, 0x20, 0x03, 0x7a, 0x02, - 0x50, 0x01, 0x52, 0x08, 0x68, 0x65, 0x72, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x5a, 0x0a, 0x08, - 0x61, 0x74, 0x74, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, - 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, - 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x2e, 0x41, 0x74, 0x74, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x10, 0x82, - 0xb5, 0x18, 0x0c, 0x0a, 0x04, 0x41, 0x74, 0x74, 0x72, 0x20, 0x03, 0x7a, 0x02, 0x50, 0x01, 0x52, - 0x07, 0x61, 0x74, 0x74, 0x72, 0x4d, 0x61, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, - 0x65, 0x73, 0x74, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x14, 0x82, 0xb5, 0x18, 0x10, - 0x0a, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x28, 0x02, 0x7a, 0x04, 0x40, 0x01, 0x50, 0x01, - 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x1a, 0x52, 0x0a, 0x06, 0x57, 0x65, 0x61, 0x70, - 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, 0x50, 0x01, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x06, 0x72, 0x61, 0x72, 0x69, 0x74, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x06, 0x52, 0x61, - 0x72, 0x69, 0x74, 0x79, 0x52, 0x06, 0x72, 0x61, 0x72, 0x69, 0x74, 0x79, 0x1a, 0x46, 0x0a, 0x04, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x42, 0x0b, 0x82, 0xb5, 0x18, 0x07, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1b, 0x0a, 0x03, 0x65, 0x78, 0x70, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0x82, 0xb5, 0x18, 0x05, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x52, - 0x03, 0x65, 0x78, 0x70, 0x1a, 0x3a, 0x0a, 0x0c, 0x41, 0x74, 0x74, 0x72, 0x4d, 0x61, 0x70, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x3a, 0x15, 0x82, 0xb5, 0x18, 0x11, 0x0a, 0x0f, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, - 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x42, 0x56, 0x82, 0xb5, 0x18, 0x19, 0x0a, 0x17, 0x75, - 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x55, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x23, 0x2a, 0x2e, 0x63, 0x73, 0x76, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x69, 0x6f, 0x2f, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x61, 0x75, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x61, 0x75, 0x70, 0x62, 0x2f, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x70, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x4d, 0x61, + 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x10, 0x82, 0xb5, 0x18, 0x0c, 0x0a, 0x04, 0x41, 0x74, + 0x74, 0x72, 0x20, 0x03, 0x7a, 0x02, 0x50, 0x01, 0x52, 0x07, 0x61, 0x74, 0x74, 0x72, 0x4d, 0x61, + 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x42, 0x14, 0x82, 0xb5, 0x18, 0x10, 0x0a, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x28, 0x02, 0x7a, 0x04, 0x40, 0x01, 0x50, 0x01, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x1a, 0x52, 0x0a, 0x06, 0x57, 0x65, 0x61, 0x70, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0x82, 0xb5, 0x18, 0x0a, 0x0a, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x7a, 0x02, 0x50, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x24, 0x0a, 0x06, 0x72, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, + 0x0c, 0x82, 0xb5, 0x18, 0x08, 0x0a, 0x06, 0x52, 0x61, 0x72, 0x69, 0x74, 0x79, 0x52, 0x06, 0x72, + 0x61, 0x72, 0x69, 0x74, 0x79, 0x1a, 0x46, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, + 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x0b, 0x82, 0xb5, + 0x18, 0x07, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x1b, 0x0a, 0x03, 0x65, 0x78, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0x82, + 0xb5, 0x18, 0x05, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x52, 0x03, 0x65, 0x78, 0x70, 0x1a, 0x3a, 0x0a, + 0x0c, 0x41, 0x74, 0x74, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x15, 0x82, 0xb5, 0x18, 0x11, 0x0a, + 0x0f, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x70, + 0x42, 0x56, 0x82, 0xb5, 0x18, 0x19, 0x0a, 0x17, 0x75, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, + 0x2f, 0x55, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x23, 0x2a, 0x2e, 0x63, 0x73, 0x76, 0x5a, + 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x61, 0x75, 0x69, 0x6f, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x75, 0x70, 0x62, 0x2f, 0x75, 0x6e, + 0x69, 0x74, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4209,7 +4280,7 @@ func file_tableau_protobuf_unittest_unittest_proto_rawDescGZIP() []byte { return file_tableau_protobuf_unittest_unittest_proto_rawDescData } -var file_tableau_protobuf_unittest_unittest_proto_msgTypes = make([]protoimpl.MessageInfo, 94) +var file_tableau_protobuf_unittest_unittest_proto_msgTypes = make([]protoimpl.MessageInfo, 95) var file_tableau_protobuf_unittest_unittest_proto_goTypes = []interface{}{ (*SimpleIncellMap)(nil), // 0: unittest.SimpleIncellMap (*IncellMap)(nil), // 1: unittest.IncellMap @@ -4233,179 +4304,180 @@ var file_tableau_protobuf_unittest_unittest_proto_goTypes = []interface{}{ (*VerticalSequenceFieldStructMap)(nil), // 19: unittest.VerticalSequenceFieldStructMap (*DocumentSequenceFieldStructList)(nil), // 20: unittest.DocumentSequenceFieldStructList (*Transpose)(nil), // 21: unittest.Transpose - (*FieldPresentMap)(nil), // 22: unittest.FieldPresentMap - nil, // 23: unittest.SimpleIncellMap.ItemMapEntry - nil, // 24: unittest.IncellMap.FruitMapEntry - (*IncellMap_Fruit)(nil), // 25: unittest.IncellMap.Fruit - nil, // 26: unittest.IncellMap.FlavorMapEntry - nil, // 27: unittest.IncellMap.ItemMapEntry - (*IncellMap_Item)(nil), // 28: unittest.IncellMap.Item - nil, // 29: unittest.ItemConf.ItemMapEntry - nil, // 30: unittest.MallConf.ShopMapEntry - (*MallConf_Shop)(nil), // 31: unittest.MallConf.Shop - nil, // 32: unittest.MallConf.Shop.GoodsMapEntry - (*MallConf_Shop_Goods)(nil), // 33: unittest.MallConf.Shop.Goods - nil, // 34: unittest.ActivityConf.ActivityMapEntry - (*ActivityConf_Activity)(nil), // 35: unittest.ActivityConf.Activity - nil, // 36: unittest.ActivityConf.Activity.ChapterMapEntry - (*ActivityConf_Activity_Chapter)(nil), // 37: unittest.ActivityConf.Activity.Chapter - (*ActivityConf_Activity_Chapter_Section)(nil), // 38: unittest.ActivityConf.Activity.Chapter.Section - nil, // 39: unittest.ActivityConf.Activity.Chapter.Section.RewardMapEntry - (*ActivityConf_Activity_Chapter_Section_Reward)(nil), // 40: unittest.ActivityConf.Activity.Chapter.Section.Reward - nil, // 41: unittest.RewardConf.RewardMapEntry - (*RewardConf_Reward)(nil), // 42: unittest.RewardConf.Reward - nil, // 43: unittest.RewardConf.Reward.ItemMapEntry - (*PatchMergeConf_Time)(nil), // 44: unittest.PatchMergeConf.Time - nil, // 45: unittest.PatchMergeConf.ItemMapEntry - nil, // 46: unittest.PatchMergeConf.ReplaceItemMapEntry - nil, // 47: unittest.RecursivePatchConf.ShopMapEntry - (*RecursivePatchConf_Shop)(nil), // 48: unittest.RecursivePatchConf.Shop - nil, // 49: unittest.RecursivePatchConf.Shop.GoodsMapEntry - (*RecursivePatchConf_Shop_Goods)(nil), // 50: unittest.RecursivePatchConf.Shop.Goods - nil, // 51: unittest.RecursivePatchConf.Shop.Goods.CurrencyMapEntry - (*RecursivePatchConf_Shop_Goods_Currency)(nil), // 52: unittest.RecursivePatchConf.Shop.Goods.Currency - (*RecursivePatchConf_Shop_Goods_Award)(nil), // 53: unittest.RecursivePatchConf.Shop.Goods.Award - nil, // 54: unittest.RecursivePatchConf.Shop.Goods.Currency.ValueListEntry - nil, // 55: unittest.RecursivePatchConf.Shop.Goods.Currency.MessageListEntry - nil, // 56: unittest.JsonUtilTestData.MapFieldEntry - (*UniqueFieldInVerticalStructList_Item)(nil), // 57: unittest.UniqueFieldInVerticalStructList.Item - nil, // 58: unittest.VerticalUniqueFieldStructMap.MainMapEntry - (*VerticalUniqueFieldStructMap_Main)(nil), // 59: unittest.VerticalUniqueFieldStructMap.Main - nil, // 60: unittest.VerticalUniqueFieldStructMap.Main.MainKvMapEntry - nil, // 61: unittest.VerticalUniqueFieldStructMap.Main.SubMapEntry - (*VerticalUniqueFieldStructMap_Main_Sub)(nil), // 62: unittest.VerticalUniqueFieldStructMap.Main.Sub - (*DocumentUniqueFieldStructList_Item)(nil), // 63: unittest.DocumentUniqueFieldStructList.Item - nil, // 64: unittest.DocumentUniqueFieldStructMap.ChapterEntry - (*DocumentUniqueFieldStructMap_Chapter)(nil), // 65: unittest.DocumentUniqueFieldStructMap.Chapter - nil, // 66: unittest.DocumentUniqueFieldStructMap.ScalarMapEntry - nil, // 67: unittest.DocumentUniqueFieldStructMap.IncellMapEntry - nil, // 68: unittest.DocumentUniqueFieldStructMap.ChapterInfoEntry - (*DocumentUniqueFieldStructMap_ChapterInfo)(nil), // 69: unittest.DocumentUniqueFieldStructMap.ChapterInfo - nil, // 70: unittest.DocumentUniqueFieldStructMap.Chapter.SectionEntry - (*DocumentUniqueFieldStructMap_Chapter_Section)(nil), // 71: unittest.DocumentUniqueFieldStructMap.Chapter.Section - nil, // 72: unittest.DocumentUniqueFieldStructMap.ChapterInfo.SectionEntry - (*DocumentUniqueFieldStructMap_ChapterInfo_Section)(nil), // 73: unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section - nil, // 74: unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.SectionEntry - (*DocumentUniqueFieldStructMap_ChapterInfo_Section_Section)(nil), // 75: unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.Section - nil, // 76: unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.Section.SectionEntry - (*DocumentUniqueFieldStructMap_ChapterInfo_Section_Section_Section)(nil), // 77: unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.Section.Section - (*SequenceFieldInVerticalStructList_Item)(nil), // 78: unittest.SequenceFieldInVerticalStructList.Item - (*SequenceKeyInVerticalKeyedList_Item)(nil), // 79: unittest.SequenceKeyInVerticalKeyedList.Item - nil, // 80: unittest.SequenceKeyInVerticalKeyedList.Item.PropMapEntry - (*SequenceKeyInVerticalKeyedList_Item_Prop)(nil), // 81: unittest.SequenceKeyInVerticalKeyedList.Item.Prop - nil, // 82: unittest.VerticalSequenceFieldStructMap.MainMapEntry - (*VerticalSequenceFieldStructMap_Main)(nil), // 83: unittest.VerticalSequenceFieldStructMap.Main - nil, // 84: unittest.VerticalSequenceFieldStructMap.Main.SubMapEntry - (*VerticalSequenceFieldStructMap_Main_Sub)(nil), // 85: unittest.VerticalSequenceFieldStructMap.Main.Sub - (*DocumentSequenceFieldStructList_Item)(nil), // 86: unittest.DocumentSequenceFieldStructList.Item - nil, // 87: unittest.Transpose.HeroMapEntry - (*Transpose_Hero)(nil), // 88: unittest.Transpose.Hero - nil, // 89: unittest.FieldPresentMap.PlayerMapEntry - (*FieldPresentMap_Player)(nil), // 90: unittest.FieldPresentMap.Player - (*FieldPresentMap_Player_Weapon)(nil), // 91: unittest.FieldPresentMap.Player.Weapon - (*FieldPresentMap_Player_Info)(nil), // 92: unittest.FieldPresentMap.Player.Info - nil, // 93: unittest.FieldPresentMap.Player.AttrMapEntry - (*Item)(nil), // 94: unittest.Item - (FruitFlavor)(0), // 95: unittest.FruitFlavor - (FruitType)(0), // 96: unittest.FruitType - (*timestamppb.Timestamp)(nil), // 97: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 98: google.protobuf.Duration - (*Target)(nil), // 99: unittest.Target + (*ValidatedConf)(nil), // 22: unittest.ValidatedConf + (*FieldPresentMap)(nil), // 23: unittest.FieldPresentMap + nil, // 24: unittest.SimpleIncellMap.ItemMapEntry + nil, // 25: unittest.IncellMap.FruitMapEntry + (*IncellMap_Fruit)(nil), // 26: unittest.IncellMap.Fruit + nil, // 27: unittest.IncellMap.FlavorMapEntry + nil, // 28: unittest.IncellMap.ItemMapEntry + (*IncellMap_Item)(nil), // 29: unittest.IncellMap.Item + nil, // 30: unittest.ItemConf.ItemMapEntry + nil, // 31: unittest.MallConf.ShopMapEntry + (*MallConf_Shop)(nil), // 32: unittest.MallConf.Shop + nil, // 33: unittest.MallConf.Shop.GoodsMapEntry + (*MallConf_Shop_Goods)(nil), // 34: unittest.MallConf.Shop.Goods + nil, // 35: unittest.ActivityConf.ActivityMapEntry + (*ActivityConf_Activity)(nil), // 36: unittest.ActivityConf.Activity + nil, // 37: unittest.ActivityConf.Activity.ChapterMapEntry + (*ActivityConf_Activity_Chapter)(nil), // 38: unittest.ActivityConf.Activity.Chapter + (*ActivityConf_Activity_Chapter_Section)(nil), // 39: unittest.ActivityConf.Activity.Chapter.Section + nil, // 40: unittest.ActivityConf.Activity.Chapter.Section.RewardMapEntry + (*ActivityConf_Activity_Chapter_Section_Reward)(nil), // 41: unittest.ActivityConf.Activity.Chapter.Section.Reward + nil, // 42: unittest.RewardConf.RewardMapEntry + (*RewardConf_Reward)(nil), // 43: unittest.RewardConf.Reward + nil, // 44: unittest.RewardConf.Reward.ItemMapEntry + (*PatchMergeConf_Time)(nil), // 45: unittest.PatchMergeConf.Time + nil, // 46: unittest.PatchMergeConf.ItemMapEntry + nil, // 47: unittest.PatchMergeConf.ReplaceItemMapEntry + nil, // 48: unittest.RecursivePatchConf.ShopMapEntry + (*RecursivePatchConf_Shop)(nil), // 49: unittest.RecursivePatchConf.Shop + nil, // 50: unittest.RecursivePatchConf.Shop.GoodsMapEntry + (*RecursivePatchConf_Shop_Goods)(nil), // 51: unittest.RecursivePatchConf.Shop.Goods + nil, // 52: unittest.RecursivePatchConf.Shop.Goods.CurrencyMapEntry + (*RecursivePatchConf_Shop_Goods_Currency)(nil), // 53: unittest.RecursivePatchConf.Shop.Goods.Currency + (*RecursivePatchConf_Shop_Goods_Award)(nil), // 54: unittest.RecursivePatchConf.Shop.Goods.Award + nil, // 55: unittest.RecursivePatchConf.Shop.Goods.Currency.ValueListEntry + nil, // 56: unittest.RecursivePatchConf.Shop.Goods.Currency.MessageListEntry + nil, // 57: unittest.JsonUtilTestData.MapFieldEntry + (*UniqueFieldInVerticalStructList_Item)(nil), // 58: unittest.UniqueFieldInVerticalStructList.Item + nil, // 59: unittest.VerticalUniqueFieldStructMap.MainMapEntry + (*VerticalUniqueFieldStructMap_Main)(nil), // 60: unittest.VerticalUniqueFieldStructMap.Main + nil, // 61: unittest.VerticalUniqueFieldStructMap.Main.MainKvMapEntry + nil, // 62: unittest.VerticalUniqueFieldStructMap.Main.SubMapEntry + (*VerticalUniqueFieldStructMap_Main_Sub)(nil), // 63: unittest.VerticalUniqueFieldStructMap.Main.Sub + (*DocumentUniqueFieldStructList_Item)(nil), // 64: unittest.DocumentUniqueFieldStructList.Item + nil, // 65: unittest.DocumentUniqueFieldStructMap.ChapterEntry + (*DocumentUniqueFieldStructMap_Chapter)(nil), // 66: unittest.DocumentUniqueFieldStructMap.Chapter + nil, // 67: unittest.DocumentUniqueFieldStructMap.ScalarMapEntry + nil, // 68: unittest.DocumentUniqueFieldStructMap.IncellMapEntry + nil, // 69: unittest.DocumentUniqueFieldStructMap.ChapterInfoEntry + (*DocumentUniqueFieldStructMap_ChapterInfo)(nil), // 70: unittest.DocumentUniqueFieldStructMap.ChapterInfo + nil, // 71: unittest.DocumentUniqueFieldStructMap.Chapter.SectionEntry + (*DocumentUniqueFieldStructMap_Chapter_Section)(nil), // 72: unittest.DocumentUniqueFieldStructMap.Chapter.Section + nil, // 73: unittest.DocumentUniqueFieldStructMap.ChapterInfo.SectionEntry + (*DocumentUniqueFieldStructMap_ChapterInfo_Section)(nil), // 74: unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section + nil, // 75: unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.SectionEntry + (*DocumentUniqueFieldStructMap_ChapterInfo_Section_Section)(nil), // 76: unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.Section + nil, // 77: unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.Section.SectionEntry + (*DocumentUniqueFieldStructMap_ChapterInfo_Section_Section_Section)(nil), // 78: unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.Section.Section + (*SequenceFieldInVerticalStructList_Item)(nil), // 79: unittest.SequenceFieldInVerticalStructList.Item + (*SequenceKeyInVerticalKeyedList_Item)(nil), // 80: unittest.SequenceKeyInVerticalKeyedList.Item + nil, // 81: unittest.SequenceKeyInVerticalKeyedList.Item.PropMapEntry + (*SequenceKeyInVerticalKeyedList_Item_Prop)(nil), // 82: unittest.SequenceKeyInVerticalKeyedList.Item.Prop + nil, // 83: unittest.VerticalSequenceFieldStructMap.MainMapEntry + (*VerticalSequenceFieldStructMap_Main)(nil), // 84: unittest.VerticalSequenceFieldStructMap.Main + nil, // 85: unittest.VerticalSequenceFieldStructMap.Main.SubMapEntry + (*VerticalSequenceFieldStructMap_Main_Sub)(nil), // 86: unittest.VerticalSequenceFieldStructMap.Main.Sub + (*DocumentSequenceFieldStructList_Item)(nil), // 87: unittest.DocumentSequenceFieldStructList.Item + nil, // 88: unittest.Transpose.HeroMapEntry + (*Transpose_Hero)(nil), // 89: unittest.Transpose.Hero + nil, // 90: unittest.FieldPresentMap.PlayerMapEntry + (*FieldPresentMap_Player)(nil), // 91: unittest.FieldPresentMap.Player + (*FieldPresentMap_Player_Weapon)(nil), // 92: unittest.FieldPresentMap.Player.Weapon + (*FieldPresentMap_Player_Info)(nil), // 93: unittest.FieldPresentMap.Player.Info + nil, // 94: unittest.FieldPresentMap.Player.AttrMapEntry + (*Item)(nil), // 95: unittest.Item + (FruitFlavor)(0), // 96: unittest.FruitFlavor + (FruitType)(0), // 97: unittest.FruitType + (*timestamppb.Timestamp)(nil), // 98: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 99: google.protobuf.Duration + (*Target)(nil), // 100: unittest.Target } var file_tableau_protobuf_unittest_unittest_proto_depIdxs = []int32{ - 23, // 0: unittest.SimpleIncellMap.item_map:type_name -> unittest.SimpleIncellMap.ItemMapEntry - 24, // 1: unittest.IncellMap.fruit_map:type_name -> unittest.IncellMap.FruitMapEntry - 26, // 2: unittest.IncellMap.flavor_map:type_name -> unittest.IncellMap.FlavorMapEntry - 27, // 3: unittest.IncellMap.item_map:type_name -> unittest.IncellMap.ItemMapEntry - 94, // 4: unittest.IncellStructList.item_list:type_name -> unittest.Item - 95, // 5: unittest.IncellList.flavor_list:type_name -> unittest.FruitFlavor - 94, // 6: unittest.IncellList.item_list:type_name -> unittest.Item - 29, // 7: unittest.ItemConf.item_map:type_name -> unittest.ItemConf.ItemMapEntry - 30, // 8: unittest.MallConf.shop_map:type_name -> unittest.MallConf.ShopMapEntry - 34, // 9: unittest.ActivityConf.activity_map:type_name -> unittest.ActivityConf.ActivityMapEntry - 41, // 10: unittest.RewardConf.reward_map:type_name -> unittest.RewardConf.RewardMapEntry - 44, // 11: unittest.PatchMergeConf.time:type_name -> unittest.PatchMergeConf.Time - 45, // 12: unittest.PatchMergeConf.item_map:type_name -> unittest.PatchMergeConf.ItemMapEntry - 46, // 13: unittest.PatchMergeConf.replace_item_map:type_name -> unittest.PatchMergeConf.ReplaceItemMapEntry - 47, // 14: unittest.RecursivePatchConf.shop_map:type_name -> unittest.RecursivePatchConf.ShopMapEntry - 10, // 15: unittest.JsonUtilTestData.normal_field:type_name -> unittest.PatchMergeConf - 10, // 16: unittest.JsonUtilTestData.list_field:type_name -> unittest.PatchMergeConf - 56, // 17: unittest.JsonUtilTestData.map_field:type_name -> unittest.JsonUtilTestData.MapFieldEntry - 57, // 18: unittest.UniqueFieldInVerticalStructList.item_list:type_name -> unittest.UniqueFieldInVerticalStructList.Item - 58, // 19: unittest.VerticalUniqueFieldStructMap.main_map:type_name -> unittest.VerticalUniqueFieldStructMap.MainMapEntry - 63, // 20: unittest.DocumentUniqueFieldStructList.item_list:type_name -> unittest.DocumentUniqueFieldStructList.Item - 64, // 21: unittest.DocumentUniqueFieldStructMap.chapter:type_name -> unittest.DocumentUniqueFieldStructMap.ChapterEntry - 66, // 22: unittest.DocumentUniqueFieldStructMap.scalar_map:type_name -> unittest.DocumentUniqueFieldStructMap.ScalarMapEntry - 67, // 23: unittest.DocumentUniqueFieldStructMap.incell_map:type_name -> unittest.DocumentUniqueFieldStructMap.IncellMapEntry - 68, // 24: unittest.DocumentUniqueFieldStructMap.chapter_info:type_name -> unittest.DocumentUniqueFieldStructMap.ChapterInfoEntry - 78, // 25: unittest.SequenceFieldInVerticalStructList.item_list:type_name -> unittest.SequenceFieldInVerticalStructList.Item - 79, // 26: unittest.SequenceKeyInVerticalKeyedList.item_list:type_name -> unittest.SequenceKeyInVerticalKeyedList.Item - 82, // 27: unittest.VerticalSequenceFieldStructMap.main_map:type_name -> unittest.VerticalSequenceFieldStructMap.MainMapEntry - 86, // 28: unittest.DocumentSequenceFieldStructList.item_list:type_name -> unittest.DocumentSequenceFieldStructList.Item - 87, // 29: unittest.Transpose.hero_map:type_name -> unittest.Transpose.HeroMapEntry - 89, // 30: unittest.FieldPresentMap.player_map:type_name -> unittest.FieldPresentMap.PlayerMapEntry - 25, // 31: unittest.IncellMap.FruitMapEntry.value:type_name -> unittest.IncellMap.Fruit - 96, // 32: unittest.IncellMap.Fruit.key:type_name -> unittest.FruitType - 95, // 33: unittest.IncellMap.FlavorMapEntry.value:type_name -> unittest.FruitFlavor - 28, // 34: unittest.IncellMap.ItemMapEntry.value:type_name -> unittest.IncellMap.Item - 96, // 35: unittest.IncellMap.Item.key:type_name -> unittest.FruitType - 95, // 36: unittest.IncellMap.Item.value:type_name -> unittest.FruitFlavor - 94, // 37: unittest.ItemConf.ItemMapEntry.value:type_name -> unittest.Item - 31, // 38: unittest.MallConf.ShopMapEntry.value:type_name -> unittest.MallConf.Shop - 32, // 39: unittest.MallConf.Shop.goods_map:type_name -> unittest.MallConf.Shop.GoodsMapEntry - 33, // 40: unittest.MallConf.Shop.GoodsMapEntry.value:type_name -> unittest.MallConf.Shop.Goods - 35, // 41: unittest.ActivityConf.ActivityMapEntry.value:type_name -> unittest.ActivityConf.Activity - 36, // 42: unittest.ActivityConf.Activity.chapter_map:type_name -> unittest.ActivityConf.Activity.ChapterMapEntry - 37, // 43: unittest.ActivityConf.Activity.ChapterMapEntry.value:type_name -> unittest.ActivityConf.Activity.Chapter - 38, // 44: unittest.ActivityConf.Activity.Chapter.section_list:type_name -> unittest.ActivityConf.Activity.Chapter.Section - 39, // 45: unittest.ActivityConf.Activity.Chapter.Section.reward_map:type_name -> unittest.ActivityConf.Activity.Chapter.Section.RewardMapEntry - 40, // 46: unittest.ActivityConf.Activity.Chapter.Section.RewardMapEntry.value:type_name -> unittest.ActivityConf.Activity.Chapter.Section.Reward - 42, // 47: unittest.RewardConf.RewardMapEntry.value:type_name -> unittest.RewardConf.Reward - 43, // 48: unittest.RewardConf.Reward.item_map:type_name -> unittest.RewardConf.Reward.ItemMapEntry - 94, // 49: unittest.RewardConf.Reward.ItemMapEntry.value:type_name -> unittest.Item - 97, // 50: unittest.PatchMergeConf.Time.start:type_name -> google.protobuf.Timestamp - 98, // 51: unittest.PatchMergeConf.Time.expiry:type_name -> google.protobuf.Duration - 94, // 52: unittest.PatchMergeConf.ItemMapEntry.value:type_name -> unittest.Item - 94, // 53: unittest.PatchMergeConf.ReplaceItemMapEntry.value:type_name -> unittest.Item - 48, // 54: unittest.RecursivePatchConf.ShopMapEntry.value:type_name -> unittest.RecursivePatchConf.Shop - 49, // 55: unittest.RecursivePatchConf.Shop.goods_map:type_name -> unittest.RecursivePatchConf.Shop.GoodsMapEntry - 50, // 56: unittest.RecursivePatchConf.Shop.GoodsMapEntry.value:type_name -> unittest.RecursivePatchConf.Shop.Goods - 51, // 57: unittest.RecursivePatchConf.Shop.Goods.currency_map:type_name -> unittest.RecursivePatchConf.Shop.Goods.CurrencyMapEntry - 53, // 58: unittest.RecursivePatchConf.Shop.Goods.award_list:type_name -> unittest.RecursivePatchConf.Shop.Goods.Award - 52, // 59: unittest.RecursivePatchConf.Shop.Goods.CurrencyMapEntry.value:type_name -> unittest.RecursivePatchConf.Shop.Goods.Currency - 54, // 60: unittest.RecursivePatchConf.Shop.Goods.Currency.value_list:type_name -> unittest.RecursivePatchConf.Shop.Goods.Currency.ValueListEntry - 55, // 61: unittest.RecursivePatchConf.Shop.Goods.Currency.message_list:type_name -> unittest.RecursivePatchConf.Shop.Goods.Currency.MessageListEntry - 10, // 62: unittest.JsonUtilTestData.MapFieldEntry.value:type_name -> unittest.PatchMergeConf - 59, // 63: unittest.VerticalUniqueFieldStructMap.MainMapEntry.value:type_name -> unittest.VerticalUniqueFieldStructMap.Main - 60, // 64: unittest.VerticalUniqueFieldStructMap.Main.main_kv_map:type_name -> unittest.VerticalUniqueFieldStructMap.Main.MainKvMapEntry - 61, // 65: unittest.VerticalUniqueFieldStructMap.Main.sub_map:type_name -> unittest.VerticalUniqueFieldStructMap.Main.SubMapEntry - 62, // 66: unittest.VerticalUniqueFieldStructMap.Main.SubMapEntry.value:type_name -> unittest.VerticalUniqueFieldStructMap.Main.Sub - 65, // 67: unittest.DocumentUniqueFieldStructMap.ChapterEntry.value:type_name -> unittest.DocumentUniqueFieldStructMap.Chapter - 70, // 68: unittest.DocumentUniqueFieldStructMap.Chapter.section:type_name -> unittest.DocumentUniqueFieldStructMap.Chapter.SectionEntry - 69, // 69: unittest.DocumentUniqueFieldStructMap.ChapterInfoEntry.value:type_name -> unittest.DocumentUniqueFieldStructMap.ChapterInfo - 72, // 70: unittest.DocumentUniqueFieldStructMap.ChapterInfo.section:type_name -> unittest.DocumentUniqueFieldStructMap.ChapterInfo.SectionEntry - 71, // 71: unittest.DocumentUniqueFieldStructMap.Chapter.SectionEntry.value:type_name -> unittest.DocumentUniqueFieldStructMap.Chapter.Section - 73, // 72: unittest.DocumentUniqueFieldStructMap.ChapterInfo.SectionEntry.value:type_name -> unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section - 74, // 73: unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.section:type_name -> unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.SectionEntry - 75, // 74: unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.SectionEntry.value:type_name -> unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.Section - 76, // 75: unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.Section.section:type_name -> unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.Section.SectionEntry - 77, // 76: unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.Section.SectionEntry.value:type_name -> unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.Section.Section - 80, // 77: unittest.SequenceKeyInVerticalKeyedList.Item.prop_map:type_name -> unittest.SequenceKeyInVerticalKeyedList.Item.PropMapEntry - 81, // 78: unittest.SequenceKeyInVerticalKeyedList.Item.PropMapEntry.value:type_name -> unittest.SequenceKeyInVerticalKeyedList.Item.Prop - 83, // 79: unittest.VerticalSequenceFieldStructMap.MainMapEntry.value:type_name -> unittest.VerticalSequenceFieldStructMap.Main - 84, // 80: unittest.VerticalSequenceFieldStructMap.Main.sub_map:type_name -> unittest.VerticalSequenceFieldStructMap.Main.SubMapEntry - 85, // 81: unittest.VerticalSequenceFieldStructMap.Main.SubMapEntry.value:type_name -> unittest.VerticalSequenceFieldStructMap.Main.Sub - 88, // 82: unittest.Transpose.HeroMapEntry.value:type_name -> unittest.Transpose.Hero - 90, // 83: unittest.FieldPresentMap.PlayerMapEntry.value:type_name -> unittest.FieldPresentMap.Player - 91, // 84: unittest.FieldPresentMap.Player.weapon:type_name -> unittest.FieldPresentMap.Player.Weapon - 92, // 85: unittest.FieldPresentMap.Player.info:type_name -> unittest.FieldPresentMap.Player.Info - 93, // 86: unittest.FieldPresentMap.Player.attr_map:type_name -> unittest.FieldPresentMap.Player.AttrMapEntry - 99, // 87: unittest.FieldPresentMap.Player.target:type_name -> unittest.Target - 88, // [88:88] is the sub-list for method output_type - 88, // [88:88] is the sub-list for method input_type - 88, // [88:88] is the sub-list for extension type_name - 88, // [88:88] is the sub-list for extension extendee - 0, // [0:88] is the sub-list for field type_name + 24, // 0: unittest.SimpleIncellMap.item_map:type_name -> unittest.SimpleIncellMap.ItemMapEntry + 25, // 1: unittest.IncellMap.fruit_map:type_name -> unittest.IncellMap.FruitMapEntry + 27, // 2: unittest.IncellMap.flavor_map:type_name -> unittest.IncellMap.FlavorMapEntry + 28, // 3: unittest.IncellMap.item_map:type_name -> unittest.IncellMap.ItemMapEntry + 95, // 4: unittest.IncellStructList.item_list:type_name -> unittest.Item + 96, // 5: unittest.IncellList.flavor_list:type_name -> unittest.FruitFlavor + 95, // 6: unittest.IncellList.item_list:type_name -> unittest.Item + 30, // 7: unittest.ItemConf.item_map:type_name -> unittest.ItemConf.ItemMapEntry + 31, // 8: unittest.MallConf.shop_map:type_name -> unittest.MallConf.ShopMapEntry + 35, // 9: unittest.ActivityConf.activity_map:type_name -> unittest.ActivityConf.ActivityMapEntry + 42, // 10: unittest.RewardConf.reward_map:type_name -> unittest.RewardConf.RewardMapEntry + 45, // 11: unittest.PatchMergeConf.time:type_name -> unittest.PatchMergeConf.Time + 46, // 12: unittest.PatchMergeConf.item_map:type_name -> unittest.PatchMergeConf.ItemMapEntry + 47, // 13: unittest.PatchMergeConf.replace_item_map:type_name -> unittest.PatchMergeConf.ReplaceItemMapEntry + 48, // 14: unittest.RecursivePatchConf.shop_map:type_name -> unittest.RecursivePatchConf.ShopMapEntry + 10, // 15: unittest.JsonUtilTestData.normal_field:type_name -> unittest.PatchMergeConf + 10, // 16: unittest.JsonUtilTestData.list_field:type_name -> unittest.PatchMergeConf + 57, // 17: unittest.JsonUtilTestData.map_field:type_name -> unittest.JsonUtilTestData.MapFieldEntry + 58, // 18: unittest.UniqueFieldInVerticalStructList.item_list:type_name -> unittest.UniqueFieldInVerticalStructList.Item + 59, // 19: unittest.VerticalUniqueFieldStructMap.main_map:type_name -> unittest.VerticalUniqueFieldStructMap.MainMapEntry + 64, // 20: unittest.DocumentUniqueFieldStructList.item_list:type_name -> unittest.DocumentUniqueFieldStructList.Item + 65, // 21: unittest.DocumentUniqueFieldStructMap.chapter:type_name -> unittest.DocumentUniqueFieldStructMap.ChapterEntry + 67, // 22: unittest.DocumentUniqueFieldStructMap.scalar_map:type_name -> unittest.DocumentUniqueFieldStructMap.ScalarMapEntry + 68, // 23: unittest.DocumentUniqueFieldStructMap.incell_map:type_name -> unittest.DocumentUniqueFieldStructMap.IncellMapEntry + 69, // 24: unittest.DocumentUniqueFieldStructMap.chapter_info:type_name -> unittest.DocumentUniqueFieldStructMap.ChapterInfoEntry + 79, // 25: unittest.SequenceFieldInVerticalStructList.item_list:type_name -> unittest.SequenceFieldInVerticalStructList.Item + 80, // 26: unittest.SequenceKeyInVerticalKeyedList.item_list:type_name -> unittest.SequenceKeyInVerticalKeyedList.Item + 83, // 27: unittest.VerticalSequenceFieldStructMap.main_map:type_name -> unittest.VerticalSequenceFieldStructMap.MainMapEntry + 87, // 28: unittest.DocumentSequenceFieldStructList.item_list:type_name -> unittest.DocumentSequenceFieldStructList.Item + 88, // 29: unittest.Transpose.hero_map:type_name -> unittest.Transpose.HeroMapEntry + 90, // 30: unittest.FieldPresentMap.player_map:type_name -> unittest.FieldPresentMap.PlayerMapEntry + 26, // 31: unittest.IncellMap.FruitMapEntry.value:type_name -> unittest.IncellMap.Fruit + 97, // 32: unittest.IncellMap.Fruit.key:type_name -> unittest.FruitType + 96, // 33: unittest.IncellMap.FlavorMapEntry.value:type_name -> unittest.FruitFlavor + 29, // 34: unittest.IncellMap.ItemMapEntry.value:type_name -> unittest.IncellMap.Item + 97, // 35: unittest.IncellMap.Item.key:type_name -> unittest.FruitType + 96, // 36: unittest.IncellMap.Item.value:type_name -> unittest.FruitFlavor + 95, // 37: unittest.ItemConf.ItemMapEntry.value:type_name -> unittest.Item + 32, // 38: unittest.MallConf.ShopMapEntry.value:type_name -> unittest.MallConf.Shop + 33, // 39: unittest.MallConf.Shop.goods_map:type_name -> unittest.MallConf.Shop.GoodsMapEntry + 34, // 40: unittest.MallConf.Shop.GoodsMapEntry.value:type_name -> unittest.MallConf.Shop.Goods + 36, // 41: unittest.ActivityConf.ActivityMapEntry.value:type_name -> unittest.ActivityConf.Activity + 37, // 42: unittest.ActivityConf.Activity.chapter_map:type_name -> unittest.ActivityConf.Activity.ChapterMapEntry + 38, // 43: unittest.ActivityConf.Activity.ChapterMapEntry.value:type_name -> unittest.ActivityConf.Activity.Chapter + 39, // 44: unittest.ActivityConf.Activity.Chapter.section_list:type_name -> unittest.ActivityConf.Activity.Chapter.Section + 40, // 45: unittest.ActivityConf.Activity.Chapter.Section.reward_map:type_name -> unittest.ActivityConf.Activity.Chapter.Section.RewardMapEntry + 41, // 46: unittest.ActivityConf.Activity.Chapter.Section.RewardMapEntry.value:type_name -> unittest.ActivityConf.Activity.Chapter.Section.Reward + 43, // 47: unittest.RewardConf.RewardMapEntry.value:type_name -> unittest.RewardConf.Reward + 44, // 48: unittest.RewardConf.Reward.item_map:type_name -> unittest.RewardConf.Reward.ItemMapEntry + 95, // 49: unittest.RewardConf.Reward.ItemMapEntry.value:type_name -> unittest.Item + 98, // 50: unittest.PatchMergeConf.Time.start:type_name -> google.protobuf.Timestamp + 99, // 51: unittest.PatchMergeConf.Time.expiry:type_name -> google.protobuf.Duration + 95, // 52: unittest.PatchMergeConf.ItemMapEntry.value:type_name -> unittest.Item + 95, // 53: unittest.PatchMergeConf.ReplaceItemMapEntry.value:type_name -> unittest.Item + 49, // 54: unittest.RecursivePatchConf.ShopMapEntry.value:type_name -> unittest.RecursivePatchConf.Shop + 50, // 55: unittest.RecursivePatchConf.Shop.goods_map:type_name -> unittest.RecursivePatchConf.Shop.GoodsMapEntry + 51, // 56: unittest.RecursivePatchConf.Shop.GoodsMapEntry.value:type_name -> unittest.RecursivePatchConf.Shop.Goods + 52, // 57: unittest.RecursivePatchConf.Shop.Goods.currency_map:type_name -> unittest.RecursivePatchConf.Shop.Goods.CurrencyMapEntry + 54, // 58: unittest.RecursivePatchConf.Shop.Goods.award_list:type_name -> unittest.RecursivePatchConf.Shop.Goods.Award + 53, // 59: unittest.RecursivePatchConf.Shop.Goods.CurrencyMapEntry.value:type_name -> unittest.RecursivePatchConf.Shop.Goods.Currency + 55, // 60: unittest.RecursivePatchConf.Shop.Goods.Currency.value_list:type_name -> unittest.RecursivePatchConf.Shop.Goods.Currency.ValueListEntry + 56, // 61: unittest.RecursivePatchConf.Shop.Goods.Currency.message_list:type_name -> unittest.RecursivePatchConf.Shop.Goods.Currency.MessageListEntry + 10, // 62: unittest.JsonUtilTestData.MapFieldEntry.value:type_name -> unittest.PatchMergeConf + 60, // 63: unittest.VerticalUniqueFieldStructMap.MainMapEntry.value:type_name -> unittest.VerticalUniqueFieldStructMap.Main + 61, // 64: unittest.VerticalUniqueFieldStructMap.Main.main_kv_map:type_name -> unittest.VerticalUniqueFieldStructMap.Main.MainKvMapEntry + 62, // 65: unittest.VerticalUniqueFieldStructMap.Main.sub_map:type_name -> unittest.VerticalUniqueFieldStructMap.Main.SubMapEntry + 63, // 66: unittest.VerticalUniqueFieldStructMap.Main.SubMapEntry.value:type_name -> unittest.VerticalUniqueFieldStructMap.Main.Sub + 66, // 67: unittest.DocumentUniqueFieldStructMap.ChapterEntry.value:type_name -> unittest.DocumentUniqueFieldStructMap.Chapter + 71, // 68: unittest.DocumentUniqueFieldStructMap.Chapter.section:type_name -> unittest.DocumentUniqueFieldStructMap.Chapter.SectionEntry + 70, // 69: unittest.DocumentUniqueFieldStructMap.ChapterInfoEntry.value:type_name -> unittest.DocumentUniqueFieldStructMap.ChapterInfo + 73, // 70: unittest.DocumentUniqueFieldStructMap.ChapterInfo.section:type_name -> unittest.DocumentUniqueFieldStructMap.ChapterInfo.SectionEntry + 72, // 71: unittest.DocumentUniqueFieldStructMap.Chapter.SectionEntry.value:type_name -> unittest.DocumentUniqueFieldStructMap.Chapter.Section + 74, // 72: unittest.DocumentUniqueFieldStructMap.ChapterInfo.SectionEntry.value:type_name -> unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section + 75, // 73: unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.section:type_name -> unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.SectionEntry + 76, // 74: unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.SectionEntry.value:type_name -> unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.Section + 77, // 75: unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.Section.section:type_name -> unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.Section.SectionEntry + 78, // 76: unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.Section.SectionEntry.value:type_name -> unittest.DocumentUniqueFieldStructMap.ChapterInfo.Section.Section.Section + 81, // 77: unittest.SequenceKeyInVerticalKeyedList.Item.prop_map:type_name -> unittest.SequenceKeyInVerticalKeyedList.Item.PropMapEntry + 82, // 78: unittest.SequenceKeyInVerticalKeyedList.Item.PropMapEntry.value:type_name -> unittest.SequenceKeyInVerticalKeyedList.Item.Prop + 84, // 79: unittest.VerticalSequenceFieldStructMap.MainMapEntry.value:type_name -> unittest.VerticalSequenceFieldStructMap.Main + 85, // 80: unittest.VerticalSequenceFieldStructMap.Main.sub_map:type_name -> unittest.VerticalSequenceFieldStructMap.Main.SubMapEntry + 86, // 81: unittest.VerticalSequenceFieldStructMap.Main.SubMapEntry.value:type_name -> unittest.VerticalSequenceFieldStructMap.Main.Sub + 89, // 82: unittest.Transpose.HeroMapEntry.value:type_name -> unittest.Transpose.Hero + 91, // 83: unittest.FieldPresentMap.PlayerMapEntry.value:type_name -> unittest.FieldPresentMap.Player + 92, // 84: unittest.FieldPresentMap.Player.weapon:type_name -> unittest.FieldPresentMap.Player.Weapon + 93, // 85: unittest.FieldPresentMap.Player.info:type_name -> unittest.FieldPresentMap.Player.Info + 94, // 86: unittest.FieldPresentMap.Player.attr_map:type_name -> unittest.FieldPresentMap.Player.AttrMapEntry + 100, // 87: unittest.FieldPresentMap.Player.target:type_name -> unittest.Target + 88, // [88:88] is the sub-list for method output_type + 88, // [88:88] is the sub-list for method input_type + 88, // [88:88] is the sub-list for extension type_name + 88, // [88:88] is the sub-list for extension extendee + 0, // [0:88] is the sub-list for field type_name } func init() { file_tableau_protobuf_unittest_unittest_proto_init() } @@ -4680,6 +4752,18 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { } } file_tableau_protobuf_unittest_unittest_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValidatedConf); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_tableau_protobuf_unittest_unittest_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FieldPresentMap); i { case 0: return &v.state @@ -4691,7 +4775,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IncellMap_Fruit); i { case 0: return &v.state @@ -4703,7 +4787,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IncellMap_Item); i { case 0: return &v.state @@ -4715,7 +4799,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MallConf_Shop); i { case 0: return &v.state @@ -4727,7 +4811,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MallConf_Shop_Goods); i { case 0: return &v.state @@ -4739,7 +4823,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ActivityConf_Activity); i { case 0: return &v.state @@ -4751,7 +4835,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ActivityConf_Activity_Chapter); i { case 0: return &v.state @@ -4763,7 +4847,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ActivityConf_Activity_Chapter_Section); i { case 0: return &v.state @@ -4775,7 +4859,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ActivityConf_Activity_Chapter_Section_Reward); i { case 0: return &v.state @@ -4787,7 +4871,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RewardConf_Reward); i { case 0: return &v.state @@ -4799,7 +4883,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PatchMergeConf_Time); i { case 0: return &v.state @@ -4811,7 +4895,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RecursivePatchConf_Shop); i { case 0: return &v.state @@ -4823,7 +4907,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RecursivePatchConf_Shop_Goods); i { case 0: return &v.state @@ -4835,7 +4919,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RecursivePatchConf_Shop_Goods_Currency); i { case 0: return &v.state @@ -4847,7 +4931,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RecursivePatchConf_Shop_Goods_Award); i { case 0: return &v.state @@ -4859,7 +4943,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UniqueFieldInVerticalStructList_Item); i { case 0: return &v.state @@ -4871,7 +4955,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VerticalUniqueFieldStructMap_Main); i { case 0: return &v.state @@ -4883,7 +4967,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VerticalUniqueFieldStructMap_Main_Sub); i { case 0: return &v.state @@ -4895,7 +4979,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DocumentUniqueFieldStructList_Item); i { case 0: return &v.state @@ -4907,7 +4991,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DocumentUniqueFieldStructMap_Chapter); i { case 0: return &v.state @@ -4919,7 +5003,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DocumentUniqueFieldStructMap_ChapterInfo); i { case 0: return &v.state @@ -4931,7 +5015,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DocumentUniqueFieldStructMap_Chapter_Section); i { case 0: return &v.state @@ -4943,7 +5027,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DocumentUniqueFieldStructMap_ChapterInfo_Section); i { case 0: return &v.state @@ -4955,7 +5039,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DocumentUniqueFieldStructMap_ChapterInfo_Section_Section); i { case 0: return &v.state @@ -4967,7 +5051,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DocumentUniqueFieldStructMap_ChapterInfo_Section_Section_Section); i { case 0: return &v.state @@ -4979,7 +5063,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SequenceFieldInVerticalStructList_Item); i { case 0: return &v.state @@ -4991,7 +5075,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SequenceKeyInVerticalKeyedList_Item); i { case 0: return &v.state @@ -5003,7 +5087,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SequenceKeyInVerticalKeyedList_Item_Prop); i { case 0: return &v.state @@ -5015,7 +5099,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VerticalSequenceFieldStructMap_Main); i { case 0: return &v.state @@ -5027,7 +5111,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VerticalSequenceFieldStructMap_Main_Sub); i { case 0: return &v.state @@ -5039,7 +5123,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DocumentSequenceFieldStructList_Item); i { case 0: return &v.state @@ -5051,7 +5135,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Transpose_Hero); i { case 0: return &v.state @@ -5063,7 +5147,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FieldPresentMap_Player); i { case 0: return &v.state @@ -5075,7 +5159,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FieldPresentMap_Player_Weapon); i { case 0: return &v.state @@ -5087,7 +5171,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { return nil } } - file_tableau_protobuf_unittest_unittest_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + file_tableau_protobuf_unittest_unittest_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FieldPresentMap_Player_Info); i { case 0: return &v.state @@ -5107,7 +5191,7 @@ func file_tableau_protobuf_unittest_unittest_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_tableau_protobuf_unittest_unittest_proto_rawDesc, NumEnums: 0, - NumMessages: 94, + NumMessages: 95, NumExtensions: 0, NumServices: 0, }, diff --git a/scripts/gen_pb.sh b/scripts/gen_pb.sh index bf65d008..e3537fc2 100755 --- a/scripts/gen_pb.sh +++ b/scripts/gen_pb.sh @@ -13,8 +13,18 @@ TABLEAU_OUTDIR="./proto/tableaupb" # remove generated files rm -rfv $TABLEAU_OUTDIR/*.pb.go $TABLEAU_OUTDIR/**/*.pb.go +# Download buf/validate proto files from GitHub +BUF_VALIDATE_PROTO_DIR=$(mktemp -d) +BUF_VALIDATE_VERSION="v1.1.0" +mkdir -p "$BUF_VALIDATE_PROTO_DIR/buf/validate" +curl -sSfL "https://raw.githubusercontent.com/bufbuild/protovalidate/${BUF_VALIDATE_VERSION}/proto/protovalidate/buf/validate/validate.proto" \ + -o "$BUF_VALIDATE_PROTO_DIR/buf/validate/validate.proto" + protoc \ --go_out="$TABLEAU_OUTDIR" \ --go_opt=module="github.com/tableauio/tableau/proto/tableaupb" \ --proto_path="$PROTO_PATH" \ + --proto_path="$BUF_VALIDATE_PROTO_DIR" \ "$TABLEAU_INDIR"/*.proto "$TABLEAU_INDIR"/**/*.proto + +rm -rf "$BUF_VALIDATE_PROTO_DIR" diff --git a/test/functest/conf/default/ValidateFieldLevel.json b/test/functest/conf/default/ValidateFieldLevel.json new file mode 100644 index 00000000..a21d0854 --- /dev/null +++ b/test/functest/conf/default/ValidateFieldLevel.json @@ -0,0 +1,14 @@ +{ + "itemMap": { + "1": { + "id": 1, + "name": "sword", + "score": 80 + }, + "2": { + "id": 2, + "name": "shield", + "score": 95 + } + } +} \ No newline at end of file diff --git a/test/functest/conf/default/ValidateMessageLevel.json b/test/functest/conf/default/ValidateMessageLevel.json new file mode 100644 index 00000000..a20c6465 --- /dev/null +++ b/test/functest/conf/default/ValidateMessageLevel.json @@ -0,0 +1,22 @@ +{ + "itemMap": { + "1": { + "id": 1, + "name": "potion", + "value": 10, + "timespan": { + "startTime": "2025-01-01T00:00:00+08:00", + "endTime": "2025-06-30T23:59:59+08:00" + } + }, + "2": { + "id": 2, + "name": "elixir", + "value": 20, + "timespan": { + "startTime": "2025-03-01T00:00:00+08:00", + "endTime": "2025-12-31T23:59:59+08:00" + } + } + } +} \ No newline at end of file diff --git a/test/functest/conf/default/ValidateWorksheetLevel.json b/test/functest/conf/default/ValidateWorksheetLevel.json new file mode 100644 index 00000000..6a8e41ab --- /dev/null +++ b/test/functest/conf/default/ValidateWorksheetLevel.json @@ -0,0 +1,12 @@ +{ + "itemMap": { + "1": { + "id": 1, + "name": "apple" + }, + "2": { + "id": 2, + "name": "banana" + } + } +} \ No newline at end of file diff --git a/test/functest/proto/default/excel__fieldprop__validate.proto b/test/functest/proto/default/excel__fieldprop__validate.proto new file mode 100644 index 00000000..e8a5993a --- /dev/null +++ b/test/functest/proto/default/excel__fieldprop__validate.proto @@ -0,0 +1,53 @@ +// Code generated by tableau (protogen v0.9.0). DO NOT EDIT. +// clang-format off + +syntax = "proto3"; + +package protoconf; + +import "buf/validate/validate.proto"; +import "google/protobuf/timestamp.proto"; +import "tableau/protobuf/tableau.proto"; + +option go_package = "github.com/tableauio/tableau/test/functest/protoconf"; +option (tableau.workbook) = {name:"excel/fieldprop/Validate#*.csv" namerow:1 typerow:2 noterow:3 datarow:4 sep:"," subsep:":"}; + +message ValidateFieldLevel { + option (tableau.worksheet) = {name:"ValidateFieldLevel"}; + + map item_map = 1 [(tableau.field) = {key:"ID" layout:LAYOUT_VERTICAL}]; + message Item { + uint32 id = 1 [(tableau.field) = {name:"ID" prop:{refer:"ItemConf.ID"}}]; // Item ID + string name = 2 [(tableau.field) = {name:"Name"}, (buf.validate.field) = {string:{min_len:1 max_len:20}}]; // Item Name + int32 score = 3 [(tableau.field) = {name:"Score"}, (buf.validate.field) = {int32:{lte:100 gt:0}}]; // Item Score + } +} + +message ValidateMessageLevel { + option (tableau.worksheet) = {name:"ValidateMessageLevel"}; + + map item_map = 1 [(tableau.field) = {key:"ID" layout:LAYOUT_VERTICAL}]; + message Item { + option (buf.validate.message) = {cel:{id:"item.name_value" message:"name is required when value > 0" expression:"this.value <= 0 || this.name != ''"}}; + uint32 id = 1 [(tableau.field) = {name:"ID"}]; // Item ID + string name = 2 [(tableau.field) = {name:"Name"}]; // Item Name + int32 value = 3 [(tableau.field) = {name:"Value"}]; // Item Value + Timespan timespan = 4 [(tableau.field) = {name:"Timespan"}]; + message Timespan { + option (buf.validate.message) = {cel_expression:"this.start_time < this.end_time"}; + google.protobuf.Timestamp start_time = 1 [(tableau.field) = {name:"StartTime"}]; // Start Time + google.protobuf.Timestamp end_time = 2 [(tableau.field) = {name:"EndTime"}]; // End Time + } + } +} + +message ValidateWorksheetLevel { + option (tableau.worksheet) = {name:"ValidateWorksheetLevel"}; + option (buf.validate.message) = {cel:{id:"validate_worksheet.item_map_not_empty" message:"item_map must not be empty" expression:"this.item_map.size() > 0"}}; + + map item_map = 1 [(tableau.field) = {key:"ID" layout:LAYOUT_VERTICAL}]; + message Item { + uint32 id = 1 [(tableau.field) = {name:"ID"}]; // Item ID + string name = 2 [(tableau.field) = {name:"Name"}]; // Item Name + } +} diff --git a/test/functest/testdata/default/excel/fieldprop/Validate#@TABLEAU.csv b/test/functest/testdata/default/excel/fieldprop/Validate#@TABLEAU.csv new file mode 100644 index 00000000..22f47b13 --- /dev/null +++ b/test/functest/testdata/default/excel/fieldprop/Validate#@TABLEAU.csv @@ -0,0 +1,4 @@ +Sheet,Validate +ValidateFieldLevel, +ValidateMessageLevel, +ValidateWorksheetLevel,"cel:{id:""validate_worksheet.item_map_not_empty"" message:""item_map must not be empty"" expression:""this.item_map.size() > 0""}" diff --git a/test/functest/testdata/default/excel/fieldprop/Validate#ValidateFieldLevel.csv b/test/functest/testdata/default/excel/fieldprop/Validate#ValidateFieldLevel.csv new file mode 100644 index 00000000..30475105 --- /dev/null +++ b/test/functest/testdata/default/excel/fieldprop/Validate#ValidateFieldLevel.csv @@ -0,0 +1,5 @@ +ID,Name,Score +"map|{refer:""ItemConf.ID""}","string|{field_validate:""string:{min_len:1 max_len:20}""}","int32|{field_validate:""int32:{gt:0 lte:100}""}" +Item ID,Item Name,Item Score +1,sword,80 +2,shield,95 diff --git a/test/functest/testdata/default/excel/fieldprop/Validate#ValidateMessageLevel.csv b/test/functest/testdata/default/excel/fieldprop/Validate#ValidateMessageLevel.csv new file mode 100644 index 00000000..e0773741 --- /dev/null +++ b/test/functest/testdata/default/excel/fieldprop/Validate#ValidateMessageLevel.csv @@ -0,0 +1,5 @@ +ID,Name,Value,TimespanStartTime,TimespanEndTime +"map|{message_validate:""cel:{id:\""item.name_value\"" message:\""name is required when value > 0\"" expression:\""this.value <= 0 || this.name != ''\""}""}"," string"," int32","{Timespan}datetime|{message_validate:""cel_expression:\""this.start_time < this.end_time\""""}"," datetime" +Item ID,Item Name,Item Value,Start Time,End Time +1,potion,10,2025-01-01 00:00:00,2025-06-30 23:59:59 +2,elixir,20,2025-03-01 00:00:00,2025-12-31 23:59:59 diff --git a/test/functest/testdata/default/excel/fieldprop/Validate#ValidateWorksheetLevel.csv b/test/functest/testdata/default/excel/fieldprop/Validate#ValidateWorksheetLevel.csv new file mode 100644 index 00000000..437677a4 --- /dev/null +++ b/test/functest/testdata/default/excel/fieldprop/Validate#ValidateWorksheetLevel.csv @@ -0,0 +1,5 @@ +ID,Name +"map",string +Item ID,Item Name +1,apple +2,banana